New Files
This commit is contained in:
parent
d948b35b57
commit
3e226a113e
14 changed files with 331 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
.cache/*
|
||||
.cache/**
|
||||
__pycache__/**
|
||||
.upm
|
||||
venv/**
|
||||
**/__pycache__/**
|
94
.replit
Normal file
94
.replit
Normal file
|
@ -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"]
|
2
.replit.backup
Normal file
2
.replit.backup
Normal file
|
@ -0,0 +1,2 @@
|
|||
run = "python main.py"
|
||||
entrypoint = "package/src/fpsql/__init__.py"
|
5
askpass.sh
Executable file
5
askpass.sh
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
case "$1" in
|
||||
Username*) exec echo "$NAME" ;;
|
||||
Password*) exec echo "$PASS" ;;
|
||||
esac
|
7
fix.sh
Executable file
7
fix.sh
Executable file
|
@ -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!"
|
4
git_log.txt
Normal file
4
git_log.txt
Normal file
|
@ -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
|
4
lspfix.sh
Executable file
4
lspfix.sh
Executable file
|
@ -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
|
BIN
package/dist/fpsql-1.0.1-py3-none-any.whl
vendored
Normal file
BIN
package/dist/fpsql-1.0.1-py3-none-any.whl
vendored
Normal file
Binary file not shown.
BIN
package/dist/fpsql-1.0.1.tar.gz
vendored
Normal file
BIN
package/dist/fpsql-1.0.1.tar.gz
vendored
Normal file
Binary file not shown.
0
package/requirements.txt
Normal file
0
package/requirements.txt
Normal file
3
package/setup.py
Normal file
3
package/setup.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from setuptools import setup
|
||||
|
||||
setup()
|
177
package/src/fpsql/__init__.py
Normal file
177
package/src/fpsql/__init__.py
Normal file
|
@ -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
|
7
package/upload.sh
Executable file
7
package/upload.sh
Executable file
|
@ -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!"
|
22
replit.nix
Normal file
22
replit.nix
Normal file
|
@ -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";
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue