From d7420ab7ab7cb20d856877c0866bdf7a4fbbd2db Mon Sep 17 00:00:00 2001 From: Firepup Sixfifty Date: Fri, 29 Sep 2023 23:35:51 +0000 Subject: [PATCH] Actual init commit --- .gitignore | 7 + .replit | 10 + build.py | 10 + editor.py | 22 + main.py | 22 + package/LICENSE | 21 + package/README.md | 77 ++ package/pyproject.toml | 31 + package/requirements.txt | 2 + package/setup.cfg | 32 + package/setup.py | 3 + package/src/firepup650.egg-info/PKG-INFO | 43 + package/src/firepup650.egg-info/SOURCES.txt | 11 + .../firepup650.egg-info/dependency_links.txt | 1 + package/src/firepup650.egg-info/requires.txt | 1 + package/src/firepup650.egg-info/top_level.txt | 1 + package/src/firepup650/__init__.py | 881 ++++++++++++++++++ package/src/firepup650/__init__.pyi | 176 ++++ package/src/firepup650/py.typed | 0 package/upload.sh | 11 + poetry.lock | 822 ++++++++++++++++ pyproject.toml | 23 + replit.nix | 4 + 23 files changed, 2211 insertions(+) create mode 100644 .gitignore create mode 100644 .replit create mode 100644 build.py create mode 100644 editor.py create mode 100644 main.py create mode 100644 package/LICENSE create mode 100644 package/README.md create mode 100644 package/pyproject.toml create mode 100644 package/requirements.txt create mode 100644 package/setup.cfg create mode 100644 package/setup.py create mode 100644 package/src/firepup650.egg-info/PKG-INFO create mode 100644 package/src/firepup650.egg-info/SOURCES.txt create mode 100644 package/src/firepup650.egg-info/dependency_links.txt create mode 100644 package/src/firepup650.egg-info/requires.txt create mode 100644 package/src/firepup650.egg-info/top_level.txt create mode 100644 package/src/firepup650/__init__.py create mode 100644 package/src/firepup650/__init__.pyi create mode 100644 package/src/firepup650/py.typed create mode 100755 package/upload.sh create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 replit.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c19d5d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.cache/* +.cache/** +__pycache__/** +.upm +venv/** +**/__pycache__/** +.pythonlibs/** \ No newline at end of file diff --git a/.replit b/.replit new file mode 100644 index 0000000..e735523 --- /dev/null +++ b/.replit @@ -0,0 +1,10 @@ +entrypoint = "main.py" +modules = ["python-3.10:v18-20230807-322e88b"] + +hidden = [".*", "replit*","*.sh"] + +[nix] +channel = "stable-23_05" + +[deployment] +run = ["sh", "-c", "python3 main.py"] diff --git a/build.py b/build.py new file mode 100644 index 0000000..f973fe2 --- /dev/null +++ b/build.py @@ -0,0 +1,10 @@ +def build(): + from os import system as cmd + from editor import edit + cmd("clear") + # useEditor = input("Run Version Editor (Y|*)? ").upper() + # if useEditor == "Y": + # edit() + # cmd("clear") + print("Run these commands next: \n cd package\n ./upload.sh") + cmd("bash") diff --git a/editor.py b/editor.py new file mode 100644 index 0000000..e10b37f --- /dev/null +++ b/editor.py @@ -0,0 +1,22 @@ +def edit(): + ver = input("Version: ") + update = input("What's new?: ") + # Edit setup.cfg + my_file = open("package/setup.cfg") + string_list = my_file.readlines() + my_file.close() + string_list[2] = f"version = {ver}\n" + my_file = open("package/setup.cfg", "w") + new_file_contents = "".join(string_list) + my_file.write(new_file_contents) + my_file.close() + # Edit README.md + my_file = open("package/README.md") + string_list = my_file.readlines() + my_file.close() + string_list[11] = f"###### v.{ver}:\n" + string_list[12] = f"{update}\n\n{string_list[12]}" + my_file = open("package/README.md", "w") + new_file_contents = "".join(string_list) + my_file.write(new_file_contents) + my_file.close() diff --git a/main.py b/main.py new file mode 100644 index 0000000..e9df72b --- /dev/null +++ b/main.py @@ -0,0 +1,22 @@ +from os import environ, system +from build import build + +system("clear") +# joe = system("cat /tmp/updated.txt") +# if joe != 0: +# system("./fix.sh") +# system("clear") +print("Should be nothing from here") +import package.src.firepup650 as fp + +print("Until here (Half-second sleep)") +fp.sleep(.5) +bob = fp.menu({"Yes":"Y", "No": ""}, "(If owner) Build?") +system("clear") +if environ["REPL_OWNER"] == "Firepup650" and bob == "Y": + build() + exit() +else: + print(fp.menu({"a": "hi", "Some fairly long second test case": ["a", "b", "c"], "A third test": 0}, "Test menu")) + fp.console.warn("Test Warning") + fp.e("No demo yet!") diff --git a/package/LICENSE b/package/LICENSE new file mode 100644 index 0000000..fef844e --- /dev/null +++ b/package/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Alexander Maples + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/package/README.md b/package/README.md new file mode 100644 index 0000000..0c99a6d --- /dev/null +++ b/package/README.md @@ -0,0 +1,77 @@ +# Firepup650 +Package containing various shorthand things I use, and a few imports I almost always use +### Change log: +#### v.1.0.35: +Adds a few missing docstrings and fixes a bug with the menu function +#### v.1.0.34: +Adds methods to hide/show the cursor and a menu system +#### v.1.0.33: +Finally fixes `clear`'s ascii option, and adds windows compatibility to the same +#### v.1.0.32 (Breaking change!): +BREAKING CHANGE: `input` -> `inputCast` + +Adds the `makeError` function, and fixes some mypy complaints +#### v.1.0.31: +Adds the `isMath` function provided by @python660 on Replit Ask +#### v.1.0.30: +Fix all mypy stub issues +#### v.1.0.29: +Provide a mypy stub file +#### v.1.0.28: +Updates `Color` to flush print by default. +#### v.1.0.27: +Renames many methods, old names are still avalible for backwards compatiblity however. Also, SQL was moved to it's own package entirely. +#### v.1.0.26: +Adds `remove_prefix` and `remove_suffix`, name mangles internal variables in `sql`, fixes a bug in `console.warn`, adds `__VERSION__`, `__NEW__`, and `__LICENSE__`, adds many aliases for `help()`. +#### v.1.0.25: +Fix all bugs related to version `1.0.24`'s patch. +#### v.1.0.24: +Fixes a bug in `sql`'s `addTable` function. +#### v.1.0.23: +Adds `sql` (class) and all it's functions +#### v.1.0.22: +Adds `flush_print`. +#### v.1.0.21: +Adds `bad_cast_message` to `input` and `replit_input`. +#### v.1.0.20: +Fixes a bug where `replit_input` didn't cast to `cast`. +#### v.1.0.19: +Updates `replit_input` to call (new) custom `input` that supports type casting under the hood. +#### v.1.0.18: +Adds Ease Of Use stuff to `bcolors`. +#### v.1.0.17: +Adds `cprint`. +#### v.1.0.16: +Same as `v.1.0.15`. Should be fixed now. +#### v.1.0.15: +Same as `v.1.0.14`, but I can't use the same number +#### v.1.0.14: +Hopefully fixes poetry not showing certain project info. +#### v.1.0.13: +Adds `replit_input` +#### v.1.0.12: +Description fix for `gp`, add `gh`. +#### v.1.0.11: +Fix a bug in the `gp` method. +#### v.1.0.10: +Add the `REPLIT` color to `bcolors`, and add `replit_cursor` to the module. +#### v.1.0.9: +Small tweaks, nothing major. +#### v.1.0.8: +Cat install collections. This better fix it. +###### v.1.0.7: +Adds `console` (class), `bcolors` (class), and `Color` (function). Fixes type hinting on various things (Lots of thanks to [@bigminiboss](https://pypi.org/user/bigminiboss/)!). +#### v.1.0.6: +Hopefully, fixes an issue where the package doesn't install it's dependencies (Again. Hopefully.) +#### v.1.0.5: +Hopefully, fixes an issue where the package doesn't install it's dependencies +#### v.1.0.4: +Subscript errors +#### v.1.0.3: +Dependant errors +#### v.1.0.2: +Random shorthand (literally) +#### v.1.0.1: +Added animated typing function, sleep shorthand +#### v.1.0.0: +Initial Release! \ No newline at end of file diff --git a/package/pyproject.toml b/package/pyproject.toml new file mode 100644 index 0000000..e28f635 --- /dev/null +++ b/package/pyproject.toml @@ -0,0 +1,31 @@ +[tool.poetry] +name = "firepup650" +version = "1.0.35" +authors = ["Firepup650 "] +description = "Package containing various shorthand things I use, and a few imports I almost always use" +readme = "README.md" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Intended Audience :: Developers", + "Natural Language :: English", +] +license = "MIT" +repository = "https://github.com/F1repup650/firepup650-PYPI" +[tool.poetry.urls] +"Bug Tracker" = "https://github.com/F1repup650/firepup650-PYPI/issues" +Replit = "https://replit.com/@Firepup650/firepup650-PYPI-Package" + +[tool.poetry.dependencies] +python = "^3.8" +fkeycapture = "^1.2.7" +fpsql = "^1, !=1.0.26" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/package/requirements.txt b/package/requirements.txt new file mode 100644 index 0000000..d543907 --- /dev/null +++ b/package/requirements.txt @@ -0,0 +1,2 @@ +fkeycapture>=1.2.7 +fpsql>=1.0.0,!=1.0.26 \ No newline at end of file diff --git a/package/setup.cfg b/package/setup.cfg new file mode 100644 index 0000000..c384e19 --- /dev/null +++ b/package/setup.cfg @@ -0,0 +1,32 @@ +[metadata] +name = firepup650 +version = 1.0.35 +author = Firepup650 +author_email = firepyp650@gmail.com +description = Package containing various shorthand things I use, and a few imports I almost always use +long_description = file: README.md +long_description_content_type = text/markdown +url = https://github.com/F1repup650/firepup650-PYPI +project_urls = + Bug Tracker = https://github.com/F1repup650/firepup650-PYPI/issues + replit = https://replit.com/@Firepup650/firepup650-PYPI-Package +classifiers = + Programming Language :: Python :: 3 + License :: OSI Approved :: MIT License + Operating System :: OS Independent + Development Status :: 5 - Production/Stable + Environment :: Console + Intended Audience :: Developers + Natural Language :: English + +[options] +package_dir = + = src +packages = find: +python_requires = >=3.8 +install_requires = + fkeycapture + fpsql + +[options.packages.find] +where = src \ No newline at end of file diff --git a/package/setup.py b/package/setup.py new file mode 100644 index 0000000..6068493 --- /dev/null +++ b/package/setup.py @@ -0,0 +1,3 @@ +from setuptools import setup + +setup() diff --git a/package/src/firepup650.egg-info/PKG-INFO b/package/src/firepup650.egg-info/PKG-INFO new file mode 100644 index 0000000..9c317a1 --- /dev/null +++ b/package/src/firepup650.egg-info/PKG-INFO @@ -0,0 +1,43 @@ +Metadata-Version: 2.1 +Name: firepup650 +Version: 1.0.9 +Summary: Package containing various shorthand things I use, and a few imports I almost always use +Home-page: https://github.com/F1repup650/firepup650-PYPI +Author: Firepup650 +Author-email: firepyp650@gmail.com +License: UNKNOWN +Project-URL: Bug Tracker, https://github.com/F1repup650/firepup650-PYPI/issues +Project-URL: replit, https://replit.com/@Firepup650/firepup650-PYPI-Package +Description: # Firepup650 + Package containing various shorthand things I use, and a few imports I almost always use + #### Change log: + ###### v.1.0.9: + Small tweaks, nothing major. + ###### v.1.0.8: + Can't install collections. This better fix it. + ###### v.1.0.7: + Adds `console` (class), `bcolors` (class), and `Color` (function). Fixes type hinting on various things (Lots of thanks to @bigminiboss!). + ###### v.1.0.6: + Hopefully, fixes an issue where the package doesn't install it's dependencies (Again. Hopefully.) + ###### v.1.0.5: + Hopefully, fixes an issue where the package doesn't install it's dependencies + ###### v.1.0.4: + Subscript errors + ###### v.1.0.3: + Dependant errors + ###### v.1.0.2: + Random shorthand (litterally) + ###### v.1.0.1: + Added animated typing function, sleep shorthand + ###### v.1.0.0: + Initial Release! +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Requires-Python: >=3.8 +Description-Content-Type: text/markdown diff --git a/package/src/firepup650.egg-info/SOURCES.txt b/package/src/firepup650.egg-info/SOURCES.txt new file mode 100644 index 0000000..edfa2e7 --- /dev/null +++ b/package/src/firepup650.egg-info/SOURCES.txt @@ -0,0 +1,11 @@ +LICENSE +README.md +pyproject.toml +setup.cfg +setup.py +src/firepup650/__init__.py +src/firepup650.egg-info/PKG-INFO +src/firepup650.egg-info/SOURCES.txt +src/firepup650.egg-info/dependency_links.txt +src/firepup650.egg-info/requires.txt +src/firepup650.egg-info/top_level.txt \ No newline at end of file diff --git a/package/src/firepup650.egg-info/dependency_links.txt b/package/src/firepup650.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/package/src/firepup650.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/package/src/firepup650.egg-info/requires.txt b/package/src/firepup650.egg-info/requires.txt new file mode 100644 index 0000000..a083384 --- /dev/null +++ b/package/src/firepup650.egg-info/requires.txt @@ -0,0 +1 @@ +fkeycapture diff --git a/package/src/firepup650.egg-info/top_level.txt b/package/src/firepup650.egg-info/top_level.txt new file mode 100644 index 0000000..58c9cc0 --- /dev/null +++ b/package/src/firepup650.egg-info/top_level.txt @@ -0,0 +1 @@ +firepup650 diff --git a/package/src/firepup650/__init__.py b/package/src/firepup650/__init__.py new file mode 100644 index 0000000..b815c1b --- /dev/null +++ b/package/src/firepup650/__init__.py @@ -0,0 +1,881 @@ +"""Firepup650's PYPI Package""" +import os, sys, termios, tty, time, sqlite3, ast, pydoc # type: ignore[import] +import random as r +import fkeycapture as fkey +import fpsql as fql +from warnings import warn as ww +from typing import NoReturn, TypeVar, Type, Optional, List, Any, Union +from collections.abc import Iterable + + +def alias(func): + """# Function: alias + !Wrapper + Overwrites the docstring for a function to the specified function + # Inputs: + func + + # Returns: + None + + # Raises: + None""" + + def decorator(f): + f.__doc__ = ( + "This method is an alias of the following method:\n\n" + + pydoc.text.document(func) + ) + return f + + return decorator + + +__VERSION__ = "1.0.34" +__NEW__ = "Adds methods to hide/show the cursor and a menu system" +__LICENSE__ = "MIT" + + +def flushPrint(*args) -> None: + """# Function: flushPrint + Prints and flushes the provided args. + # Inputs: + *args - The args to print + + # Returns: + None + + # Raises: + None""" + print(*args, end="", flush=True) + + +flush_print = flushPrint + + +def clear(ascii: bool = True) -> None: + """# Function: clear + Clears the screen + # Inputs: + ascii: bool - Controls whether or not we clear with ascii, defaults to True + + # Returns: + None + + # Raises: + None""" + if not ascii: + os.system("clear||cls") + else: + flushPrint("\033[H\033[2J") + + +@alias(os.system) +def cmd(command: str) -> int: + """# Function: cmd + Runs bash commands + # Inputs: + command: str - The command to run + + # Returns: + int - Status code returned by the command + + # Raises: + None""" + status = os.system(command) + return status + + +def randint(low: int = 0, high: int = 10) -> int: + """# Funcion: randint + A safe randint function + # Inputs: + low: int - The bottom number, defaults to 0 + high: int - The top number, defaults to 10 + + # Returns: + int - A number between high and low + + # Raises: + None""" + return r.randint(min(low, high), max(low, high)) + + +@alias(sys.exit) +def e(code: Union[str, int, None] = None) -> NoReturn: + """# Function: e + Exits with the provided code + # Inputs: + code: Union[str, int, None] - The status code to exit with, defaults to None + + # Returns: + None + + # Raises: + None""" + sys.exit(code) + + +def gp( + keycount: int = 1, chars: list = ["1", "2"], bytes: bool = False +) -> Union[str, bytes]: + """# Function: gp + Get keys and print them. + # Inputs: + keycount: int - Number of keys to get, defaults to 1 + chars: list - List of keys to accept, defaults to ["1", "2"] + bytes: bool - Wether to return the kyes as bytes, defaults to False + + # Returns: + Union[str, bytes] - Keys pressed + + # Raises: + None""" + got = 0 + keys = "" + while got < keycount: + key = fkey.getchars(1, chars) # type: str #type: ignore + keys = f"{keys}{key}" + flushPrint(key) + got += 1 + print() + if not bytes: + return keys + else: + return keys.encode() + + +def gh( + keycount: int = 1, chars: list = ["1", "2"], char: str = "*", bytes: bool = False +) -> Union[str, bytes]: + """# Function: gh + Get keys and print `char` in their place. + # Inputs: + keycount: int - Number of keys to get, defaults to 1 + chars: list - List of keys to accept, defaults to ["1", "2"] + char: str - Character to use to obfuscate the keys, defaults to * + bytes: bool - Wether to return the kyes as bytes, defaults to False + + # Returns: + Union[str, bytes] - Keys pressed + + # Raises: + None""" + got = 0 + keys = "" + while got < keycount: + key = fkey.getchars(1, chars) # type: str#type: ignore + keys = f"{keys}{key}" + flushPrint("*") + got += 1 + print() + if not bytes: + return keys + else: + return keys.encode() + + +def printt(text: str, delay: float = 0.1, newline: bool = True) -> None: + """# Function: printt + Print out animated text! + # Inputs: + text: str - Text to print (could technicaly be a list) + delay: float - How long to delay between characters, defaults to 0.1 + newline: bool - Wether or not to add a newline at the end of the text, defaults to True + + # Returns: + None + + # Raises: + None""" + # Store the current terminal settings + original_terminal_settings = termios.tcgetattr(sys.stdin) + # Change terminal settings to prevent any interruptions + tty.setcbreak(sys.stdin) + for char in text: + flushPrint(char) + time.sleep(delay) + if newline: + print() + # Restore the original terminal settings + termios.tcsetattr(sys.stdin, termios.TCSADRAIN, original_terminal_settings) + + +@alias(time.sleep) +def sleep(seconds: float = 0.5) -> None: + """# Function: sleep + Calls `time.sleep(seconds)` + # Inputs: + seconds: float - How long to sleep for, defaults to 0.5 + + # Returns: + None + + # Raises: + None""" + time.sleep(seconds) + + +@alias(r.seed) +def rseed(seed: Any = None, version: int = 2) -> None: + """# Function: rseed + reseed the random number generator + # Inputs: + seed: Any - The seed, defaults to None + version: int - Version of the seed (1 or 2), defaults to 2 + + # Returns: + None + + # Raises: + None""" + r.seed(seed, version) + + +setattr(Iterable, "__class_getitem__", lambda x: None) +T = TypeVar("T") + + +def robj(iterable: Iterable[T]) -> T: + """# Function: robj + Returns a random object from the provided iterable + # Input: + iterable: Iterable[T] - Any valid Iterable + + # Returns: + T - A random object of type `T` from the provided iterable + + # Raises: + None""" + return r.choice(iterable) # type: ignore[arg-type] + + +def Color( + r: int = 0, g: int = 0, b: int = 0, bcolor: bool = False, flush: bool = True +) -> Union[None, str]: + """# Function: Color + Set the text to a specific color. + # Inputs: + r: int - The red value, range of 0-255, defaults to 0 + g: int - The green value, range of 0-255, defaults to 0 + b: int - The blue value, range of 0-255, defaults to 0 + bcolor: bool - Wether to return the color as a str, defaults to False + fulsh: bool - Wether to flushPrint the color, defaults to True + + # Returns: + Union[None, str] - The color code if `bcolor` is True. Otherwise, returns nothing + + # Raises: + None""" + if r < 0: + r = 0 + if r > 255: + r = 255 + if g < 0: + g = 0 + if g > 255: + g = 255 + if b < 0: + b = 0 + if b > 255: + b = 255 + if bcolor: + return f"\033[38;2;{r};{g};{b}m" + elif flush: + flushPrint("\003[0m") + flushPrint(f"\033[38;2;{r};{g};{b}m") + else: + print("\003[0m") + print(f"\033[38;2;{r};{g};{b}m") + return None + + +class bcolors: + """ + This class contains various pre-defined color codes. + """ + + INVERSE = "\033[8m" + + @staticmethod + def fINVERSE() -> None: + """INVERTs foreground and background colors""" + print("\033[8m", end="") + + RESET = "\033[0m" + RWHITE: str = f"\033[0m{Color(255,255,255,bcolor=True)}" + WHITE: str = f"{Color(255,255,255,bcolor=True)}" + FAILINVERSE: str = f"{Color(255,bcolor=True)}\033[49m\033[7m" + + @staticmethod + def fWHITE() -> None: + """Sets the text color to WHITE""" + print(f"{Color(255,255,255,bcolor=True)}", end="") + + @staticmethod + def fRWHITE() -> None: + """RESETs the text color, then sets it to WHITE""" + print(f"\033[0m{Color(255,255,255,bcolor=True)}", end="") + + @staticmethod + def fFAILINVERSE() -> None: + """Sets the text color RED, then inverses it.""" + print(f"{Color(255,bcolor=True)}\033[49m\033[7m", end="") + + @staticmethod + def fRESET() -> None: + """RESETs the formatting""" + print("\033[0m", end="") + + BROWN: str = f"{Color(205,127,50,bcolor=True)}" + + @staticmethod + def fBROWN() -> None: + """Sets the text color to BROWN""" + print(f"{Color(205,127,50,bcolor=True)}", end="") + + WARNING: str = f"{Color(236,232,26,bcolor=True)}" + + @staticmethod + def fWARNING() -> None: + """Sets the text color to YELLOW""" + print(f"{Color(236,232,26,bcolor=True)}", end="") + + FAIL: str = f"{Color(255,bcolor=True)}" + + @staticmethod + def fFAIL() -> None: + """Sets the text color to RED""" + print(f"{Color(255,bcolor=True)}", end="") + + OK: str = f"{Color(g=255,bcolor=True)}" + + @staticmethod + def fOK() -> None: + """Sets the text color to GREEN""" + print(f"{Color(g=255,bcolor=True)}", end="") + + CYAN: str = f"{Color(g=255,b=255,bcolor=True)}" + + @staticmethod + def fCYAN() -> None: + """Sets the text color to CYAN""" + print(f"{Color(g=255,b=255,bcolor=True)}", end="") + + WOOD: str = f"{Color(120,81,45,bcolor=True)}\033[46m\033[7m" + + @staticmethod + def fWOOD() -> None: + """Sets the text color to CYAN, and the background to a WOODen color""" + print(f"{Color(120,81,45,bcolor=True)}\033[46m\033[7m", end="") + + REPLIT: str = f"{Color(161, 138, 26, True)}" + + @staticmethod + def fREPLIT() -> None: + """Sets the text color to 161,138,26 in RGB""" + print(f"{Color(162, 138, 26, True)}") + + GREEN = OK + fGREEN = fOK + YELLOW = WARNING + fYELLOW = fWARNING + RED = FAIL + fRED = fFAIL + + class bold: + """ + Contains bold versions of the other color codes + """ + + BROWN: str = f"\033[1m{Color(205,127,50,bcolor=True)}" + + @staticmethod + def fBROWN() -> None: + """Sets the text color to BROWN""" + print(f"\033[1m{Color(205,127,50,bcolor=True)}", end="") + + WARNING: str = f"\033[1m{Color(236,232,26,bcolor=True)}" + + @staticmethod + def fWARNING() -> None: + """Sets the text color to YELLOW""" + print(f"\033[1m{Color(236,232,26,bcolor=True)}", end="") + + FAIL: str = f"\033[1m{Color(255,bcolor=True)}" + + @staticmethod + def fFAIL() -> None: + """Sets the text color to RED""" + print(f"\033[1m{Color(255,bcolor=True)}", end="") + + OK: str = f"\033[1m{Color(g=255,bcolor=True)}" + + @staticmethod + def fOK() -> None: + """Sets the text color to GREEN""" + print(f"\033[1m{Color(g=255,bcolor=True)}", end="") + + CYAN: str = f"\033[1m{Color(g=255,b=255,bcolor=True)}" + + @staticmethod + def fCYAN() -> None: + """Sets the text color to CYAN""" + print(f"\033[1m{Color(g=255,b=255,bcolor=True)}", end="") + + WOOD: str = f"\033[1m{Color(120,81,45,bcolor=True)}\033[46m\033[7m" + + @staticmethod + def fWOOD() -> None: + """Sets the text color to CYAN, and the background to a WOODen color""" + print(f"\033[1m{Color(120,81,45,bcolor=True)}\033[46m\033[7m", end="") + + WHITE: str = f"\033[1m{Color(255,255,255,bcolor=True)}" + + @staticmethod + def fWHITE() -> None: + """Sets the text color to WHITE""" + print(f"\033[1m{Color(255,255,255,bcolor=True)}", end="") + + RWHITE: str = f"\033[0m\033[1m{Color(255,255,255,bcolor=True)}" + + @staticmethod + def fRWHITE() -> None: + """RESETs the text color, then sets it to WHITE""" + print(f"\033[0m\033[1m{Color(255,255,255,bcolor=True)}", end="") + + REPLIT: str = f"\033[1m{Color(161, 138, 26, True)}" + + @staticmethod + def fREPLIT() -> None: + """Sets the text color to 161,138,26 in RGB""" + print(f"\033[1m{Color(162, 138, 26, True)}") + + GREEN = OK + fGREEN = fOK + YELLOW = WARNING + fYELLOW = fWARNING + RED = FAIL + fRED = fFAIL + + +replitCursor: str = f"{bcolors.REPLIT}{bcolors.RESET}" +replit_cursor = replitCursor + +cast = TypeVar("cast") + + +def inputCast(prompt: str = "", cast: Type = str, badCastMessage: str = "") -> cast: # type: ignore[type-var] + """# Function: input + Displays your `prompt`, supports casting by default, with handling! + # Inputs: + prompt: str - The prompt, defaults to "" + cast: Type - The Type to cast the input to, defaults to str + badCastMessage: str - The message to dispaly upon reciving input that can't be casted to `cast`, can be set to `"None"` to not have one, defaults to f"That is not a vaild {cast.__name__}, please try again." + + # Returns: + cast - The user's input, casted to `cast` + + # Raises: + None""" + if not badCastMessage: + badCastMessage = f"That is not a vaild {cast.__name__}, please try again." + ret = "" + abc = "" + while ret == "": + try: + abc = input(prompt) + cast(abc) + ret = abc + break + except ValueError: + if badCastMessage != "None": + print(badCastMessage) + return cast(ret) + + +def replitInput(prompt: str = "", cast: Type = str, badCastMessage: str = "") -> cast: # type: ignore[type-var] + """# Function: replitInput + Displays your `prompt` with the replit cursor on the next line, supports casting by default, with handling! + # Inputs: + prompt: str - The prompt, defaults to "" + cast: Type - The Type to cast the input to, defaults to str + badCastMessage: str - The message to dispaly upon reciving input that can't be casted to `cast`, can be set to "No message" to not have one, defaults to f"That is not a vaild {cast.__name__}, please try again." + + # Returns: + cast - The user's input, casted to `cast` + + # Raises: + None""" + if prompt: + print(prompt) + return inputCast(f"{replitCursor} ", cast, badCastMessage) + + +replit_input = replitInput + + +def cprint(text: str = "") -> None: + """# Function: cprint + Displays your `text` in a random color (from bcolors). + # Inputs: + text: str - The text to color, defaults to "" + + # Returns: + None + + # Raises: + None""" + colordict = { + "GREEN": bcolors.GREEN, + "RED": bcolors.RED, + "YELLOW": bcolors.YELLOW, + "CYAN": bcolors.CYAN, + "REPLIT": bcolors.REPLIT, + "BROWN": bcolors.BROWN, + "WHITE": bcolors.WHITE, + } + colornames = ["GREEN", "RED", "YELLOW", "CYAN", "REPLIT", "BROWN", "WHITE"] + color = colordict[robj(colornames)] + print(f"{color}{text}") + + +class ProgramWarnings(UserWarning): + """Warnings Raised for user defined Warnings in `console.warn` by default.""" + + +class AssertationWarning(UserWarning): + """Warnings Raised for assertion errors in `console.assert_()`.""" + + +class console: + """Limited Functionality version of JavaScript's console functions""" + + __counters__: dict = {"default": 0} + __warnings__: List[str] = [] + + @alias(print) + @staticmethod + def log(*args, **kwargs) -> None: + """print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) + + Prints the values to a stream, or to sys.stdout by default. + Optional keyword arguments: + file: a file-like object (stream); defaults to the current sys.stdout. + sep: string inserted between values, default a space. + end: string appended after the last value, default a newline. + flush: whether to forcibly flush the stream.""" + print(*args, **kwargs) + + @alias(print) + @staticmethod + def info(*args, **kwargs) -> None: + """print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) + + Prints the values to a stream, or to sys.stdout by default. + Optional keyword arguments: + file: a file-like object (stream); defaults to the current sys.stdout. + sep: string inserted between values, default a space. + end: string appended after the last value, default a newline. + flush: whether to forcibly flush the stream.""" + print(*args, **kwargs) + + @alias(print) + @staticmethod + def debug(*args, **kwargs) -> None: + """print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) + + Prints the values to a stream, or to sys.stdout by default. + Optional keyword arguments: + file: a file-like object (stream); defaults to the current sys.stdout. + sep: string inserted between values, default a space. + end: string appended after the last value, default a newline. + flush: whether to forcibly flush the stream.""" + print(*args, **kwargs) + + @staticmethod + def warn(warning: Any, class_: Optional[Type[Warning]] = ProgramWarnings) -> None: + """# Function: console.warn + Issue a warning + # Inputs: + warning: Any - The variable to use as a warning + class_: class - The class to raise the warning from, defaults to ProgramWarnings + + # Returns: + None + + # Raises: + None""" + ind = 1 + while warning in console.__warnings__: + warning = f"{warning}({ind})" + ind += 1 + console.__warnings__.append(warning) + ww(warning, class_, 2) + + @staticmethod + def error(*args, **kwargs) -> None: + """print(value, ..., sep=' ', end='\n', file=sys.stderr, flush=False) + + Prints the values to sys.stderr. + Optional keyword arguments: + sep: string inserted between values, default a space. + end: string appended after the last value, default a newline. + flush: whether to forcibly flush the stream.""" + print(bcolors.FAIL, *args, bcolors.RESET, file=sys.stderr, **kwargs) + + @staticmethod + def assert_(condition: bool, message: str = "Assertion Failed") -> None: + """# Function: console.assert_ + Makes an assertion check + # Inputs: + condition: bool - The condition to run an assert check on + message: str - The message to raise if the assertion is False, defaults to "Assertion Failed" + + # Returns: + None + + # Raises: + None""" + if not condition: + console.warn(message, AssertationWarning) + + @staticmethod + def count(label: str = "default") -> None: + """# Function: console.count + Increment a counter by one + # Inputs: + label: str - The counter to increment, defaults to "default" + + # Returns: + None + + # Raises: + None""" + if console.__counters__[label]: + console.__counters__[label] += 1 + else: + console.__counters__[label] = 1 + print(f"{label}: {console.__counters__[label]}") + + @staticmethod + def countReset(label: str = "default") -> None: + """# Function: console.countReset + Reset a counter to 0 + # Inputs: + label: str - The counter to reset, defaults to "default" + + # Returns: + None + + # Raises: + None""" + console.__counters__[label] = 0 + + @alias(clear) + @staticmethod + def clear(ascii: bool = False) -> None: + """# Function: console.clear + Clears the screen + # Inputs: + ascii: bool - Wether to use ASCII to clear the screen, defaults to False + + # Returns: + None + + # Raises: + None""" + clear(ascii) + + +sql: Type = fql.sql + + +def removePrefix(text: str, prefix: str) -> str: + """# Function: removePrefix + If `prefix` is at the beginning of `text`, return `text` without `prefix`, otherwise return `text` + # Inputs: + text: str - The text to remove the prefix from + prefix: str - The prefix to remove from the text + + # Returns: + str - `text` without `prefix` + + # Raises: + None""" + if text.startswith(prefix): + return text[len(prefix) :] + return text + + +remove_prefix = removePrefix + + +def removeSuffix(text: str, suffix: str) -> str: + """# Function: removeSuffix + If `suffix` is at the end of `text`, return `text` without `suffix`, otherwise return `text` + # Inputs: + text: str - The text to remove the suffix from + suffix: str - The suffix to remove from the text + + # Returns: + str - `text` without `suffix` + + # Raises: + None""" + if text.endswith(suffix): + return text[: -len(suffix)] + return text + + +remove_suffix = removeSuffix + + +def isMath(equation: str) -> bool: + """# Function: isMath + Checks whether a given `equation` is actually an equation or not + Function provided by @python660 on Replit Ask + # Inputs: + equation: str - The string to check to see if it is an equation + + # Returns: + bool - Whether the given equation is a math problem + + # Raises: + None""" + return all([True if char in "1234567890*/+-.^%!" else False for char in equation]) + + +def makeError( + name: str, message: object, module: str = "builtins", raise_: bool = True +) -> Union[NoReturn, object]: + """# Function: isMath + Makes a custom error using the provided parts + # Inputs: + name: str - The name of the error + message: object - The error content + module: str - The module to say the error came from, defaults to "builtins" + raise_: bool - Wether to raise the error or return it, defaults to rasing + + # Returns: + Union[NoReturn, object] - Raises an error (NoReturn) or returns the error + + # Raises: + If raises_, then User Provided Error, else None""" + if raise_: + raise type(name, (Exception,), {"__module__": module, "__name__": name})( + message + ) + else: + return type(name, (Exception,), {"__module__": module, "__name__": name})( + message + ) + + +class cur: + """Contains functions to hide and show the cursor""" + + @staticmethod + def hide() -> None: + """# Function: cur.hide + Hides the cursor + # Inputs: + None + + # Returns: + None + + # Raises: + None""" + flushPrint("\033[?25l") + + @staticmethod + def show() -> None: + """# Function: cur.show + Shows the cursor + # Inputs: + None + + # Returns: + None + + # Raises: + None""" + flushPrint("\033[?25h") + + +def hidden(func): + """# Function: hidden + A wrapper that hides the cursor + # Inputs: + function + + # Returns: + wrapper + + # Raises: + None""" + + def wrapper(*args, **kwargs): + cur.hide() + try: + out = func(*args, **kwargs) # type: ignore + except Exception as E: + cur.show() + raise E + cur.show() + return out + + return wrapper + + +@hidden +def menu(options: dict, title: str = "") -> object: + """# Function: menu + Uses a nice interactive for the provided options + # Inputs: + options: dict - A dictionary of options and their return values + + # Returns: + object - The user's selected option + + # Raises: + None""" + if type(options) != dict: + raise ValueError(f"options must be a dictionary (passed a {type(options)})") + if len(options) <= 1: + raise ValueError( + f"options must contain at least two choices (passed {len(options)})" + ) + choices = list(options) + limit = len(choices) + current = 0 + selected = False + UP = [fkey.KEYS["UP"], b"w", b"a", fkey.KEYS["LEFT"]] + DOWN = [fkey.KEYS["DOWN"], b"s", b"d", fkey.KEYS["RIGHT"]] + indicatorSize = len(str(limit)) * 2 + 1 + menuWidth = max( + [max([len(choice) for choice in choices]) + 4, indicatorSize * 2 + 7] + ) + while not selected: + clear() + flushPrint( + (title + "\n" if title else "") + + f"╔{'═'*menuWidth}╗\n" + + f"║ {f'{current+1}'}{' '*(len(str(limit))-len(str(current+1)))}/{limit}{' '*int(menuWidth/2-indicatorSize-2.5)}↑{' '*int((menuWidth-indicatorSize)/2-(0 if indicatorSize!=3 else 1))} ║\n" + + f"║←{' '*int(((menuWidth-len(choices[current]))/2)-1)}{choices[current]}{' '*int((menuWidth-len(choices[current]))/2-.5)}→║\n" + + f"║{' '*int((menuWidth-1)/2)}↓{' '*int((menuWidth-1)/2+.5)}║\n" + + f"╚{'═'*menuWidth}╝\n" + ) + key = fkey.get(bytes=True, osReader=True) + if key in UP: + current -= 1 + elif key in DOWN: + current += 1 + elif key in [fkey.KEYS["ENTER"]]: + break + if current > limit - 1: + current = 0 + if current < 0: + current = limit - 1 + return options[choices[current]] diff --git a/package/src/firepup650/__init__.pyi b/package/src/firepup650/__init__.pyi new file mode 100644 index 0000000..183d34e --- /dev/null +++ b/package/src/firepup650/__init__.pyi @@ -0,0 +1,176 @@ +from collections.abc import Iterable +from typing import Any, List, NoReturn, Optional, Type, TypeVar, Union + +def alias(Function): ... + +__VERSION__: str +__NEW__: str +__LICENSE__: str + +def flushPrint(*args) -> None: ... + +flush_print = flushPrint + +def clear(ascii: bool = ...) -> None: ... +def cmd(command: str) -> int: ... +def randint(low: int = ..., high: int = ...) -> int: ... +def e(code: Union[str, int, None] = ...) -> NoReturn: ... +def gp( + keycount: int = ..., chars: list = ..., bytes: bool = ... +) -> Union[str, bytes]: ... +def gh( + keycount: int = ..., chars: list = ..., char: str = ..., bytes: bool = ... +) -> Union[str, bytes]: ... +def printt(text: str, delay: float = ..., newline: bool = ...) -> None: ... +def sleep(seconds: float = ...) -> None: ... +def rseed(seed: Any = ..., version: int = ...) -> None: ... + +T = TypeVar("T") + +def robj(iterable: Iterable[T]) -> T: ... +def Color( + r: int = ..., g: int = ..., b: int = ..., bcolor: bool = ..., flush: bool = ... +) -> Union[None, str]: ... + +class bcolors: + INVERSE: str + @staticmethod + def fINVERSE() -> None: ... + RESET: str + RWHITE: str + WHITE: str + FAILINVERSE: str + @staticmethod + def fWHITE() -> None: ... + @staticmethod + def fRWHITE() -> None: ... + @staticmethod + def fFAILINVERSE() -> None: ... + @staticmethod + def fRESET() -> None: ... + BROWN: str + @staticmethod + def fBROWN() -> None: ... + WARNING: str + @staticmethod + def fWARNING() -> None: ... + FAIL: str + @staticmethod + def fFAIL() -> None: ... + OK: str + @staticmethod + def fOK() -> None: ... + CYAN: str + @staticmethod + def fCYAN() -> None: ... + WOOD: str + @staticmethod + def fWOOD() -> None: ... + REPLIT: str + @staticmethod + def fREPLIT() -> None: ... + GREEN = OK + fGREEN = fOK + YELLOW = WARNING + fYELLOW = fWARNING + RED = FAIL + fRED = fFAIL + + class bold: + BROWN: str + @staticmethod + def fBROWN() -> None: ... + WARNING: str + @staticmethod + def fWARNING() -> None: ... + FAIL: str + @staticmethod + def fFAIL() -> None: ... + OK: str + @staticmethod + def fOK() -> None: ... + CYAN: str + @staticmethod + def fCYAN() -> None: ... + WOOD: str + @staticmethod + def fWOOD() -> None: ... + WHITE: str + @staticmethod + def fWHITE() -> None: ... + RWHITE: str + @staticmethod + def fRWHITE() -> None: ... + REPLIT: str + @staticmethod + def fREPLIT() -> None: ... + GREEN = OK + fGREEN = fOK + YELLOW = WARNING + fYELLOW = fWARNING + RED = FAIL + fRED = fFAIL + +replitCursor: str +replit_cursor = replitCursor +cast = TypeVar("cast") + +def inputCast( + prompt: str = ..., cast: Type = ..., badCastMessage: str = ... +) -> cast: ... +def replitInput( + prompt: str = ..., cast: Type = ..., badCastMessage: str = ... +) -> cast: ... + +replit_input = replitInput + +def cprint(text: str = ...) -> None: ... + +class ProgramWarnings(UserWarning): ... +class AssertationWarning(UserWarning): ... + +class console: + __counters__: dict + __warnings__: List[str] + @staticmethod + def log(*args, **kwargs) -> None: ... + @staticmethod + def info(*args, **kwargs) -> None: ... + @staticmethod + def debug(*args, **kwargs) -> None: ... + @staticmethod + def warn(warning: Any, class_: Optional[Type[Warning]] = ...) -> None: ... + @staticmethod + def error(*args, **kwargs) -> None: ... + @staticmethod + def assert_(condition: bool, message: str = ...) -> None: ... + @staticmethod + def count(label: str = ...) -> None: ... + @staticmethod + def countReset(label: str = ...) -> None: ... + @staticmethod + def clear(ascii: bool = ...) -> None: ... + +sql: Type + +def removePrefix(text: str, prefix: str) -> str: ... + +remove_prefix = removePrefix + +def removeSuffix(text: str, suffix: str) -> str: ... + +remove_suffix = removeSuffix + +def isMath(equation: str) -> bool: ... +def makeError( + name: str, message: object, module: str = ..., raise_: bool = ... +) -> Union[None, object]: ... + +class cur: + @staticmethod + def hide() -> None: ... + @staticmethod + def show() -> None: ... + +def hidden(func): ... +def menu(options: dict) -> object: ... diff --git a/package/src/firepup650/py.typed b/package/src/firepup650/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/package/upload.sh b/package/upload.sh new file mode 100755 index 0000000..f92adf0 --- /dev/null +++ b/package/upload.sh @@ -0,0 +1,11 @@ +echo "🧽 Pruging old package files... 🧽" +rm -rf dist +mkdir dist +echo "🧹 Formatting... 🧹" +black . > /dev/null +echo "🛠 Building... 🛠" +poetry build > /dev/null +echo -n "☁️ Uploading... ☁️" +poetry publish -u __token__ -p $TOKEN +#python3 -m twine upload -r pypi dist/* +echo "✨ All done! ✨" \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..8388593 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,822 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + +[[package]] +name = "black" +version = "23.9.1" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.8" +files = [ + {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"}, + {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"}, + {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"}, + {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"}, + {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"}, + {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"}, + {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"}, + {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"}, + {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"}, + {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"}, + {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"}, + {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"}, + {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2023.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] + +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = "*" +files = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.2.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "cryptography" +version = "41.0.4" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"}, + {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"}, + {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"}, + {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"}, + {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"}, + {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"}, + {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"}, +] + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "docutils" +version = "0.20.1" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, +] + +[[package]] +name = "fkeycapture" +version = "1.2.7" +description = "A way to capture keystrokes" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "fkeycapture-1.2.7-py3-none-any.whl", hash = "sha256:c09cb715ccf2b9dfc25ecd39bffaf8fa794bc07410f666ac2ec15ebebebaabef"}, + {file = "fkeycapture-1.2.7.tar.gz", hash = "sha256:5ef9c90aec0420a2e462420a2bc8076a50ffd8566a9a022ac171c0e508f1d58d"}, +] + +[[package]] +name = "fpsql" +version = "1.0.5" +description = "An easy to use SQLite package" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "fpsql-1.0.5-py3-none-any.whl", hash = "sha256:a31f4bf99d44c0095a8246bfd78bd39cf96d9b3591363a3f6538ca40914679a4"}, + {file = "fpsql-1.0.5.tar.gz", hash = "sha256:647d148c5a17bca3a147a3bb281cc12dfc36f6f3f3652f22a1b2a1a3b7367c93"}, +] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.8.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "jaraco-classes" +version = "3.3.0" +description = "Utility functions for Python class constructs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jaraco.classes-3.3.0-py3-none-any.whl", hash = "sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb"}, + {file = "jaraco.classes-3.3.0.tar.gz", hash = "sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621"}, +] + +[package.dependencies] +more-itertools = "*" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + +[[package]] +name = "jeepney" +version = "0.8.0" +description = "Low-level, pure Python DBus protocol wrapper." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, + {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, +] + +[package.extras] +test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] +trio = ["async_generator", "trio"] + +[[package]] +name = "keyring" +version = "24.2.0" +description = "Store and access your passwords safely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "keyring-24.2.0-py3-none-any.whl", hash = "sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6"}, + {file = "keyring-24.2.0.tar.gz", hash = "sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} +"jaraco.classes" = "*" +jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} +pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} + +[package.extras] +completion = ["shtab"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + +[[package]] +name = "keyrings-alt" +version = "4.2.0" +description = "Alternate keyring implementations" +optional = false +python-versions = ">=3.7" +files = [ + {file = "keyrings.alt-4.2.0-py3-none-any.whl", hash = "sha256:3d25912ed71d6deec85d7e6e867963e1357cd56186a41c9295b86939a5ebf85c"}, + {file = "keyrings.alt-4.2.0.tar.gz", hash = "sha256:2ba3d56441ba0637f5f9c096068f67010ac0453f9d0b626de2aa3019353b6431"}, +] + +[package.dependencies] +"jaraco.classes" = "*" + +[package.extras] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["backports.unittest-mock", "flake8 (<5)", "fs (>=0.5,<3)", "gdata", "keyring (>=20)", "pycryptodome", "pycryptodomex", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "python-keyczar"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "more-itertools" +version = "10.1.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.8" +files = [ + {file = "more-itertools-10.1.0.tar.gz", hash = "sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a"}, + {file = "more_itertools-10.1.0-py3-none-any.whl", hash = "sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6"}, +] + +[[package]] +name = "mypy" +version = "1.5.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, + {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, + {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, + {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, + {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, + {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, + {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, + {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, + {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, + {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, + {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, + {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, + {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, + {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, + {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, + {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, + {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, + {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nh3" +version = "0.2.14" +description = "Ammonia HTML sanitizer Python binding" +optional = false +python-versions = "*" +files = [ + {file = "nh3-0.2.14-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:9be2f68fb9a40d8440cbf34cbf40758aa7f6093160bfc7fb018cce8e424f0c3a"}, + {file = "nh3-0.2.14-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f99212a81c62b5f22f9e7c3e347aa00491114a5647e1f13bbebd79c3e5f08d75"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7771d43222b639a4cd9e341f870cee336b9d886de1ad9bec8dddab22fe1de450"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:525846c56c2bcd376f5eaee76063ebf33cf1e620c1498b2a40107f60cfc6054e"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e8986f1dd3221d1e741fda0a12eaa4a273f1d80a35e31a1ffe579e7c621d069e"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18415df36db9b001f71a42a3a5395db79cf23d556996090d293764436e98e8ad"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:377aaf6a9e7c63962f367158d808c6a1344e2b4f83d071c43fbd631b75c4f0b2"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b0be5c792bd43d0abef8ca39dd8acb3c0611052ce466d0401d51ea0d9aa7525"}, + {file = "nh3-0.2.14-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93a943cfd3e33bd03f77b97baa11990148687877b74193bf777956b67054dcc6"}, + {file = "nh3-0.2.14-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ac8056e937f264995a82bf0053ca898a1cb1c9efc7cd68fa07fe0060734df7e4"}, + {file = "nh3-0.2.14-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:203cac86e313cf6486704d0ec620a992c8bc164c86d3a4fd3d761dd552d839b5"}, + {file = "nh3-0.2.14-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:5529a3bf99402c34056576d80ae5547123f1078da76aa99e8ed79e44fa67282d"}, + {file = "nh3-0.2.14-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:aed56a86daa43966dd790ba86d4b810b219f75b4bb737461b6886ce2bde38fd6"}, + {file = "nh3-0.2.14-cp37-abi3-win32.whl", hash = "sha256:116c9515937f94f0057ef50ebcbcc10600860065953ba56f14473ff706371873"}, + {file = "nh3-0.2.14-cp37-abi3-win_amd64.whl", hash = "sha256:88c753efbcdfc2644a5012938c6b9753f1c64a5723a67f0301ca43e7b85dcf0e"}, + {file = "nh3-0.2.14.tar.gz", hash = "sha256:a0c509894fd4dccdff557068e5074999ae3b75f4c5a2d6fb5415e782e25679c4"}, +] + +[[package]] +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] + +[[package]] +name = "pathspec" +version = "0.11.2" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, +] + +[[package]] +name = "pkginfo" +version = "1.9.6" +description = "Query metadata from sdists / bdists / installed packages." +optional = false +python-versions = ">=3.6" +files = [ + {file = "pkginfo-1.9.6-py3-none-any.whl", hash = "sha256:4b7a555a6d5a22169fcc9cf7bfd78d296b0361adad412a346c1226849af5e546"}, + {file = "pkginfo-1.9.6.tar.gz", hash = "sha256:8fd5896e8718a4372f0ea9cc9d96f6417c9b986e23a4d116dda26b62cc29d046"}, +] + +[package.extras] +testing = ["pytest", "pytest-cov"] + +[[package]] +name = "platformdirs" +version = "3.10.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, +] + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] + +[[package]] +name = "pygments" +version = "2.16.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, +] + +[[package]] +name = "readme-renderer" +version = "42.0" +description = "readme_renderer is a library for rendering readme descriptions for Warehouse" +optional = false +python-versions = ">=3.8" +files = [ + {file = "readme_renderer-42.0-py3-none-any.whl", hash = "sha256:13d039515c1f24de668e2c93f2e877b9dbe6c6c32328b90a40a49d8b2b85f36d"}, + {file = "readme_renderer-42.0.tar.gz", hash = "sha256:2d55489f83be4992fe4454939d1a051c33edbab778e82761d060c9fc6b308cd1"}, +] + +[package.dependencies] +docutils = ">=0.13.1" +nh3 = ">=0.2.14" +Pygments = ">=2.5.1" + +[package.extras] +md = ["cmarkgfm (>=0.8.0)"] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rfc3986" +version = "2.0.0" +description = "Validating URI References per RFC 3986" +optional = false +python-versions = ">=3.7" +files = [ + {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, + {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, +] + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rich" +version = "13.5.3" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.5.3-py3-none-any.whl", hash = "sha256:9257b468badc3d347e146a4faa268ff229039d4c2d176ab0cffb4c4fbc73d5d9"}, + {file = "rich-13.5.3.tar.gz", hash = "sha256:87b43e0543149efa1253f485cd845bb7ee54df16c9617b8a893650ab84b4acb6"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "secretstorage" +version = "3.3.3" +description = "Python bindings to FreeDesktop.org Secret Service API" +optional = false +python-versions = ">=3.6" +files = [ + {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, + {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, +] + +[package.dependencies] +cryptography = ">=2.0" +jeepney = ">=0.6" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "twine" +version = "4.0.2" +description = "Collection of utilities for publishing packages on PyPI" +optional = false +python-versions = ">=3.7" +files = [ + {file = "twine-4.0.2-py3-none-any.whl", hash = "sha256:929bc3c280033347a00f847236564d1c52a3e61b1ac2516c97c48f3ceab756d8"}, + {file = "twine-4.0.2.tar.gz", hash = "sha256:9e102ef5fdd5a20661eb88fad46338806c3bd32cf1db729603fe3697b1bc83c8"}, +] + +[package.dependencies] +importlib-metadata = ">=3.6" +keyring = ">=15.1" +pkginfo = ">=1.8.1" +readme-renderer = ">=35.0" +requests = ">=2.20" +requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" +rfc3986 = ">=1.4.0" +rich = ">=12.0.0" +urllib3 = ">=1.26.0" + +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[package]] +name = "urllib3" +version = "2.0.5" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.5-py3-none-any.whl", hash = "sha256:ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e"}, + {file = "urllib3-2.0.5.tar.gz", hash = "sha256:13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.10.11" +content-hash = "44854c629aee93ba89245e9a94a20e3065bd22fb6a16e4cac3b52a93c1a4c2de" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..8bacb85 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[tool.poetry] +name = "firepup650-source" +version = "1.0.2" +description = "Replit source" +authors = ["Firepup650"] + +[tool.poetry.dependencies] +python = "^3.10.11" +fkeycapture = "^1.2.3" +black = "^23.3.0" +keyrings-alt = "^4.2.0" +fpsql = "^1.0.1" +mypy = "^1.3.0" +twine = "^4.0.2" + +[tool.poetry.dev-dependencies] + +[tool.black] +exclude = ".pythonlibs" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/replit.nix b/replit.nix new file mode 100644 index 0000000..32ed394 --- /dev/null +++ b/replit.nix @@ -0,0 +1,4 @@ +{ pkgs }: { + deps = [ + ]; +}