From 3e226a113ef8a601797ff7190374cb2cabd3960f Mon Sep 17 00:00:00 2001 From: Firepup Sixfifty Date: Wed, 24 May 2023 13:58:35 +0000 Subject: [PATCH] New Files --- .gitignore | 6 + .replit | 94 ++++++++++++ .replit.backup | 2 + askpass.sh | 5 + fix.sh | 7 + git_log.txt | 4 + lspfix.sh | 4 + package/dist/fpsql-1.0.1-py3-none-any.whl | Bin 0 -> 3455 bytes package/dist/fpsql-1.0.1.tar.gz | Bin 0 -> 3034 bytes package/requirements.txt | 0 package/setup.py | 3 + package/src/fpsql/__init__.py | 177 ++++++++++++++++++++++ package/upload.sh | 7 + replit.nix | 22 +++ 14 files changed, 331 insertions(+) create mode 100644 .gitignore create mode 100644 .replit create mode 100644 .replit.backup create mode 100755 askpass.sh create mode 100755 fix.sh create mode 100644 git_log.txt create mode 100755 lspfix.sh create mode 100644 package/dist/fpsql-1.0.1-py3-none-any.whl create mode 100644 package/dist/fpsql-1.0.1.tar.gz create mode 100644 package/requirements.txt create mode 100644 package/setup.py create mode 100644 package/src/fpsql/__init__.py create mode 100755 package/upload.sh create mode 100644 replit.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d4fffe --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.cache/* +.cache/** +__pycache__/** +.upm +venv/** +**/__pycache__/** \ No newline at end of file diff --git a/.replit b/.replit new file mode 100644 index 0000000..dc97b59 --- /dev/null +++ b/.replit @@ -0,0 +1,94 @@ +run = "python main.py" +entrypoint = "package/src/fpsql/__init__.py" +# A list of globs that specify which files and directories should +# be hidden in the workspace. +hidden = ["venv", ".config", "**/__pycache__", "**/.mypy_cache", "**/*.pyc"] + +# Specifies which nix channel to use when building the environment. +[nix] +channel = "stable-22_11" + +[[hints]] +regex = "stderred: .+GLIBC.+not found" +message = "The command `stderred` is known to cause issues. It's recommended you remove it from your .replit configuration." + +[env] +VIRTUAL_ENV = "/home/runner/${REPL_SLUG}/venv" +PATH = "${VIRTUAL_ENV}/bin" +PYTHONPATH = "$PYTHONHOME/lib/python3.8:${VIRTUAL_ENV}/lib/python3.8/site-packages" +REPLIT_POETRY_PYPI_REPOSITORY = "https://package-proxy.replit.com/pypi/" +MPLBACKEND = "TkAgg" +POETRY_CACHE_DIR = "${HOME}/${REPL_SLUG}/.cache/pypoetry" + +# Enable unit tests. This is only supported for a few languages. +[unitTest] +language = "python3" + +# Add a debugger! +[debugger] +support = true + + # How to start the debugger. + [debugger.interactive] + transport = "localhost:0" + startCommand = ["dap-python", "main.py"] + + # How to communicate with the debugger. + [debugger.interactive.integratedAdapter] + dapTcpAddress = "localhost:0" + + # How to tell the debugger to start a debugging session. + [debugger.interactive.initializeMessage] + command = "initialize" + type = "request" + + [debugger.interactive.initializeMessage.arguments] + adapterID = "debugpy" + clientID = "replit" + clientName = "replit.com" + columnsStartAt1 = true + linesStartAt1 = true + locale = "en-us" + pathFormat = "path" + supportsInvalidatedEvent = true + supportsProgressReporting = true + supportsRunInTerminalRequest = true + supportsVariablePaging = true + supportsVariableType = true + + # How to tell the debugger to start the debuggee application. + [debugger.interactive.launchMessage] + command = "attach" + type = "request" + + [debugger.interactive.launchMessage.arguments] + logging = {} + +# Configures the packager. +[packager] +language = "python3" +ignoredPackages = ["unit_tests"] + + [packager.features] + enabledForHosting = false + # Enable searching packages from the sidebar. + packageSearch = true + # Enable guessing what packages are needed from the code. + guessImports = true + +# These are the files that need to be preserved when this +# language template is used as the base language template +# for Python repos imported from GitHub +[gitHubImport] +requiredFiles = [".replit", "replit.nix", ".config", "venv"] + +[languages] + +[languages.python3] +pattern = "**/*.py" + +[languages.python3.languageServer] +start = "pylsp" + +[deployment] +run = ["sh", "-c", "python3 main.py"] diff --git a/.replit.backup b/.replit.backup new file mode 100644 index 0000000..6d775d1 --- /dev/null +++ b/.replit.backup @@ -0,0 +1,2 @@ +run = "python main.py" +entrypoint = "package/src/fpsql/__init__.py" \ No newline at end of file diff --git a/askpass.sh b/askpass.sh new file mode 100755 index 0000000..f47ce6e --- /dev/null +++ b/askpass.sh @@ -0,0 +1,5 @@ +#!/bin/bash +case "$1" in + Username*) exec echo "$NAME" ;; + Password*) exec echo "$PASS" ;; +esac \ No newline at end of file diff --git a/fix.sh b/fix.sh new file mode 100755 index 0000000..828a7ca --- /dev/null +++ b/fix.sh @@ -0,0 +1,7 @@ +echo "Fixing poetry..." +pip install --upgrade poetry > /dev/null +echo "Updating/Installing dependencies..." +poetry update > /dev/null +echo "Logging completion..." +touch /tmp/updated.txt +echo "Done!" \ No newline at end of file diff --git a/git_log.txt b/git_log.txt new file mode 100644 index 0000000..6a3b30f --- /dev/null +++ b/git_log.txt @@ -0,0 +1,4 @@ +error: unable to read askpass response from 'replit-git-askpass' +error: unable to read askpass response from 'replit-git-askpass' +remote: Push to create is not enabled for users. +fatal: unable to access 'https://git--firecat650.repl.co/Firepup650/FPSQL.git/': The requested URL returned error: 403 diff --git a/lspfix.sh b/lspfix.sh new file mode 100755 index 0000000..d395be0 --- /dev/null +++ b/lspfix.sh @@ -0,0 +1,4 @@ +unzip pylsp.sh -d venv/lib/python3.8/site-packages +sed -i 6d .config/pip/pip.conf +pip install ujson docstring_to_markdown jedi +mv pylsp venv/bin \ No newline at end of file diff --git a/package/dist/fpsql-1.0.1-py3-none-any.whl b/package/dist/fpsql-1.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..5d151fd29076906506d2b7344f4271c170c009d0 GIT binary patch literal 3455 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 R=hqB}!}ZWe0L!1N{{VZD?>@R;AJKNS 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 cRjXRns#dkCRjq1OtJb^rhX literal 0 HcmV?d00001 diff --git a/package/requirements.txt b/package/requirements.txt new file mode 100644 index 0000000..e69de29 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/fpsql/__init__.py b/package/src/fpsql/__init__.py new file mode 100644 index 0000000..8157e09 --- /dev/null +++ b/package/src/fpsql/__init__.py @@ -0,0 +1,177 @@ +"""Firepup650's SQL Package""" +import sqlite3, ast, pydoc + + +def alias(Function): + def decorator(f): + f.__doc__ = ( + "This method is an alias of the following method:\n\n" + + pydoc.text.document(Function) + ) + return f + + return decorator + + +__VERSION__ = "1.0.26" +__NEW__ = "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 interactive help." +__LICENSE__ = "MIT" + + +class sql: + def addTable(self, tableName: str, mode: int = 0, address: str = "") -> None: + """# Function: sql.addTable + Adds a table to the database + # Inputs: + tableName: str - The name of the table to create + mode: int - Not yet implemented + address: str - Not yet implemented + + # Returns: + None + + # Raises: + None""" + self.__con.execute( + f"""CREATE TABLE IF NOT EXISTS "{tableName}" + (id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + value TEXT NOT NULL)""" + ) + self.__con.commit() + self.__table = tableName + + def __init__(self, filename: str): + """# Function: sql.__init__ + Constructs an SQL instance + # Inputs: + filename: str - The name of the database file to connect to (or `:memory:`) + + # Returns: + None + + # Raises: + None""" + if filename.endswith(".db") or filename == ":memory:": + self.__db = filename + else: + self.__db = filename + ".db" + self.__con = sqlite3.connect(self.__db) + self.addTable("default") + + def setTable(self, tableName: str) -> None: + """# Function: sql.setTable + Sets the currently active table + # Inputs: + tableName: str - The name of the table to use + + # Returns: + None + + # Raises: + None""" + self.__table = tableName + + def get(self, name: str) -> object or None: + """# Function: sql.get + Gets the value of a key + # Inputs: + name: str - The name of the key to retrieve + + # Returns: + object or None - If the key exists, return it's value, otherwise, return `None` + + # Raises: + AttributeError - If the table is unset""" + if not self.__table: + raise AttributeError("Attempted to read from unset table") + cur = self.__con.execute( + f"""SELECT value FROM "{self.__table}" WHERE name = ?""", (name,) + ) + data = cur.fetchone() + if data: + try: + return ast.literal_eval(data[0]) + except: + return data[0] + return None + + def set(self, name: str, value: object) -> int: + """# Function: sql.set + Sets the value of a key + # Inputs: + name: str - The name of the key to set + value: object - The value of the key + + # Returns: + int - `1` if the key was created, `2` if it was updated + + # Raises: + AttributeError - If the table is unset""" + if not self.__table: + raise AttributeError("Attempted to write to unset table") + if self.get(name): + self.__con.execute( + f"""UPDATE "{self.__table}" SET value = ? WHERE name = ?""", + (str(value), name), + ) + self.__con.commit() + return 2 + else: + self.__con.execute( + f"""INSERT INTO "{self.__table}" (name, value) VALUES (?, ?)""", + (name, str(value)), + ) + self.__con.commit() + return 1 + + def delete(self, name: str) -> None: + """# Function: sql.delete + Deletes a key from the table + # Inputs: + name: str - The name of the key to delete + + # Returns: + None + + # Raises: + AttributeError - If the table is unset""" + if not self.__table: + raise AttributeError("Attempted to delete from unset table") + if self.get(name): + self.__con.execute( + f"""DELETE FROM "{self.__table}" WHERE name = ?""", (name,) + ) + self.__con.commit() + + def delete_all(self) -> None: + """# Function: sql.delete_all + Deletes all keys from the table + # Inputs: + None + + # Returns: + None + + # Raises: + AttributeError - If the table is unset""" + if not self.__table: + raise AttributeError("Attempted to delete from unset table") + self.__con.execute(f"""DELETE FROM "{self.__table}" """) + self.__con.commit() + + def close(self) -> None: + """# Function: sql.close + Closes the database connection + # Inputs: + None + + # Returns: + None + + # Raises: + None""" + self.__con.close() + self.__con = None + self.__db = None + self.__table = None diff --git a/package/upload.sh b/package/upload.sh new file mode 100755 index 0000000..40e63dc --- /dev/null +++ b/package/upload.sh @@ -0,0 +1,7 @@ +echo "Formatting..." +black . > /dev/null +echo "Building..." +poetry build > /dev/null +echo "Uploading..." +python3 -m twine upload -r pypi dist/* +echo "Done!" \ No newline at end of file diff --git a/replit.nix b/replit.nix new file mode 100644 index 0000000..58a8fce --- /dev/null +++ b/replit.nix @@ -0,0 +1,22 @@ +{ pkgs }: { + deps = [ + pkgs.man-db + pkgs.less + pkgs.zip + pkgs.unzip + pkgs.python38Full + ]; + env = { + PYTHON_LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ + # Needed for pandas / numpy + pkgs.stdenv.cc.cc.lib + pkgs.zlib + # Needed for pygame + pkgs.glib + # Needed for matplotlib + pkgs.xorg.libX11 + ]; + PYTHONBIN = "${pkgs.python38Full}/bin/python3.8"; + LANG = "en_US.UTF-8"; + }; +} \ No newline at end of file