about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/future/moves
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/future/moves')
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/__init__.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/_dummy_thread.py13
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/_markupbase.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/_thread.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/builtins.py10
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/collections.py18
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/configparser.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/copyreg.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/dbm/__init__.py20
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/dbm/dumb.py9
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/dbm/gnu.py9
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/dbm/ndbm.py9
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/html/__init__.py31
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/html/entities.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/html/parser.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/http/__init__.py4
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/http/client.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/http/cookiejar.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/http/cookies.py9
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/http/server.py20
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/itertools.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/multiprocessing.py7
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/pickle.py11
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/queue.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/reprlib.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/socketserver.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/subprocess.py11
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/sys.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/test/__init__.py5
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/test/support.py19
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/__init__.py27
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/colorchooser.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/commondialog.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/constants.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/dialog.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/dnd.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/filedialog.py18
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/font.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/messagebox.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/scrolledtext.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/simpledialog.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/tix.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/tkinter/ttk.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/__init__.py5
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/error.py16
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/parse.py28
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/request.py94
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/response.py12
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/urllib/robotparser.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/winreg.py8
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/xmlrpc/__init__.py0
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/xmlrpc/client.py7
-rw-r--r--.venv/lib/python3.12/site-packages/future/moves/xmlrpc/server.py7
53 files changed, 683 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/future/moves/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/__init__.py
new file mode 100644
index 00000000..0cd60d3d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/__init__.py
@@ -0,0 +1,8 @@
+# future.moves package
+from __future__ import absolute_import
+import sys
+__future_module__ = True
+from future.standard_library import import_top_level_modules
+
+if sys.version_info[0] >= 3:
+    import_top_level_modules()
diff --git a/.venv/lib/python3.12/site-packages/future/moves/_dummy_thread.py b/.venv/lib/python3.12/site-packages/future/moves/_dummy_thread.py
new file mode 100644
index 00000000..6633f42e
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/_dummy_thread.py
@@ -0,0 +1,13 @@
+from __future__ import absolute_import
+from future.utils import PY3, PY39_PLUS
+
+
+if PY39_PLUS:
+    # _dummy_thread and dummy_threading modules were both deprecated in
+    # Python 3.7 and removed in Python 3.9
+    from _thread import *
+elif PY3:
+        from _dummy_thread import *
+else:
+    __future_module__ = True
+    from dummy_thread import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/_markupbase.py b/.venv/lib/python3.12/site-packages/future/moves/_markupbase.py
new file mode 100644
index 00000000..f9fb4bbf
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/_markupbase.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from _markupbase import *
+else:
+    __future_module__ = True
+    from markupbase import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/_thread.py b/.venv/lib/python3.12/site-packages/future/moves/_thread.py
new file mode 100644
index 00000000..c68018bb
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/_thread.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from _thread import *
+else:
+    __future_module__ = True
+    from thread import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/builtins.py b/.venv/lib/python3.12/site-packages/future/moves/builtins.py
new file mode 100644
index 00000000..e4b6221d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/builtins.py
@@ -0,0 +1,10 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from builtins import *
+else:
+    __future_module__ = True
+    from __builtin__ import *
+    # Overwrite any old definitions with the equivalent future.builtins ones:
+    from future.builtins import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/collections.py b/.venv/lib/python3.12/site-packages/future/moves/collections.py
new file mode 100644
index 00000000..664ee6a3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/collections.py
@@ -0,0 +1,18 @@
+from __future__ import absolute_import
+import sys
+
+from future.utils import PY2, PY26
+__future_module__ = True
+
+from collections import *
+
+if PY2:
+    from UserDict import UserDict
+    from UserList import UserList
+    from UserString import UserString
+
+if PY26:
+    from future.backports.misc import OrderedDict, Counter
+
+if sys.version_info < (3, 3):
+    from future.backports.misc import ChainMap, _count_elements
diff --git a/.venv/lib/python3.12/site-packages/future/moves/configparser.py b/.venv/lib/python3.12/site-packages/future/moves/configparser.py
new file mode 100644
index 00000000..33d9cf95
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/configparser.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+
+from future.utils import PY2
+
+if PY2:
+    from ConfigParser import *
+else:
+    from configparser import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/copyreg.py b/.venv/lib/python3.12/site-packages/future/moves/copyreg.py
new file mode 100644
index 00000000..9d08cdc5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/copyreg.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    import copyreg, sys
+    # A "*" import uses Python 3's copyreg.__all__ which does not include
+    # all public names in the API surface for copyreg, this avoids that
+    # problem by just making our module _be_ a reference to the actual module.
+    sys.modules['future.moves.copyreg'] = copyreg
+else:
+    __future_module__ = True
+    from copy_reg import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/dbm/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/dbm/__init__.py
new file mode 100644
index 00000000..626b406f
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/dbm/__init__.py
@@ -0,0 +1,20 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from dbm import *
+else:
+    __future_module__ = True
+    from whichdb import *
+    from anydbm import *
+
+# Py3.3's dbm/__init__.py imports ndbm but doesn't expose it via __all__.
+# In case some (badly written) code depends on dbm.ndbm after import dbm,
+# we simulate this:
+if PY3:
+    from dbm import ndbm
+else:
+    try:
+        from future.moves.dbm import ndbm
+    except ImportError:
+        ndbm = None
diff --git a/.venv/lib/python3.12/site-packages/future/moves/dbm/dumb.py b/.venv/lib/python3.12/site-packages/future/moves/dbm/dumb.py
new file mode 100644
index 00000000..528383f6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/dbm/dumb.py
@@ -0,0 +1,9 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from dbm.dumb import *
+else:
+    __future_module__ = True
+    from dumbdbm import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/dbm/gnu.py b/.venv/lib/python3.12/site-packages/future/moves/dbm/gnu.py
new file mode 100644
index 00000000..68ccf67b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/dbm/gnu.py
@@ -0,0 +1,9 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from dbm.gnu import *
+else:
+    __future_module__ = True
+    from gdbm import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/dbm/ndbm.py b/.venv/lib/python3.12/site-packages/future/moves/dbm/ndbm.py
new file mode 100644
index 00000000..8c6fff8a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/dbm/ndbm.py
@@ -0,0 +1,9 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from dbm.ndbm import *
+else:
+    __future_module__ = True
+    from dbm import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/html/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/html/__init__.py
new file mode 100644
index 00000000..22ed6e7d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/html/__init__.py
@@ -0,0 +1,31 @@
+from __future__ import absolute_import
+from future.utils import PY3
+__future_module__ = True
+
+if PY3:
+    from html import *
+else:
+    # cgi.escape isn't good enough for the single Py3.3 html test to pass.
+    # Define it inline here instead. From the Py3.4 stdlib. Note that the
+    # html.escape() function from the Py3.3 stdlib is not suitable for use on
+    # Py2.x.
+    """
+    General functions for HTML manipulation.
+    """
+
+    def escape(s, quote=True):
+        """
+        Replace special characters "&", "<" and ">" to HTML-safe sequences.
+        If the optional flag quote is true (the default), the quotation mark
+        characters, both double quote (") and single quote (') characters are also
+        translated.
+        """
+        s = s.replace("&", "&amp;") # Must be done first!
+        s = s.replace("<", "&lt;")
+        s = s.replace(">", "&gt;")
+        if quote:
+            s = s.replace('"', "&quot;")
+            s = s.replace('\'', "&#x27;")
+        return s
+
+    __all__ = ['escape']
diff --git a/.venv/lib/python3.12/site-packages/future/moves/html/entities.py b/.venv/lib/python3.12/site-packages/future/moves/html/entities.py
new file mode 100644
index 00000000..56a88609
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/html/entities.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from html.entities import *
+else:
+    __future_module__ = True
+    from htmlentitydefs import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/html/parser.py b/.venv/lib/python3.12/site-packages/future/moves/html/parser.py
new file mode 100644
index 00000000..a6115b59
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/html/parser.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+__future_module__ = True
+
+if PY3:
+    from html.parser import *
+else:
+    from HTMLParser import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/http/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/http/__init__.py
new file mode 100644
index 00000000..917b3d71
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/http/__init__.py
@@ -0,0 +1,4 @@
+from future.utils import PY3
+
+if not PY3:
+    __future_module__ = True
diff --git a/.venv/lib/python3.12/site-packages/future/moves/http/client.py b/.venv/lib/python3.12/site-packages/future/moves/http/client.py
new file mode 100644
index 00000000..55f9c9c1
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/http/client.py
@@ -0,0 +1,8 @@
+from future.utils import PY3
+
+if PY3:
+    from http.client import *
+else:
+    from httplib import *
+    from httplib import HTTPMessage
+    __future_module__ = True
diff --git a/.venv/lib/python3.12/site-packages/future/moves/http/cookiejar.py b/.venv/lib/python3.12/site-packages/future/moves/http/cookiejar.py
new file mode 100644
index 00000000..ea00df77
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/http/cookiejar.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from http.cookiejar import *
+else:
+    __future_module__ = True
+    from cookielib import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/http/cookies.py b/.venv/lib/python3.12/site-packages/future/moves/http/cookies.py
new file mode 100644
index 00000000..1b74fe2d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/http/cookies.py
@@ -0,0 +1,9 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from http.cookies import *
+else:
+    __future_module__ = True
+    from Cookie import *
+    from Cookie import Morsel    # left out of __all__ on Py2.7!
diff --git a/.venv/lib/python3.12/site-packages/future/moves/http/server.py b/.venv/lib/python3.12/site-packages/future/moves/http/server.py
new file mode 100644
index 00000000..4e75cc1d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/http/server.py
@@ -0,0 +1,20 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from http.server import *
+else:
+    __future_module__ = True
+    from BaseHTTPServer import *
+    from CGIHTTPServer import *
+    from SimpleHTTPServer import *
+    try:
+        from CGIHTTPServer import _url_collapse_path     # needed for a test
+    except ImportError:
+        try:
+            # Python 2.7.0 to 2.7.3
+            from CGIHTTPServer import (
+                _url_collapse_path_split as _url_collapse_path)
+        except ImportError:
+            # Doesn't exist on Python 2.6.x. Ignore it.
+            pass
diff --git a/.venv/lib/python3.12/site-packages/future/moves/itertools.py b/.venv/lib/python3.12/site-packages/future/moves/itertools.py
new file mode 100644
index 00000000..e5eb20d5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/itertools.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+
+from itertools import *
+try:
+    zip_longest = izip_longest
+    filterfalse = ifilterfalse
+except NameError:
+    pass
diff --git a/.venv/lib/python3.12/site-packages/future/moves/multiprocessing.py b/.venv/lib/python3.12/site-packages/future/moves/multiprocessing.py
new file mode 100644
index 00000000..a871b676
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/multiprocessing.py
@@ -0,0 +1,7 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+from multiprocessing import *
+if not PY3:
+    __future_module__ = True
+    from multiprocessing.queues import SimpleQueue
diff --git a/.venv/lib/python3.12/site-packages/future/moves/pickle.py b/.venv/lib/python3.12/site-packages/future/moves/pickle.py
new file mode 100644
index 00000000..c53d6939
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/pickle.py
@@ -0,0 +1,11 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from pickle import *
+else:
+    __future_module__ = True
+    try:
+        from cPickle import *
+    except ImportError:
+        from pickle import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/queue.py b/.venv/lib/python3.12/site-packages/future/moves/queue.py
new file mode 100644
index 00000000..1cb1437d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/queue.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from queue import *
+else:
+    __future_module__ = True
+    from Queue import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/reprlib.py b/.venv/lib/python3.12/site-packages/future/moves/reprlib.py
new file mode 100644
index 00000000..a313a13a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/reprlib.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from reprlib import *
+else:
+    __future_module__ = True
+    from repr import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/socketserver.py b/.venv/lib/python3.12/site-packages/future/moves/socketserver.py
new file mode 100644
index 00000000..062e0848
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/socketserver.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from socketserver import *
+else:
+    __future_module__ = True
+    from SocketServer import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/subprocess.py b/.venv/lib/python3.12/site-packages/future/moves/subprocess.py
new file mode 100644
index 00000000..43ffd2ac
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/subprocess.py
@@ -0,0 +1,11 @@
+from __future__ import absolute_import
+from future.utils import PY2, PY26
+
+from subprocess import *
+
+if PY2:
+    __future_module__ = True
+    from commands import getoutput, getstatusoutput
+
+if PY26:
+    from future.backports.misc import check_output
diff --git a/.venv/lib/python3.12/site-packages/future/moves/sys.py b/.venv/lib/python3.12/site-packages/future/moves/sys.py
new file mode 100644
index 00000000..1293bcb0
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/sys.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+
+from future.utils import PY2
+
+from sys import *
+
+if PY2:
+    from __builtin__ import intern
diff --git a/.venv/lib/python3.12/site-packages/future/moves/test/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/test/__init__.py
new file mode 100644
index 00000000..5cf428b6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/test/__init__.py
@@ -0,0 +1,5 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if not PY3:
+    __future_module__ = True
diff --git a/.venv/lib/python3.12/site-packages/future/moves/test/support.py b/.venv/lib/python3.12/site-packages/future/moves/test/support.py
new file mode 100644
index 00000000..f70c9d7d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/test/support.py
@@ -0,0 +1,19 @@
+from __future__ import absolute_import
+
+import sys
+
+from future.standard_library import suspend_hooks
+from future.utils import PY3
+
+if PY3:
+    from test.support import *
+    if sys.version_info[:2] >= (3, 10):
+        from test.support.os_helper import (
+            EnvironmentVarGuard,
+            TESTFN,
+        )
+        from test.support.warnings_helper import check_warnings
+else:
+    __future_module__ = True
+    with suspend_hooks():
+        from test.test_support import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/__init__.py
new file mode 100644
index 00000000..e4082966
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/__init__.py
@@ -0,0 +1,27 @@
+from __future__ import absolute_import
+from future.utils import PY3
+__future_module__ = True
+
+if not PY3:
+    from Tkinter import *
+    from Tkinter import (_cnfmerge, _default_root, _flatten,
+                          _support_default_root, _test,
+                         _tkinter, _setit)
+
+    try: # >= 2.7.4
+        from Tkinter import (_join) 
+    except ImportError: 
+        pass
+
+    try: # >= 2.7.4
+        from Tkinter import (_stringify)
+    except ImportError: 
+        pass
+
+    try: # >= 2.7.9
+        from Tkinter import (_splitdict)
+    except ImportError:
+        pass
+
+else:
+    from tkinter import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/colorchooser.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/colorchooser.py
new file mode 100644
index 00000000..6dde6e8d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/colorchooser.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.colorchooser import *
+else:
+    try:
+        from tkColorChooser import *
+    except ImportError:
+        raise ImportError('The tkColorChooser module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/commondialog.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/commondialog.py
new file mode 100644
index 00000000..eb7ae8d6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/commondialog.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.commondialog import *
+else:
+    try:
+        from tkCommonDialog import *
+    except ImportError:
+        raise ImportError('The tkCommonDialog module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/constants.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/constants.py
new file mode 100644
index 00000000..ffe09815
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/constants.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.constants import *
+else:
+    try:
+        from Tkconstants import *
+    except ImportError:
+        raise ImportError('The Tkconstants module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/dialog.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/dialog.py
new file mode 100644
index 00000000..113370ca
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/dialog.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.dialog import *
+else:
+    try:
+        from Dialog import *
+    except ImportError:
+        raise ImportError('The Dialog module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/dnd.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/dnd.py
new file mode 100644
index 00000000..1ab43791
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/dnd.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.dnd import *
+else:
+    try:
+        from Tkdnd import *
+    except ImportError:
+        raise ImportError('The Tkdnd module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/filedialog.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/filedialog.py
new file mode 100644
index 00000000..6a6f03ca
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/filedialog.py
@@ -0,0 +1,18 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.filedialog import *
+else:
+    try:
+        from FileDialog import *
+    except ImportError:
+        raise ImportError('The FileDialog module is missing. Does your Py2 '
+                          'installation include tkinter?')
+    
+    try:
+        from tkFileDialog import *
+    except ImportError:
+        raise ImportError('The tkFileDialog module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/font.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/font.py
new file mode 100644
index 00000000..628f399a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/font.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.font import *
+else:
+    try:
+        from tkFont import *
+    except ImportError:
+        raise ImportError('The tkFont module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/messagebox.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/messagebox.py
new file mode 100644
index 00000000..b43d8702
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/messagebox.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.messagebox import *
+else:
+    try:
+        from tkMessageBox import *
+    except ImportError:
+        raise ImportError('The tkMessageBox module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/scrolledtext.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/scrolledtext.py
new file mode 100644
index 00000000..1c69db60
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/scrolledtext.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.scrolledtext import *
+else:
+    try:
+        from ScrolledText import *
+    except ImportError:
+        raise ImportError('The ScrolledText module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/simpledialog.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/simpledialog.py
new file mode 100644
index 00000000..dba93fbf
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/simpledialog.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.simpledialog import *
+else:
+    try:
+        from SimpleDialog import *
+    except ImportError:
+        raise ImportError('The SimpleDialog module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/tix.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/tix.py
new file mode 100644
index 00000000..8d1718ad
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/tix.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.tix import *
+else:
+    try:
+        from Tix import *
+    except ImportError:
+        raise ImportError('The Tix module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/tkinter/ttk.py b/.venv/lib/python3.12/site-packages/future/moves/tkinter/ttk.py
new file mode 100644
index 00000000..081c1b49
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/tkinter/ttk.py
@@ -0,0 +1,12 @@
+from __future__ import absolute_import
+
+from future.utils import PY3
+
+if PY3:
+    from tkinter.ttk import *
+else:
+    try:
+        from ttk import *
+    except ImportError:
+        raise ImportError('The ttk module is missing. Does your Py2 '
+                          'installation include tkinter?')
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/__init__.py
new file mode 100644
index 00000000..5cf428b6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/__init__.py
@@ -0,0 +1,5 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if not PY3:
+    __future_module__ = True
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/error.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/error.py
new file mode 100644
index 00000000..7d8ada73
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/error.py
@@ -0,0 +1,16 @@
+from __future__ import absolute_import
+from future.standard_library import suspend_hooks
+
+from future.utils import PY3
+
+if PY3:
+    from urllib.error import *
+else:
+    __future_module__ = True
+
+    # We use this method to get at the original Py2 urllib before any renaming magic
+    # ContentTooShortError = sys.py2_modules['urllib'].ContentTooShortError
+
+    with suspend_hooks():
+        from urllib import ContentTooShortError
+        from urllib2 import URLError, HTTPError
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/parse.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/parse.py
new file mode 100644
index 00000000..9074b816
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/parse.py
@@ -0,0 +1,28 @@
+from __future__ import absolute_import
+from future.standard_library import suspend_hooks
+
+from future.utils import PY3
+
+if PY3:
+    from urllib.parse import *
+else:
+    __future_module__ = True
+    from urlparse import (ParseResult, SplitResult, parse_qs, parse_qsl,
+                          urldefrag, urljoin, urlparse, urlsplit,
+                          urlunparse, urlunsplit)
+
+    # we use this method to get at the original py2 urllib before any renaming
+    # quote = sys.py2_modules['urllib'].quote
+    # quote_plus = sys.py2_modules['urllib'].quote_plus
+    # unquote = sys.py2_modules['urllib'].unquote
+    # unquote_plus = sys.py2_modules['urllib'].unquote_plus
+    # urlencode = sys.py2_modules['urllib'].urlencode
+    # splitquery = sys.py2_modules['urllib'].splitquery
+
+    with suspend_hooks():
+        from urllib import (quote,
+                            quote_plus,
+                            unquote,
+                            unquote_plus,
+                            urlencode,
+                            splitquery)
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/request.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/request.py
new file mode 100644
index 00000000..972aa4ab
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/request.py
@@ -0,0 +1,94 @@
+from __future__ import absolute_import
+
+from future.standard_library import suspend_hooks
+from future.utils import PY3
+
+if PY3:
+    from urllib.request import *
+    # This aren't in __all__:
+    from urllib.request import (getproxies,
+                                pathname2url,
+                                proxy_bypass,
+                                quote,
+                                request_host,
+                                thishost,
+                                unquote,
+                                url2pathname,
+                                urlcleanup,
+                                urljoin,
+                                urlopen,
+                                urlparse,
+                                urlretrieve,
+                                urlsplit,
+                                urlunparse)
+
+    from urllib.parse import (splitattr,
+                              splithost,
+                              splitpasswd,
+                              splitport,
+                              splitquery,
+                              splittag,
+                              splittype,
+                              splituser,
+                              splitvalue,
+                              to_bytes,
+                              unwrap)
+else:
+    __future_module__ = True
+    with suspend_hooks():
+        from urllib import *
+        from urllib2 import *
+        from urlparse import *
+
+        # Rename:
+        from urllib import toBytes    # missing from __all__ on Py2.6
+        to_bytes = toBytes
+
+        # from urllib import (pathname2url,
+        #                     url2pathname,
+        #                     getproxies,
+        #                     urlretrieve,
+        #                     urlcleanup,
+        #                     URLopener,
+        #                     FancyURLopener,
+        #                     proxy_bypass)
+
+        # from urllib2 import (
+        #                  AbstractBasicAuthHandler,
+        #                  AbstractDigestAuthHandler,
+        #                  BaseHandler,
+        #                  CacheFTPHandler,
+        #                  FileHandler,
+        #                  FTPHandler,
+        #                  HTTPBasicAuthHandler,
+        #                  HTTPCookieProcessor,
+        #                  HTTPDefaultErrorHandler,
+        #                  HTTPDigestAuthHandler,
+        #                  HTTPErrorProcessor,
+        #                  HTTPHandler,
+        #                  HTTPPasswordMgr,
+        #                  HTTPPasswordMgrWithDefaultRealm,
+        #                  HTTPRedirectHandler,
+        #                  HTTPSHandler,
+        #                  URLError,
+        #                  build_opener,
+        #                  install_opener,
+        #                  OpenerDirector,
+        #                  ProxyBasicAuthHandler,
+        #                  ProxyDigestAuthHandler,
+        #                  ProxyHandler,
+        #                  Request,
+        #                  UnknownHandler,
+        #                  urlopen,
+        #                 )
+
+        # from urlparse import (
+        #                  urldefrag
+        #                  urljoin,
+        #                  urlparse,
+        #                  urlunparse,
+        #                  urlsplit,
+        #                  urlunsplit,
+        #                  parse_qs,
+        #                  parse_q"
+        #                 )
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/response.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/response.py
new file mode 100644
index 00000000..a287ae28
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/response.py
@@ -0,0 +1,12 @@
+from future import standard_library
+from future.utils import PY3
+
+if PY3:
+    from urllib.response import *
+else:
+    __future_module__ = True
+    with standard_library.suspend_hooks():
+        from urllib import (addbase,
+                            addclosehook,
+                            addinfo,
+                            addinfourl)
diff --git a/.venv/lib/python3.12/site-packages/future/moves/urllib/robotparser.py b/.venv/lib/python3.12/site-packages/future/moves/urllib/robotparser.py
new file mode 100644
index 00000000..0dc8f571
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/urllib/robotparser.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from urllib.robotparser import *
+else:
+    __future_module__ = True
+    from robotparser import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/winreg.py b/.venv/lib/python3.12/site-packages/future/moves/winreg.py
new file mode 100644
index 00000000..c8b14756
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/winreg.py
@@ -0,0 +1,8 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from winreg import *
+else:
+    __future_module__ = True
+    from _winreg import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/__init__.py b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/__init__.py
diff --git a/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/client.py b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/client.py
new file mode 100644
index 00000000..4708cf89
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/client.py
@@ -0,0 +1,7 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from xmlrpc.client import *
+else:
+    from xmlrpclib import *
diff --git a/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/server.py b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/server.py
new file mode 100644
index 00000000..1a8af345
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/future/moves/xmlrpc/server.py
@@ -0,0 +1,7 @@
+from __future__ import absolute_import
+from future.utils import PY3
+
+if PY3:
+    from xmlrpc.server import *
+else:
+    from xmlrpclib import *