From 9d2986ad5a7cf3558d20acd8c594d95a478011c3 Mon Sep 17 00:00:00 2001 From: externref Date: Fri, 16 Aug 2024 04:11:46 +0530 Subject: [PATCH 01/15] initialise rust rewrite --- .gitignore | 8 +- assets/peanut.png | Bin 36413 -> 0 bytes data/databases/.gitkeep | 0 docs/assets/anya.png | Bin 78216 -> 0 bytes docs/assets/examples/create_schema.gif | Bin 52357 -> 0 bytes docs/assets/examples/display_schema.gif | Bin 41859 -> 0 bytes docs/assets/examples/insert.gif | Bin 32491 -> 0 bytes docs/assets/examples/select.gif | Bin 78395 -> 0 bytes docs/assets/peanut.png | Bin 7999 -> 0 bytes docs/assets/structure.png | Bin 180737 -> 0 bytes docs/commands.md | 108 -- docs/getting-started.md | 80 -- docs/index.md | 47 - mkdocs.yml | 34 - peanuts/__init__.py | 39 - peanuts/__main__.py | 26 - peanuts/cli/session.py | 162 --- peanuts/server/server.py | 0 poetry.lock | 1239 ----------------------- pyproject.toml | 41 - src/cache.py | 22 - src/common.py | 30 - src/main.py | 62 -- src/schema.py | 135 --- 24 files changed, 3 insertions(+), 2030 deletions(-) delete mode 100644 assets/peanut.png delete mode 100644 data/databases/.gitkeep delete mode 100644 docs/assets/anya.png delete mode 100644 docs/assets/examples/create_schema.gif delete mode 100644 docs/assets/examples/display_schema.gif delete mode 100644 docs/assets/examples/insert.gif delete mode 100644 docs/assets/examples/select.gif delete mode 100644 docs/assets/peanut.png delete mode 100644 docs/assets/structure.png delete mode 100644 docs/commands.md delete mode 100644 docs/getting-started.md delete mode 100644 docs/index.md delete mode 100644 mkdocs.yml delete mode 100644 peanuts/__init__.py delete mode 100644 peanuts/__main__.py delete mode 100644 peanuts/cli/session.py delete mode 100644 peanuts/server/server.py delete mode 100644 poetry.lock delete mode 100644 pyproject.toml delete mode 100644 src/cache.py delete mode 100644 src/common.py delete mode 100644 src/main.py delete mode 100644 src/schema.py diff --git a/.gitignore b/.gitignore index bd95dc3..7a0ec7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -data/databases/* -!data/databases/.gitkeep -__pycache__/ -.cache/ -site/ \ No newline at end of file +# Added by cargo + +/target diff --git a/assets/peanut.png b/assets/peanut.png deleted file mode 100644 index ba999c328d9536e6bb16179520b94f6d59bb5631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36413 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 diff --git a/data/databases/.gitkeep b/data/databases/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docs/assets/anya.png b/docs/assets/anya.png deleted file mode 100644 index a93559bf3d220b0fd2e937da4037d469d0f9c1a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78216 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%0DI>Ax#T_+-YY56gRf#1Z(iHVM$;L^ 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�z?`CVSsA4B1F(9Q% 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 diff --git a/docs/assets/examples/display_schema.gif b/docs/assets/examples/display_schema.gif deleted file mode 100644 index 58a0143540f3ac1b695a5768680101452dc1da88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41859 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∨d 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 ZtfT2cZ##j)r5O0;v*Fhr@;4e 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 D73kHY diff --git a/docs/assets/examples/select.gif b/docs/assets/examples/select.gif deleted file mode 100644 index 6a5b6ec3204667d75ea1c1cfec8f59428e62f766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78395 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 GpR56;@;sIR diff --git a/docs/assets/peanut.png b/docs/assets/peanut.png deleted file mode 100644 index c2212ef592b19b28ae136ab64bf94e181fd83d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7999 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 diff --git a/docs/assets/structure.png b/docs/assets/structure.png deleted file mode 100644 index 8915e87e0787daab77a7666cf9d5b47a1197fb2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180737 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­?9kmC4tejV*Q1cXfXJMybj}19@eKf8>{zPxzzTm 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 D=JX^M diff --git a/docs/commands.md b/docs/commands.md deleted file mode 100644 index 245724f..0000000 --- a/docs/commands.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -description: Guide through all the commands available in the database system ---- - -# Commands - -Here's a list of all the available commands in the database - -## Schema and core operations. - -### `!help` - -Displays all commands info. - -### `!quit` - -Quits the CLI. Aliases: `!q`, `:q`, `:quit` - -### `!create_schema` - -Creates a new [schema](getting-started.md#schema) - -**Syntax** -```json -!create_schema ; - -// example: -!create_schema studentinfo { - "name": "string", - "age": "number" -}; -``` - -

- -

- -### `!drop_schema` - -Drops an existing schema. - -**Syntax** -```json -!drop_schema ; - -// example: -!drop_schema studentinfo; -``` - -### `!display_schema` - -Displays data under an schema. - -**Syntax** -```json -!display_schema ; - -// example: -!display_schema studeinfo; -``` - -

- -

- - -### `!load_cache` - -Loads all the existing data into cache. This is optional and suggested only when large operations have to be performed. - -## Data related commands - -### `insert` - -Adds data to an schema with respect to provided ID - -**Syntax** -```json -insert [data_JSON]; - -// example: -insert studentinfo 1; // app will ask for further data -insert studentinfo 1 { - "name": "sarthak", - "age": 19 -}; -``` - -

- -

- - -### `select` - -Fetch data from the cache or the storage - -**Syntax** -```json -select ; - -// example: -select studentinfo 1; -``` - -

- -

diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100644 index 84a2b3e..0000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -description: Setting up and getting started with the database ---- - -The database is only available as a python package as of now, that can be downloaded from Github. - -### Requirements - -* [Python 3.8+](https://www.python.org/) - - Python comes pre-installed in most linux distros. You can install python for mac and windows from the official website. ([`Windows`](https://www.python.org/downloads/windows/), [`macOS`](https://www.python.org/downloads/macos/)). Make sure to install pip and add python to path. - -* [Poetry](https://python-poetry.org/) - - Poetry is a python packaging and dependency management tool. `peanuts` heavily rely on it for the CLI and dependencies. You can install it from PYPI. - ```sh - python -m pip install poetry - ``` - -* [Git (optional)](https://git-scm.com/) - - Git can be used to clone the repository to your device directly. Alternatively you can manually download code from github. - -### Setting up the project - -Clone the github repository using the git clone command and navigate into the project directory. - -```sh -git clone https://github.com/externref/peanuts -cd peanuts -``` - -!!! info - Alternatively you can download the project from Github from [here](https://codeload.github.com/externref/peanuts/zip/refs/heads/main) and unzip it to get the same output as `git clone` if you don't plan to contribute. - -To start with the database setup, install all the dependencies using `poetry install` command and enable the poetry venv using `poetry shell` - -```sh -[python -m] poetry install -[python -m] poetry shell -# you might have to use [python -m] based on your python installation -``` - -## The Database - -![](assets/structure.png) - -### Creating A Database - -Creating a database is a simple task, you just need to run the CLI with the database name -``` -[poetry run] peanuts -``` - -If the database does not exist it will be created and connected to, else a new database with that name will be created. - -### Schema - -Schemas defines the strucutre of the data type to save. It acts as an equivalent of a SQL table in this case scenario. This is a sample schema configuration: - -```json -{ - "name": "string", - "age": "integer" -} -``` - -The schema must be defined using a dictionary with name-type mapping, allowed types are: - -* `string`: For strings - -* `integer`: For integers - -* `float`: For floats - -* `bool`: For booleans - -* `a_`: For array of above types ( `a_string`, `a_bool`, etc...) - -You will learn how to create a new database in [commands](commands.md#create_schema) \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 20db9e8..0000000 --- a/docs/index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -description: A minimalist JSON based database for people who love peanuts :3 ( or not ) ---- - -# peanuts - -

- -

- - - - - - -
-A minimalist JSON based database for people who love peanuts :3 ( or not ) -

- -!!! warning - This database system is just a raw idea and prone to unexpected behaviour. - -[Getting Started](getting-started.md){ .md-button .md-button--primary } - -## About - -`peanuts` is a JSON based database system using file-name approach to store user data with strict schema checking and CLI flexibility. - -It uses simple SQL like syntax for querying and inserting data along-side a expressive CLI with helpful error messages in case you make a mistake while using the commands. - - -!!! note "How is the data stored?" - - The project comes with a `data` folder that stores all the data. The `databases` sub-directory stores all the database related content. - - For each database, a new directory is created under `data/databases` with this structure - - ```sh - └── data/databases - └── database_name # name of the database - ├── data # this is where data is stored - │ └── schema_name # schema related to the item - │ └── entry_id.pnuts.json # saved data with the unique ID - └── schemas # all schema structure are saved under this - └── schema_name.pnuts.json # json of a particular schema - ``` - diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 8216fcf..0000000 --- a/mkdocs.yml +++ /dev/null @@ -1,34 +0,0 @@ -site_name: peanuts -site_url: https://peanuts.externref.tech - -theme: - name: material - logo: assets/peanut.png - favicon: assets/peanut.png - palette: - - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to light mode - - - scheme: default - toggle: - icon: material/brightness-7 - name: Switch to dark mode - -plugins: - - social: - cards_color: - fill: "#bf9674" - text: "#131314" - -nav: - - 'Welcome!': 'index.md' - - 'Getting Started': 'getting-started.md' - - 'commands.md' - -markdown_extensions: - - admonition - - pymdownx.details - - pymdownx.superfences - - attr_list \ No newline at end of file diff --git a/peanuts/__init__.py b/peanuts/__init__.py deleted file mode 100644 index a2b4ff9..0000000 --- a/peanuts/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - -import sys - -from peanuts.cli.session import Session -from src.common import display_syntax - - -def main() -> None: - try: - session = Session(sys.argv[1]) - if len(sys.argv) > 2 and sys.argv[2] in ["--compile", "-c"]: - assert len(sys.argv) == 4 - session.run_command(sys.argv[3].split()[0], sys.argv[3].split()[1:]) - return - session.run_session() - except IndexError as e: - raise e - Session.console.print(display_syntax("peanuts", "peanuts [-c ]")) diff --git a/peanuts/__main__.py b/peanuts/__main__.py deleted file mode 100644 index d8ef48b..0000000 --- a/peanuts/__main__.py +++ /dev/null @@ -1,26 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - -from . import main - -if __name__ == "__main__": - main() diff --git a/peanuts/cli/session.py b/peanuts/cli/session.py deleted file mode 100644 index 1c2aaf2..0000000 --- a/peanuts/cli/session.py +++ /dev/null @@ -1,162 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - -from __future__ import annotations - -import json -import os -import typing - -import tabulate -from rich.console import Console - -from src.common import DataTypeConflictException, display_syntax -from src.main import Instance -from src.schema import SchemaTypeToPyT - -if os.name != "nt": - # readline module enables arrow actions etc in the terminal stdin - import readline # type: ignore # noqa: F401 - - -class Session: - dbname: str - app: Instance - console = Console() - - def __init__(self, dbname: str) -> None: - self.dbname = dbname - self.app = Instance(dbname) - - @staticmethod - def map_insert_to_json(items: dict[str, SchemaTypeToPyT]) -> str: - entries = {} - for key, tdata in items.items(): - ind = Session.console.input(f"[cyan][bold]{key} (type: {tdata}): [/bold][/cyan]") - if tdata == SchemaTypeToPyT.STRING: - entries[key] = ind - else: - - def verify_array(t: type, arr: list[typing.Any]) -> None: - for item in arr: - if not (isinstance(item, t)): - raise DataTypeConflictException(str(t), str(type(item))) # type: ignore - - data: typing.Any = json.loads(ind) - if tdata in ( - SchemaTypeToPyT.A_BOOL, - SchemaTypeToPyT.A_FLOAT, - SchemaTypeToPyT.A_INTEGER, - SchemaTypeToPyT.A_STRING, - ): - if tdata == SchemaTypeToPyT.A_STRING: - assert verify_array(str, data) - elif tdata == SchemaTypeToPyT.A_INTEGER: - assert verify_array(int, data) - elif tdata == SchemaTypeToPyT.A_FLOAT: - assert verify_array(float, data) - elif tdata == SchemaTypeToPyT.A_BOOL: - assert verify_array(bool, data) - elif tdata == SchemaTypeToPyT.BOOL and not isinstance(data, bool): - raise DataTypeConflictException("bool", str(type(data))) # type: ignore - elif tdata == SchemaTypeToPyT.INTEGER and not isinstance(data, int): - raise DataTypeConflictException("int", str(type(data))) # type: ignore - elif tdata == SchemaTypeToPyT.FLOAT and not isinstance(data, float): - raise DataTypeConflictException("float", str(type(data))) # type: ignore - entries[key] = data - - return json.dumps(entries) - - def run_command(self, action: str, restargs: list[str]) -> None: - if action == "!create_schema": - self.app.add_schema(restargs[0], " ".join(restargs[1:])) - elif action == "!drop_schema": - self.app.drop_schema(restargs[0]) - elif action == "!load_cache": - if len(restargs) == 0: - for schema in self.app.schemas.values(): - schema.cache.load() - else: - for sname in restargs: - try: - self.console.print(f"⌛[blue]Loading {sname} ...") - self.app.schemas[sname.strip()].cache.load() - except KeyError: - self.console.print(f"[red]No schema named [bold]{sname}[/bold] found.") - elif action == "!display_schema": - if len(restargs) != 1: - self.console.print(display_syntax("!display_schema", "!display_schema ")) - return - - assert self.app.schemas.get(restargs[0]), f"No schema named [bold]{restargs[0]}[/bold] found" - print( - tabulate.tabulate( - self.app.schemas[restargs[0]].display_dict(), - headers="keys", - tablefmt="rounded_grid", - numalign="right", - ) - ) - - elif action == "insert": - assert self.app.schemas.get(restargs[0]), f"No schema named [bold]{restargs[0]}[/bold] found" - if len(restargs) == 2: - try: - items = self.map_insert_to_json(self.app.schemas[restargs[0]].configs) - self.app.schemas[restargs[0]].write(restargs[1], items) - except DataTypeConflictException as e: - self.console.print(f"[red]{e}") - except json.decoder.JSONDecodeError: - self.console.print("[red]Invalid Input.") - return - self.app.schemas[restargs[0]].write(restargs[1], " ".join(restargs[2:])) - elif action == "select": - assert self.app.schemas.get(restargs[0]), f"No schema named {restargs[0]} found" - try: - data = self.app.schemas[restargs[0]].read(restargs[1]) - print(tabulate.tabulate(([k, v] for k, v in data.items()), tablefmt="rounded_grid")) - except FileNotFoundError: - self.console.print(f"[red]No data with ID {restargs[1]} found.") - - elif action in ["!q", "!quit", ":q", ":quit"]: - raise KeyboardInterrupt - else: - self.console.print("[red]Invalid Command, use [bold]!help[/bold] to get a list of available commands.") - - def run_session(self) -> None: - try: - self.console.print( - f" [bold][cyan]Welcome to peanuts 🥜, Connected to database: [bold]{self.dbname}[/bold][/cyan][/bold]" - ) - while True: - cmd = self.console.input("[bold][green]#[/green][/bold] ").strip() - - while not cmd.endswith(";"): - cmd += " " + self.console.input("[bold][green]>[/green][/bold] ").strip() - vals = cmd.strip(" ;").split() - args = [arg.strip() for arg in vals if arg != " "] - try: - self.run_command(vals[0], args[1:]) - except AssertionError as e: - self.console.print(f"[red]{e}") - except KeyboardInterrupt: - self.console.print("[green]Thanks for using [bold]peanuts[/bold]!") diff --git a/peanuts/server/server.py b/peanuts/server/server.py deleted file mode 100644 index e69de29..0000000 diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 36baee4..0000000 --- a/poetry.lock +++ /dev/null @@ -1,1239 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - -[[package]] -name = "anyio" -version = "4.4.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.8" -files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] - -[[package]] -name = "attrs" -version = "24.1.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.1.0-py3-none-any.whl", hash = "sha256:377b47448cb61fea38533f671fba0d0f8a96fd58facd4dc518e3dac9dbea0905"}, - {file = "attrs-24.1.0.tar.gz", hash = "sha256:adbdec84af72d38be7628e353a09b6a6790d15cd71819f6e9d7b0faa8a125745"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "babel" -version = "2.15.0" -description = "Internationalization utilities" -optional = false -python-versions = ">=3.8" -files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, -] - -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "capstone" -version = "5.0.1" -description = "Capstone disassembly engine" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "capstone-5.0.1-py3-none-macosx_10_9_universal2.whl", hash = "sha256:740a70624d3f258cf8503898dbfd968052c008ddd4fc4ab938c7046c8828c294"}, - {file = "capstone-5.0.1-py3-none-manylinux1_i686.manylinux_2_5_i686.whl", hash = "sha256:3f34a949699c298e88d7c9a576a2fd7685dba658a9c432bce826eeb88676cf24"}, - {file = "capstone-5.0.1-py3-none-manylinux1_i686.whl", hash = "sha256:08f16c2782e54d05c95f1d40e1ae0e58e4a57d6a6c3192f8c5ff61476f4130de"}, - {file = "capstone-5.0.1-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ea8d0be06d2faa39545937fe88db239fd62227915f9744d8990439011c479f05"}, - {file = "capstone-5.0.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:04223a4e5c2374f21da59c5c5a5b90471bfcef5cb938e7b32de68579cf863b7a"}, - {file = "capstone-5.0.1-py3-none-win32.whl", hash = "sha256:4356bdee55639c4448d025dc9d8a3b6c07f2b188c62b88df3d554a84e2cd89af"}, - {file = "capstone-5.0.1-py3-none-win_amd64.whl", hash = "sha256:1bfa5c81e6880caf41a31946cd6d2d069c048bcc22edf121254b501a048de675"}, - {file = "capstone-5.0.1.tar.gz", hash = "sha256:740afacc29861db591316beefe30df382c4da08dcb0345a0d10f0cac4f8b1ee2"}, -] - -[[package]] -name = "certifi" -version = "2024.7.4" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -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.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[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 = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "fastapi" -version = "0.112.0" -description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -optional = false -python-versions = ">=3.8" -files = [ - {file = "fastapi-0.112.0-py3-none-any.whl", hash = "sha256:3487ded9778006a45834b8c816ec4a48d522e2631ca9e75ec5a774f1b052f821"}, - {file = "fastapi-0.112.0.tar.gz", hash = "sha256:d262bc56b7d101d1f4e8fc0ad2ac75bb9935fec504d2b7117686cec50710cf05"}, -] - -[package.dependencies] -pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -starlette = ">=0.37.2,<0.38.0" -typing-extensions = ">=4.8.0" - -[package.extras] -all = ["email_validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] -standard = ["email_validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"] - -[[package]] -name = "fishhook" -version = "0.3.2" -description = "Allows for runtime hooking of static class functions" -optional = false -python-versions = ">=3.8" -files = [ - {file = "fishhook-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:078bbd846006c0c7619b3c7df777cc67280cdb9fe1e930caaf1165678228330d"}, - {file = "fishhook-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66d5ab9fd6b89107524ccbe106a987f7e39f322f5a924f6d5312c9a27e82aeda"}, - {file = "fishhook-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea1d08716d078f00e70a3f2539db775d91703caba083decd78fcc3ee3a88e514"}, - {file = "fishhook-0.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7f8f8724f0adfcc38815f38647e1aaa67a5522db45c346bb62bd6da4bdad5272"}, - {file = "fishhook-0.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dfb793d1beed5c9bfaffab9e75ddb8efeeadbb4c74c8b86b8e1b25b4cbeedff3"}, - {file = "fishhook-0.3.2-cp310-cp310-win32.whl", hash = "sha256:3116d11d605241e4b0b5c78791905994fda9fe9a79d2c30522c928acfd12ec7a"}, - {file = "fishhook-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:63a54688c58539aa3eadc3a69eb5932cdb9508b94e5b8351eac06eb9a6946b1b"}, - {file = "fishhook-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3ee718a0809e554404a8ebcfa81e202f18b97d3ef1eb7a52f02440abc62aa3bf"}, - {file = "fishhook-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76ca3cead5709399037fac00cb6c0449dcfeb53ec39bff79f58147a7d186d9f2"}, - {file = "fishhook-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57404083d232af30083571a7447df26fbf18fb58bf444f1ced9dedbe3a228ae0"}, - {file = "fishhook-0.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d64a784b05ad60e11c99fba3cd17385b798705d4f944a7947537a52aaacbac78"}, - {file = "fishhook-0.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60135907097e30cabef1a96a4a6a71988dee66fb718a5dff487c9adbe6f4dff6"}, - {file = "fishhook-0.3.2-cp311-cp311-win32.whl", hash = "sha256:f1a04d64e314ec6aaf50220fb4017749f87815265ba990c48b12cb545dec945b"}, - {file = "fishhook-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:c8d025fddd38b324b3c5a2ad67f1892cb7c736ee966120710743344e16ac8730"}, - {file = "fishhook-0.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:28c969cb72bd5cae364befc5b8c8ed7f8109a0c73f4dc033ec2d74e41ddf8565"}, - {file = "fishhook-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3edf9bb596813fba3bb141c3efb4d66343316f961eb52514813bb203e55c4ced"}, - {file = "fishhook-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1d8951906f421a1cdb74522176e99f6a1dbf89b1fd976e7e0c9d1dac4b48c22"}, - {file = "fishhook-0.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b6378512de7112ce22921c080068a23d0767109f1d5e3830ff8f2e08354479c5"}, - {file = "fishhook-0.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac4cf5ad1be33b6ffc05e57d9446c498ca99c9e542f3832f328d381366c9294b"}, - {file = "fishhook-0.3.2-cp312-cp312-win32.whl", hash = "sha256:23e553a4f692515ca87bbc8a4e4d5fbdd557b5b8c4be9dc00838182aeb6e5f58"}, - {file = "fishhook-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:081a895f41a961881b687487fcb8d74b044791f00b390073b2f5ad704a385fcf"}, - {file = "fishhook-0.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db217e150ad1e0f7fea2010474e98a1a69e0157a1f028ab114a7eb7c0dd704f"}, - {file = "fishhook-0.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12de15eb9d31b6456595af1f6e987ce55d104c97349bdb503c067fc5f017ec73"}, - {file = "fishhook-0.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:215461c2fb4bbf898855827de9f7675c250367dc5ce03cb3f69d60febc375782"}, - {file = "fishhook-0.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a59ffeab407d6a08ab9128fc85a9767b6e331d04c12ef2f5b5c306acc61292fc"}, - {file = "fishhook-0.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7989362525d7750fc807c58614604602b50748d11a002baecbe76604b1ec5b"}, - {file = "fishhook-0.3.2-cp38-cp38-win32.whl", hash = "sha256:3dd8229a9dd230f95539b5f30b30fe373a2cac9407e2dcce8a77af399318401f"}, - {file = "fishhook-0.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8398f3564d8aa3a13cf2df205aa45a7320094a8d6b4e05d0ed9b740a9e29fadf"}, - {file = "fishhook-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:65151d1d223c280a4f55b8bf4968eab91965750edd8b973935f9fa461c3b206a"}, - {file = "fishhook-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef5fb0563680d602d030b2aefddcff2a81d380f0d3b55130f6609d82e5b8723e"}, - {file = "fishhook-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c381abd6993d4503c2011b96401dc63f5e3e7e2379252fd5dc3ca15bf815e903"}, - {file = "fishhook-0.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c243f9467018827a9be04e642d76ca89226a804df6e8331272a875732379d36"}, - {file = "fishhook-0.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a34615393c32890939dc5ac04fe450a44f1ede7da8892f50c5335233f2f9b99c"}, - {file = "fishhook-0.3.2-cp39-cp39-win32.whl", hash = "sha256:c2f9b18f421819b6326fb9cad71df09a2b973ecb85bbdaf8dd8fae2f3fe7f0b4"}, - {file = "fishhook-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:f8236eac4b84fbc773016842afa1a5c402a48a26fee28e379e7b8eb793174805"}, - {file = "fishhook-0.3.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:85bfd2687835a2767fde6b85d5667c8f7511551c22cde09e7c318537aac1e7ca"}, - {file = "fishhook-0.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174126945adf70aef8dfded2d4e1b163840d86b69ff2c25cb863e61190bbc8c"}, - {file = "fishhook-0.3.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd8339ff34f3d38055140320ac9e41fbc702bc0987d556a07535d6a7141104fc"}, - {file = "fishhook-0.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f7b846977ac7e08addb8338f3e510e622fe45c292f1ce6380547a6cb86595ed4"}, - {file = "fishhook-0.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:59c6f4ff90ae13bfeddcba7087a7cc385379afda9a8a6cf6d7344c073d3fde05"}, - {file = "fishhook-0.3.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:960a840554177183104d9c210f87a4ac31722177965f587fe902d2f74721eb95"}, - {file = "fishhook-0.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:138452ca0ef1803cd3855a7604b2e71083634048c6d58bb93ac139d6ef13c7dd"}, - {file = "fishhook-0.3.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4a85e99e34395e78646d37b05cb3e7d6e0dbbdc8de36402d94e1d2c90a13af1c"}, - {file = "fishhook-0.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0b6b6884421dd0839c2260d6acbc0e84df964a0c5d42118548f504917785f43e"}, - {file = "fishhook-0.3.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b015892a975100ca039f1503f43116df8e16574fbb54a42030db1b27b5520ee"}, - {file = "fishhook-0.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0691480409c680c301bf76d2f2f1ad451992896d26af9eb4cd04066cf3870ca6"}, - {file = "fishhook-0.3.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:bc49942c9d89866640cfff8ef1ea866b14e21aaedbb01d774126fe3033c2d0a0"}, - {file = "fishhook-0.3.2.tar.gz", hash = "sha256:9c0b04769c89d7bcf957e6f32fee100df2c0f523aa1d0f9fa2bf8621d3f48bcb"}, -] - -[package.dependencies] -capstone = "*" -keystone-engine = "*" - -[[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." -optional = false -python-versions = "*" -files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] - -[package.dependencies] -python-dateutil = ">=2.8.1" - -[package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] - -[[package]] -name = "idna" -version = "3.7" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, -] - -[[package]] -name = "importlib-metadata" -version = "8.2.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-8.2.0-py3-none-any.whl", hash = "sha256:11901fa0c2f97919b288679932bb64febaeacf289d18ac84dd68cb2e74213369"}, - {file = "importlib_metadata-8.2.0.tar.gz", hash = "sha256:72e8d4399996132204f9a16dcc751af254a48f8d1b20b9ff0f98d4a8f901e73d"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "isort" -version = "5.13.2" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, - {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, -] - -[package.extras] -colors = ["colorama (>=0.4.6)"] - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "keystone-engine" -version = "0.9.2" -description = "Keystone assembler engine" -optional = false -python-versions = "*" -files = [ - {file = "keystone-engine-0.9.2.tar.gz", hash = "sha256:2f7af62dab0ce6c2732dbb4f31cfa2184a8a149e280b96b92ebc0db84c6e50f5"}, - {file = "keystone_engine-0.9.2-py2.py3-none-macosx_10_14_x86_64.whl", hash = "sha256:dafcc3d9450c239cbc54148855b79c4b387777099c6d054005c835768cf955f2"}, - {file = "keystone_engine-0.9.2-py2.py3-none-manylinux1_i686.whl", hash = "sha256:9e04dea5a2b50509b7b707abdb395de42772c40faa36131ea94482fba8dd5d9f"}, - {file = "keystone_engine-0.9.2-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:5a5316a34323620b1bba31dcfe9e4b4ca6f0c030e82fc7a151da7c8fbe81a379"}, - {file = "keystone_engine-0.9.2-py2.py3-none-win32.whl", hash = "sha256:9f81e480904a405ef008f1d9f0e4a05e37d2bd83c5218a27136e1a294b02c1f6"}, - {file = "keystone_engine-0.9.2-py2.py3-none-win_amd64.whl", hash = "sha256:c91db1ff16d9d094e00d1827107d1b4afd5e63ce19b491a0140e660635000e8b"}, -] - -[[package]] -name = "markdown" -version = "3.6" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, - {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] - -[[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 = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[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 = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -optional = false -python-versions = ">=3.6" -files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] - -[[package]] -name = "mkdocs" -version = "1.6.0" -description = "Project documentation with Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, - {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, -] - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -jinja2 = ">=2.11.1" -markdown = ">=3.3.6" -markupsafe = ">=2.0.1" -mergedeep = ">=1.3.4" -mkdocs-get-deps = ">=0.2.0" -packaging = ">=20.5" -pathspec = ">=0.11.1" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] - -[[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, - {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} -mergedeep = ">=1.3.4" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" - -[[package]] -name = "mkdocs-material" -version = "9.5.31" -description = "Documentation that simply works" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs_material-9.5.31-py3-none-any.whl", hash = "sha256:1b1f49066fdb3824c1e96d6bacd2d4375de4ac74580b47e79ff44c4d835c5fcb"}, - {file = "mkdocs_material-9.5.31.tar.gz", hash = "sha256:31833ec664772669f5856f4f276bf3fdf0e642a445e64491eda459249c3a1ca8"}, -] - -[package.dependencies] -babel = ">=2.10,<3.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.0,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -regex = ">=2022.4" -requests = ">=2.26,<3.0" - -[package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -description = "Extension pack for Python Markdown and MkDocs Material." -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "paginate" -version = "0.5.6" -description = "Divides large result sets into pages for easier browsing" -optional = false -python-versions = "*" -files = [ - {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "platformdirs" -version = "4.2.2" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, -] - -[package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] - -[[package]] -name = "pydantic" -version = "2.8.2" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, -] - -[package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.20.1" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] - -[package.extras] -email = ["email-validator (>=2.0.0)"] - -[[package]] -name = "pydantic-core" -version = "2.20.1" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pymdown-extensions" -version = "10.9" -description = "Extension pack for Python Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pymdown_extensions-10.9-py3-none-any.whl", hash = "sha256:d323f7e90d83c86113ee78f3fe62fc9dee5f56b54d912660703ea1816fed5626"}, - {file = "pymdown_extensions-10.9.tar.gz", hash = "sha256:6ff740bcd99ec4172a938970d42b96128bdc9d4b9bcad72494f29921dc69b753"}, -] - -[package.dependencies] -markdown = ">=3.6" -pyyaml = "*" - -[package.extras] -extra = ["pygments (>=2.12)"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] - -[package.dependencies] -pyyaml = "*" - -[[package]] -name = "regex" -version = "2024.7.24" -description = "Alternative regular expression module, to replace re." -optional = false -python-versions = ">=3.8" -files = [ - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, - {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, - {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, - {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, - {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, - {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, - {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, - {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, - {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, - {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, - {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, - {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[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 = "rich" -version = "13.7.1" -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.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, -] - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "ruff" -version = "0.5.6" -description = "An extremely fast Python linter and code formatter, written in Rust." -optional = false -python-versions = ">=3.7" -files = [ - {file = "ruff-0.5.6-py3-none-linux_armv6l.whl", hash = "sha256:a0ef5930799a05522985b9cec8290b185952f3fcd86c1772c3bdbd732667fdcd"}, - {file = "ruff-0.5.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b652dc14f6ef5d1552821e006f747802cc32d98d5509349e168f6bf0ee9f8f42"}, - {file = "ruff-0.5.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:80521b88d26a45e871f31e4b88938fd87db7011bb961d8afd2664982dfc3641a"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9bc8f328a9f1309ae80e4d392836e7dbc77303b38ed4a7112699e63d3b066ab"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d394940f61f7720ad371ddedf14722ee1d6250fd8d020f5ea5a86e7be217daf"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111a99cdb02f69ddb2571e2756e017a1496c2c3a2aeefe7b988ddab38b416d36"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e395daba77a79f6dc0d07311f94cc0560375ca20c06f354c7c99af3bf4560c5d"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c476acb43c3c51e3c614a2e878ee1589655fa02dab19fe2db0423a06d6a5b1b6"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2ff8003f5252fd68425fd53d27c1f08b201d7ed714bb31a55c9ac1d4c13e2eb"}, - {file = "ruff-0.5.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c94e084ba3eaa80c2172918c2ca2eb2230c3f15925f4ed8b6297260c6ef179ad"}, - {file = "ruff-0.5.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f77c1c3aa0669fb230b06fb24ffa3e879391a3ba3f15e3d633a752da5a3e670"}, - {file = "ruff-0.5.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f908148c93c02873210a52cad75a6eda856b2cbb72250370ce3afef6fb99b1ed"}, - {file = "ruff-0.5.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:563a7ae61ad284187d3071d9041c08019975693ff655438d8d4be26e492760bd"}, - {file = "ruff-0.5.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:94fe60869bfbf0521e04fd62b74cbca21cbc5beb67cbb75ab33fe8c174f54414"}, - {file = "ruff-0.5.6-py3-none-win32.whl", hash = "sha256:e6a584c1de6f8591c2570e171cc7ce482bb983d49c70ddf014393cd39e9dfaed"}, - {file = "ruff-0.5.6-py3-none-win_amd64.whl", hash = "sha256:d7fe7dccb1a89dc66785d7aa0ac283b2269712d8ed19c63af908fdccca5ccc1a"}, - {file = "ruff-0.5.6-py3-none-win_arm64.whl", hash = "sha256:57c6c0dd997b31b536bff49b9eee5ed3194d60605a4427f735eeb1f9c1b8d264"}, - {file = "ruff-0.5.6.tar.gz", hash = "sha256:07c9e3c2a8e1fe377dd460371c3462671a728c981c3205a5217291422209f642"}, -] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "starlette" -version = "0.37.2" -description = "The little ASGI library that shines." -optional = false -python-versions = ">=3.8" -files = [ - {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, - {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, -] - -[package.dependencies] -anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} - -[package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] - -[[package]] -name = "tabulate" -version = "0.9.0" -description = "Pretty-print tabular data" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, - {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, -] - -[package.extras] -widechars = ["wcwidth"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "urllib3" -version = "2.2.2" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "watchdog" -version = "4.0.1" -description = "Filesystem events monitoring" -optional = false -python-versions = ">=3.8" -files = [ - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, - {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, - {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, - {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, - {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "zipp" -version = "3.19.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, -] - -[package.extras] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.8" -content-hash = "f01844472d53a36a34300ab3c10cbbcbb45a352a73833057322fc95c078ab7bf" diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index cea4884..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,41 +0,0 @@ -[project] -requires-python = ">=3.8" - -[tool.ruff] -line-length = 120 - -[tool.ruff.format] -indent-style = "space" - -[tool.poetry] -name = "peanuts" -version = "0.0.1a" -description = "A file based database system." -authors = ["externref "] -license = "MIT" -readme = "README.md" - -[tool.poetry.dependencies] -python = "^3.8" -attrs = "^24.1.0" -fishhook = "^0.3.2" -tabulate = "^0.9.0" -rich = "^13.7.1" - -[tool.poetry.group.server.dependencies] -fastapi = "^0.112.0" - -[tool.poetry.group.dev.dependencies] -ruff = "^0.5.6" -isort = "^5.13.2" - -[tool.poetry.group.docs.dependencies] -mkdocs-material = "^9.5.31" - - -[tool.poetry.scripts] -peanuts = 'peanuts:main' - -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" diff --git a/src/cache.py b/src/cache.py deleted file mode 100644 index 3468eac..0000000 --- a/src/cache.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import annotations - -import json -import os -import typing - -if typing.TYPE_CHECKING: - from src.schema import Schema - - -class Cache: - schema: Schema - storage: dict[str, dict[str, typing.Any]] - - def __init__(self, inst: Schema) -> None: - self.schema = inst - self.storage = {} - - def load(self) -> None: - for item in os.listdir(self.schema.storage_path): - with open(self.schema.storage_path / item) as file: - self.storage[item] = json.load(file) diff --git a/src/common.py b/src/common.py deleted file mode 100644 index eba693e..0000000 --- a/src/common.py +++ /dev/null @@ -1,30 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - - -def display_syntax(cmd: str, valid: str) -> str: - return f"[red]Wrong usage of command {cmd}\n[bold]Correct Usage (<>: Required, []: Optional):[/bold][/red] [green]{valid}[/green]" - - -class DataTypeConflictException(Exception): - def __init__(self, exp: str, got: str) -> None: - super().__init__(f"Expected {exp}, got {got}") diff --git a/src/main.py b/src/main.py deleted file mode 100644 index dc14007..0000000 --- a/src/main.py +++ /dev/null @@ -1,62 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - -from __future__ import annotations - -import json -import os -import pathlib - -from src.schema import Schema - - -class Instance: - database_name: str - schemas: dict[str, Schema] - - def __init__(self, db_name: str) -> None: - self.database_name = db_name - if not ((dpath := pathlib.Path(f"data/databases/{db_name}")).exists() and dpath.is_dir()): - os.mkdir(f"data/databases/{db_name}") - os.mkdir(f"data/databases/{self.database_name}/data/") - os.mkdir(f"data/databases/{db_name}/schemas") - self.schemas = { - fname.split(".")[0]: Schema.from_str( - db_name, - fname.split(".")[0], - open(f"data/databases/{db_name}/schemas/{fname}").read(), - ) - for fname in os.listdir(f"data/databases/{db_name}/schemas") - } - - def drop_schema(self, name: str) -> None: - if not self.schemas.get(name): - Schema.console.print(f"[red]No schema named {name}") - return - self.schemas.pop(name) - os.remove(f"data/databases/{self.database_name}/schemas/{name}.pnuts.json") - os.rmdir(f"data/databases/{self.database_name}/data/{name}") - Schema.console.print(f"Schema {name} dropped.") - - def add_schema(self, name: str, data: str) -> None: - schema = Schema(self.database_name, name, json.loads(data)) - self.schemas[name] = schema.create() diff --git a/src/schema.py b/src/schema.py deleted file mode 100644 index 40e8248..0000000 --- a/src/schema.py +++ /dev/null @@ -1,135 +0,0 @@ -# MIT License - -# Copyright (c) 2024 sarthak - -# 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. - -from __future__ import annotations - -import enum -import json -import os -import pathlib -import string -import typing - -from rich.console import Console - -from src.cache import Cache -from src.common import display_syntax - -SchemaTypes = typing.Literal["string", "integer", "float", "bool", "a_string", "a_integer", "a_float", "a_bool"] - - -class SchemaTypeToPyT(enum.Enum): - STRING = "string" - INTEGER = "integer" - FLOAT = "float" - BOOL = "bool" - A_STRING = "a_string" - A_INTEGER = "a_integer" - A_FLOAT = "a_float" - A_BOOL = "a_bool" - - -class Schema: - database: str - name: str - raw_configs: dict[str, SchemaTypes] - configs: dict[str, SchemaTypeToPyT] - cache: Cache - console = Console() - - def __init__(self, dbname: str, schema_name: str, schema_data: dict[str, SchemaTypes]) -> None: - self.database = dbname - self.name = schema_name - self.raw_configs = schema_data - self.cache = Cache(self) - self.configs = {name: SchemaTypeToPyT(t.lower()) for name, t in schema_data.items()} - - def __repr__(self) -> str: - return json.dumps(self.raw_configs, indent=4) - - @classmethod - def from_str(cls, db_name: str, schema_name: str, data: str) -> Schema: - return cls(db_name, schema_name, json.loads(data)) - - @property - def storage_path(self) -> pathlib.Path: - return pathlib.Path(f"data/databases/{self.database}/data/{self.name}") - - def create(self) -> Schema: - with open(f"data/databases/{self.database}/schemas/{self.name}.pnuts.json", "w") as schemafile: - schemafile.write(json.dumps(self.raw_configs, indent=4)) - - os.mkdir(f"data/databases/{self.database}/data/{self.name}") - self.console.print(f"[green]Schema [bold]{self.name}[/bold] created") - return self - - def validate(self, data: dict[str, typing.Any]) -> None: - assert set(self.raw_configs.keys()) == set(data.keys()), "Key mismatch" - - def verify_array(t: type, arr: list[typing.Any]) -> None: - for item in arr: - assert isinstance(item, t), f"Expected type {t} for {key}, got {type(item)}" - - for key, value in data.items(): - dtype = self.configs[key] - if dtype == SchemaTypeToPyT.STRING: - assert isinstance(value, str), f"Expected type {dtype} for {key}, got {type(value)}" - elif dtype == SchemaTypeToPyT.INTEGER: - assert isinstance(value, int), f"Expected type {dtype} for {key}, got {type(value)}" - elif dtype == SchemaTypeToPyT.FLOAT: - assert isinstance(value, float), f"Expected type {dtype} for {key}, got {type(value)}" - elif dtype == SchemaTypeToPyT.BOOL: - assert isinstance(value, bool), f"Expected type {dtype} for {key}, got {type(value)}" - elif dtype == SchemaTypeToPyT.A_STRING: - assert verify_array(str, value) - elif dtype == SchemaTypeToPyT.A_INTEGER: - assert verify_array(int, value) - elif dtype == SchemaTypeToPyT.A_FLOAT: - assert verify_array(float, value) - elif dtype == SchemaTypeToPyT.A_BOOL: - assert verify_array(bool, value) - - def write(self, id: str, payload: str) -> None: - if set(id) & set(string.ascii_letters + "1234567890-_") != set(id): - self.console.print(display_syntax("insert", "insert [data_JSON]")) - return - try: - self.validate(d := json.loads(payload)) - except AssertionError as e: - self.console.print(f"[red]{e}") - return - with open(f"data/databases/{self.database}/data/{self.name}/{id}.pnuts.json", "w") as datafile: - json.dump(d, datafile, indent=4) - self.console.print(f"[green]Written data for [bold]{id}[/bold] in [bold]{self.name}[/bold]") - - def read(self, id: str) -> dict[str, typing.Any]: - with open(f"data/databases/{self.database}/data/{self.name}/{id}.pnuts.json") as file: - return json.load(file) - - def display_dict(self) -> dict[str, list[typing.Any]]: - data: dict[str, list[typing.Any]] = {"id": []} - data.update({f"\033[1m{col}\033[0m": [] for col in self.configs.keys()}) - for file in self.storage_path.glob("*.pnuts.json"): - data["id"].append(file.name.split(".")[0]) - for key, value in json.loads(file.read_text()).items(): - data[f"\033[1m{key}\033[0m"].append(value) - return data From fb1167c17917c8feac5181799fee8b925cec5299 Mon Sep 17 00:00:00 2001 From: externref Date: Fri, 16 Aug 2024 04:12:05 +0530 Subject: [PATCH 02/15] setup project --- Cargo.lock | 7 +++++++ Cargo.toml | 6 ++++++ README.md | 16 ++++++++-------- 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f77f182 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "space" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..aeee403 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "space" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/README.md b/README.md index accc409..726f570 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# peanuts 🥜 +# space 🌌

- - + + - - -
-A minimalist JSON based database for people who love peanuts :3 ( or not ) + + +
+A minimalist JSON based database.

@@ -16,5 +16,5 @@ A minimalist JSON based database for people who love peanuts :3 ( or not ) > [!WARNING] > This database system is just a raw idea and prone to unexpected behaviour. -Documentation @ [https://peanuts.externref.tech](https://peanuts.externref.tech) +Documentation @ [https://space.externref.tech](https://space.externref.tech) From 5f4b93b32553002f4da2930b2c9c1ca4b27a30fc Mon Sep 17 00:00:00 2001 From: externref Date: Fri, 16 Aug 2024 04:12:30 +0530 Subject: [PATCH 03/15] add `database` and `schema` structs --- src/internals/database.rs | 58 ++++++++++++++++++++ src/internals/mod.rs | 24 ++++++++ src/internals/schema.rs | 112 ++++++++++++++++++++++++++++++++++++++ src/main.rs | 29 ++++++++++ 4 files changed, 223 insertions(+) create mode 100644 src/internals/database.rs create mode 100644 src/internals/mod.rs create mode 100644 src/internals/schema.rs create mode 100644 src/main.rs diff --git a/src/internals/database.rs b/src/internals/database.rs new file mode 100644 index 0000000..43b000a --- /dev/null +++ b/src/internals/database.rs @@ -0,0 +1,58 @@ +// MIT License + +// Copyright (c) 2024 sarthak + +// 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. + +use crate::fs_utils; + +use crate::internals::schema; + +pub struct Database { + name: String, + schemas: Vec, + path: std::path::PathBuf, +} + +impl Database { + /** + * loads all schema files from the database storage and adds it to the database instance. + */ + fn load_schemas(&self) {} + fn create_if_not_exist(&self) { + + if !(self.path.exists() & self.path.is_dir()) { + println!("Writing to {:?}", self.path); + std::fs::create_dir(self.path.clone()).unwrap(); + } + } + pub fn new(name: String) -> Database { + let schemas: Vec = vec![]; + let path = fs_utils::get_database_dir(name.to_string()); + let database = Database { + name, + schemas, + path, + }; + database.create_if_not_exist(); + + database.load_schemas(); + return database; + } +} diff --git a/src/internals/mod.rs b/src/internals/mod.rs new file mode 100644 index 0000000..f58bba8 --- /dev/null +++ b/src/internals/mod.rs @@ -0,0 +1,24 @@ +// MIT License + +// Copyright (c) 2024 sarthak + +// 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. + +pub mod database; +pub mod schema; diff --git a/src/internals/schema.rs b/src/internals/schema.rs new file mode 100644 index 0000000..c46fb86 --- /dev/null +++ b/src/internals/schema.rs @@ -0,0 +1,112 @@ +// MIT License + +// Copyright (c) 2024 sarthak + +// 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. + +use super::database::Database; + +enum DataType { + String, + Integer, + Float, + Bool, + ArrayString, + ArrayInteger, + ArrayFloat, + ArrayBool, +} + +pub(crate) struct Schema { + database: Database, + name: String, + raw_configs: std::collections::HashMap, + configs: std::collections::HashMap, +} + +impl Schema { + fn generate_configs( + raw_configs: &std::collections::HashMap, + ) -> std::collections::HashMap { + // let type_map = std::collections::HashMap::from([ + // ("string", DataType::String), + // ("integer", DataType::Integer), + // ("float", DataType::Float), + // ("bool", DataType::Bool), + // ("a_string", DataType::ArrayString), + // ("a_integer", DataType::Integer), + // ("a_float", DataType::ArrayFloat), + // ("a_bool", DataType::ArrayBool), + // ]); + let mut configs: std::collections::HashMap = + std::collections::HashMap::new(); + for (attr, val) in raw_configs.iter() { + let valid = [ + "string", + "integer", + "float", + "bool", + "a_string", + "a_integer", + "a_float", + "a_bool", + ]; + if !valid.contains(&val.as_str()) { + panic!("Invalid data type in schema: \"{}\"", val) + } + if val == "string" { + configs.insert(attr.to_string(), DataType::String); + } else if val == "integer" { + configs.insert(attr.to_string(), DataType::Integer); + } else if val == "float" { + configs.insert(attr.to_string(), DataType::Float); + } else if val == "bool" { + configs.insert(attr.to_string(), DataType::Bool); + } else if val == "a_string" { + configs.insert(attr.to_string(), DataType::ArrayString); + } else if val == "a_integer" { + configs.insert(attr.to_string(), DataType::ArrayInteger); + } else if val == "a_float" { + configs.insert(attr.to_string(), DataType::ArrayFloat); + } else if val == "a_bool" { + configs.insert(attr.to_string(), DataType::ArrayBool); + } + } + return configs; + } + + pub fn new( + self, + database:Database, + name: String, + raw_configs: std::collections::HashMap, + ) -> Schema { + let configs = Schema::generate_configs(&raw_configs); + return Schema { + database, + name, + raw_configs, + configs, + }; + } + + pub fn create(database: Database, name: String, configs: std::collections::HashMap ) -> Schema{ + todo!() + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..7e4591b --- /dev/null +++ b/src/main.rs @@ -0,0 +1,29 @@ +// MIT License + +// Copyright (c) 2024 sarthak + +// 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. + +mod internals; +mod fs_utils; + +fn main() { + let test_db = "database"; + let db = internals::database::Database::new(test_db.to_string()); +} From b39402cd9622ba16c8a4d8b68735b6c3dd11140f Mon Sep 17 00:00:00 2001 From: externref Date: Fri, 16 Aug 2024 04:12:43 +0530 Subject: [PATCH 04/15] add path related utils --- src/fs_utils.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/fs_utils.rs diff --git a/src/fs_utils.rs b/src/fs_utils.rs new file mode 100644 index 0000000..b298efd --- /dev/null +++ b/src/fs_utils.rs @@ -0,0 +1,54 @@ +// MIT License + +// Copyright (c) 2024 sarthak + +// 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. + +/** +Gets the path as [std::path::PathBuf] of the directory to use for data storage. +*/ +pub fn get_data_save_dir() -> std::path::PathBuf { + if cfg!(target_os = "linux") { + let xdg_dirs = std::env::var("HOME").unwrap(); + return std::path::PathBuf::from(format!( + "{}/.local/share/", + xdg_dirs.split(":").next().unwrap().to_owned(), + )); + } else if cfg!(target_os = "windows") { + let appdata = std::env::var("APPDATA").unwrap(); + return std::path::PathBuf::from(format!("{}/", appdata)); + } else if cfg!(target_os = "macos") { + let home = std::env::var("HOME").unwrap(); + return std::path::PathBuf::from(format!("{}/Library/Application Support/", home)); + } else { + return std::path::PathBuf::from(format!("data/database/")); + } +} + + +pub fn verify_setup(){ + let data_dir = get_data_save_dir(); +} + + +pub fn get_database_dir(dbname: String)-> std::path::PathBuf{ + let mut strgdir = get_data_save_dir(); + strgdir.push(dbname); + return strgdir; +} \ No newline at end of file From 0de3f2e129cf6d3d4fed86282b3b08d037c573e7 Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:33:13 +0530 Subject: [PATCH 05/15] add rust to recommended exts --- .vscode/extensions.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index e09074a..e3697c0 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,10 +1,5 @@ { "recommendations": [ - "ms-python.python", - "charliermarsh.ruff", - "redhat.vscode-yaml", - "eamodio.gitlens", - "ms-python.black-formatter", - "ms-python.isort" + "rust-lang.rust-analyzer", ] } \ No newline at end of file From 63b0022925e1422d4b390f8d9cc3e78d1906135e Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:33:33 +0530 Subject: [PATCH 06/15] add `hashmap_0` and `input_str` snippets --- .vscode/decs.code-snippets | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .vscode/decs.code-snippets diff --git a/.vscode/decs.code-snippets b/.vscode/decs.code-snippets new file mode 100644 index 0000000..c756bd1 --- /dev/null +++ b/.vscode/decs.code-snippets @@ -0,0 +1,19 @@ +{ + "add hashmap of string to a struct": { + "scope": "rust", + "prefix": "hashmap_0", + "body": [ + "let $0: std::collections::HashMap =", + " std::collections::HashMap::new();" + ], + "description": "adds a hashmap variable with string keys" + }, + "input a string": { + "scope": "rust", + "prefix": "input_str", + "body": [ + "let mut input = String::new();", + "std::io::stdin().read_line(&mut input).unwrap();" + ] + } +} \ No newline at end of file From 4db5e890762a552dd1a3d5340010d7eb2a0d92cc Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:34:35 +0530 Subject: [PATCH 07/15] implement command handler and cli loop --- src/internals/database.rs | 125 +++++++++++++++++++++++++++++++++----- 1 file changed, 110 insertions(+), 15 deletions(-) diff --git a/src/internals/database.rs b/src/internals/database.rs index 43b000a..3f021e8 100644 --- a/src/internals/database.rs +++ b/src/internals/database.rs @@ -20,39 +20,134 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -use crate::fs_utils; +use std::io::Write; +use crate::fs_utils; use crate::internals::schema; +#[derive(Clone)] +pub struct CommandHandler { + db_path: std::path::PathBuf, +} + +impl CommandHandler { + fn create_schema_command(&self, mut args: Vec<&str>) { + let schema_name = args.get(0).unwrap().to_string(); + args.remove(0); + let schema_data: std::collections::HashMap = + serde_json::from_str(args.join(" ").as_str()).unwrap(); + let mut path = self.db_path.clone(); + path.push(format!(".schemas/{}.space.json", schema_name.clone())); + let schema = schema::Schema::new(path, self.db_path.clone(), schema_name, schema_data); + schema.create(); + } + + #[allow(dead_code, unreachable_code, unused)] + fn interactive_write(&self, schema: &schema::Schema) { + todo!(); + let mut data: std::collections::HashMap = + std::collections::HashMap::new(); + for (name, dtype) in schema.configs.iter() { + let mut input = String::new(); + std::io::stdin().read_line(&mut input).unwrap(); + let convr: serde_json::Value = serde_json::from_str(&input).unwrap(); + data.insert(name.to_string(), convr); + } + } +} +#[derive(Clone)] pub struct Database { - name: String, - schemas: Vec, - path: std::path::PathBuf, + pub name: String, + pub schemas: std::collections::HashMap, + pub path: std::path::PathBuf, + pub command_handler: CommandHandler, } impl Database { /** * loads all schema files from the database storage and adds it to the database instance. */ - fn load_schemas(&self) {} - fn create_if_not_exist(&self) { - - if !(self.path.exists() & self.path.is_dir()) { - println!("Writing to {:?}", self.path); - std::fs::create_dir(self.path.clone()).unwrap(); + fn load_schemas(&mut self) { + let mut schemas = self.path.clone(); + schemas.push(".schemas"); + for _file in std::fs::read_dir(schemas).unwrap() { + let file = _file.unwrap(); + let raw_configs: std::collections::HashMap = serde_json::from_reader( + std::io::BufReader::new(std::fs::File::open(&file.path()).unwrap()), + ) + .unwrap(); + + let schema = schema::Schema::new( + file.path(), + self.path.clone(), + file.file_name().into_string().unwrap(), + raw_configs, + ); + self.schemas + .insert(schema.name.split(".").next().unwrap().to_string(), schema); } } pub fn new(name: String) -> Database { - let schemas: Vec = vec![]; + let schemas = std::collections::HashMap::new(); let path = fs_utils::get_database_dir(name.to_string()); - let database = Database { - name, + let command_handler = CommandHandler { + db_path: path.clone(), + }; + let mut database = Database { + name: name.clone(), schemas, path, + command_handler, }; - database.create_if_not_exist(); - + fs_utils::verify_setup(database.name.clone()); database.load_schemas(); return database; } + + #[allow(unused_mut)] + pub fn run_command(&self, command: &str, mut tokens: Vec<&str>) { + match command { + "!create_schema" => { + self.command_handler.create_schema_command(tokens); + } + _ => {} + } + } + + pub fn run(&self) { + clearscreen::clear().unwrap(); + color_print::cprintln!( + r#" ___ ____ ____ ____ ____ + /___)| _ \ / _ | / ___) / _ ) * ☀️ . +|___ || | | |( ( | |( (___ ( (/ / . 🌏 * ' +(___/ | ||_/ \_||_| \____) \____) * * + |_|"# + ); + + let mut cmd: String = String::new(); + color_print::cprintln!( + " Welcome to space-db, connected to [{}]", + self.name + ); + loop { + print!("> "); + cmd.clear(); + std::io::stdout().flush().unwrap(); + while !cmd.trim().ends_with(";") { + std::io::stdin().read_line(&mut cmd).unwrap(); + if [":q", ":quit", "!q", "!quit"].contains(&cmd.trim()) { + color_print::cprintln!("Thanks for using space 🌌"); + std::process::exit(0); + } + } + let mut tokens: Vec<&str> = cmd + .trim() + .strip_suffix(';') + .unwrap() + .split_whitespace() + .collect(); + let command = tokens.remove(0); + self.run_command(command, tokens); + } + } } From b252e0c77472f5e4d60672f5d841d7bdd574775c Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:34:51 +0530 Subject: [PATCH 08/15] edit path for data --- src/fs_utils.rs | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/fs_utils.rs b/src/fs_utils.rs index b298efd..c766e2f 100644 --- a/src/fs_utils.rs +++ b/src/fs_utils.rs @@ -23,7 +23,7 @@ /** Gets the path as [std::path::PathBuf] of the directory to use for data storage. */ -pub fn get_data_save_dir() -> std::path::PathBuf { +pub fn get_data_save_dir() -> std::path::PathBuf { if cfg!(target_os = "linux") { let xdg_dirs = std::env::var("HOME").unwrap(); return std::path::PathBuf::from(format!( @@ -31,24 +31,46 @@ pub fn get_data_save_dir() -> std::path::PathBuf { xdg_dirs.split(":").next().unwrap().to_owned(), )); } else if cfg!(target_os = "windows") { - let appdata = std::env::var("APPDATA").unwrap(); + let appdata: String = std::env::var("APPDATA").unwrap(); return std::path::PathBuf::from(format!("{}/", appdata)); } else if cfg!(target_os = "macos") { - let home = std::env::var("HOME").unwrap(); + let home: String = std::env::var("HOME").unwrap(); return std::path::PathBuf::from(format!("{}/Library/Application Support/", home)); } else { return std::path::PathBuf::from(format!("data/database/")); } } - -pub fn verify_setup(){ - let data_dir = get_data_save_dir(); +/** +Checks all the file system related setups needed for the db to function. +*/ +pub fn verify_setup(dbname: String) { + let mut data_dir = get_data_save_dir(); + data_dir.push(".space"); + if !data_dir.exists() { + std::fs::create_dir(&data_dir).unwrap(); + } + data_dir.push(dbname); + if !data_dir.exists() { + println!("{:?}", data_dir); + std::fs::create_dir(&data_dir).unwrap(); + } + if !data_dir.join("data").exists() { + std::fs::create_dir(&data_dir.join("data")).unwrap(); + } + data_dir.push(".schemas"); + if !data_dir.exists() { + std::fs::create_dir(&data_dir).unwrap(); + } } - -pub fn get_database_dir(dbname: String)-> std::path::PathBuf{ +/** +This is just appending the `.space/` to the PathBuf returned by [get_data_save_dir], +ideally after verifying the setup. +*/ +pub fn get_database_dir(dbname: String) -> std::path::PathBuf { let mut strgdir = get_data_save_dir(); + strgdir.push(".space"); strgdir.push(dbname); return strgdir; -} \ No newline at end of file +} From 45b1a9cdbeaadb121be16c6a4b4fb5a9cb3c214c Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:35:08 +0530 Subject: [PATCH 09/15] add `serde_json` and `color_print` to dependency --- Cargo.lock | 490 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 + 2 files changed, 494 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f77f182..f0403ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,496 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "clearscreen" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c" +dependencies = [ + "nix", + "terminfo", + "thiserror", + "which", + "winapi", +] + +[[package]] +name = "color-print" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee543c60ff3888934877a5671f45494dd27ed4ba25c6670b9a7576b7ed7a8c0" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ff1a80c5f3cb1ca7c06ffdd71b6a6dd6d8f896c42141fbd43f50ed28dcdb93" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "libc" +version = "0.2.156" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "serde" +version = "1.0.208" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.208" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.125" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "space" version = "0.1.0" +dependencies = [ + "clearscreen", + "color-print", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "2.0.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "terminfo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" +dependencies = [ + "dirs", + "fnv", + "nom", + "phf", + "phf_codegen", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "which" +version = "6.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075" +dependencies = [ + "either", + "home", + "rustix", + "winsafe", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" diff --git a/Cargo.toml b/Cargo.toml index aeee403..e4ca010 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,3 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] +clearscreen = "3.0.0" +color-print = "0.3.6" +serde = { version = "1.0.208", features = ["derive"]} +serde_json = "1.0.125" From fe7de8975f2ded47d3e423a9e21df1abb667c0b2 Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:35:22 +0530 Subject: [PATCH 10/15] update readme badges --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 726f570..12ac03c 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,9 @@

- - + - -
+
A minimalist JSON based database.

From c0010c774ef4cfc1fea7838105bf92aa2813c501 Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:35:38 +0530 Subject: [PATCH 11/15] add validation and input functions --- src/internals/schema.rs | 106 +++++++++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 13 deletions(-) diff --git a/src/internals/schema.rs b/src/internals/schema.rs index c46fb86..d7694d1 100644 --- a/src/internals/schema.rs +++ b/src/internals/schema.rs @@ -20,9 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -use super::database::Database; - -enum DataType { +#[derive(Clone, Debug)] +pub enum DataType { String, Integer, Float, @@ -32,12 +31,13 @@ enum DataType { ArrayFloat, ArrayBool, } - -pub(crate) struct Schema { - database: Database, - name: String, +#[derive(Clone, Debug)] +pub struct Schema { + pub name: String, + pub path: std::path::PathBuf, + database_path: std::path::PathBuf, raw_configs: std::collections::HashMap, - configs: std::collections::HashMap, + pub configs: std::collections::HashMap, } impl Schema { @@ -92,21 +92,101 @@ impl Schema { } pub fn new( - self, - database:Database, + path: std::path::PathBuf, + database_path: std::path::PathBuf, name: String, raw_configs: std::collections::HashMap, ) -> Schema { let configs = Schema::generate_configs(&raw_configs); return Schema { - database, + path, + database_path, name, raw_configs, configs, }; } + pub fn validate_input( + &self, + input: &std::collections::HashMap, + ) -> bool { + for (key, dtype) in &self.configs { + let value = input.get(key); + + let is_type_correct = match dtype { + DataType::String => value.unwrap().is_string(), + DataType::Integer => value.unwrap().is_i64(), + DataType::Float => value.unwrap().is_f64(), + DataType::Bool => value.unwrap().is_boolean(), + + _ => { + let val = value.unwrap(); + if !val.is_array() { + return false; + } + let internal_type_correct = match dtype { + DataType::ArrayString => { + for item in val.as_array().unwrap() { + if !item.is_string() { + return false; + } + } + true + } + DataType::ArrayInteger => { + for item in val.as_array().unwrap() { + if !item.is_i64() { + println!(" breaks here"); + return false; + } + } + true + } + DataType::ArrayFloat => { + for item in val.as_array().unwrap() { + if !item.is_f64() { + return false; + } + } + true + } + DataType::ArrayBool => { + for item in val.as_array().unwrap() { + if !item.is_boolean() { + return false; + } + } + true + } + _ => false, + }; + internal_type_correct + } + }; + if !is_type_correct { + return false; + } + } + return true; + } + + pub fn write(&self, id: String, data: std::collections::HashMap) { + if !self.validate_input(&data) { + panic!("invalid data input"); + } + std::fs::write( + self.database_path + .join(format!("data/{}/{}.space.json", self.name, id)), + serde_json::to_string_pretty(&data).unwrap(), + ) + .unwrap(); + } - pub fn create(database: Database, name: String, configs: std::collections::HashMap ) -> Schema{ - todo!() + pub fn create(&self) { + // add schema files under schemas folder + let json_data = serde_json::to_string_pretty(&self.raw_configs).unwrap(); + std::fs::write(self.path.clone(), json_data).unwrap(); + // create folder for schema data + std::fs::create_dir(self.database_path.join(format!("data/{}", self.name))).unwrap(); } } From aaeef27d7fc96d7bf915b8d589ee2cf59f3d477c Mon Sep 17 00:00:00 2001 From: externref Date: Mon, 19 Aug 2024 23:35:48 +0530 Subject: [PATCH 12/15] add tests --- src/main.rs | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 7e4591b..07e5b5a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,10 +20,79 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -mod internals; mod fs_utils; +mod internals; fn main() { - let test_db = "database"; - let db = internals::database::Database::new(test_db.to_string()); + let mut args = Vec::from_iter(std::env::args()); + let _exec_from = args.remove(0); + let db_name = args.remove(0); + let db = internals::database::Database::new(db_name); + db.run(); +} + +#[cfg(test)] +mod tests { + use crate::fs_utils; + use crate::internals; + + fn rm_schema_if_exists() { + let schema_file = fs_utils::get_database_dir(".space_tests".to_string()) + .join(".schemas/test_schema.space.json"); + let schema_dir = + fs_utils::get_database_dir(".space_tests".to_string()).join("data/test_schema"); + if schema_file.exists() { + std::fs::remove_file(schema_file).unwrap(); + } + if schema_dir.exists() { + std::fs::remove_dir_all(schema_dir).unwrap(); + } + } + + #[test] + fn create_schema() { + rm_schema_if_exists(); + let db = internals::database::Database::new(".space_tests".to_string()); + let schema_config: std::collections::HashMap = + std::collections::HashMap::from([ + ("name".to_string(), "string".to_string()), + ("marks".to_string(), "a_integer".to_string()), + ]); + let schema = internals::schema::Schema::new( + db.path.join(".schemas/test_schema.space.json"), + db.path, + "test_schema".to_string(), + schema_config.clone(), + ); + schema.create(); + let saved_file_data: std::collections::HashMap = + serde_json::from_str(std::fs::read_to_string(schema.path).unwrap().as_str()).unwrap(); + assert_eq!(schema_config, saved_file_data); + } + + #[test] + fn test_input_validation() { + let db: internals::database::Database = + internals::database::Database::new(".space_tests".to_string()); + let schema: &internals::schema::Schema = db.schemas.get("test_schema").unwrap(); + // schema.create(); + let invalid_input: std::collections::HashMap = + serde_json::from_str( + r#"{ + "name": "sarthak", + "marks": [1, "hello"] + }"#, + ) + .unwrap(); + let valid_input: std::collections::HashMap = + serde_json::from_str( + r#"{ + "name": "not sarthak", + "marks": [1, 2, 4, 5] + }"#, + ) + .unwrap(); + assert_eq!(schema.validate_input(&valid_input), true); + assert_eq!(schema.validate_input(&invalid_input), false); + } } From 5a114c875ac211dfbf2cdae9c4c093b23fc2ebb1 Mon Sep 17 00:00:00 2001 From: vidhyk Date: Tue, 20 Aug 2024 03:16:20 +0530 Subject: [PATCH 13/15] initialise docs --- src/docs/assets/space.png | Bin 0 -> 10143 bytes src/docs/commands.md | 0 src/docs/getting-started.md | 0 src/docs/index.md | 1 + src/mkdocs.yml | 34 ++++ src/poetry.lock | 371 ++++++++++++++++++++++++++++++++++++ src/pyproject.toml | 16 ++ 7 files changed, 422 insertions(+) create mode 100644 src/docs/assets/space.png create mode 100644 src/docs/commands.md create mode 100644 src/docs/getting-started.md create mode 100644 src/docs/index.md create mode 100644 src/mkdocs.yml create mode 100644 src/poetry.lock create mode 100644 src/pyproject.toml diff --git a/src/docs/assets/space.png b/src/docs/assets/space.png new file mode 100644 index 0000000000000000000000000000000000000000..8cde92c92504cd81ed24bb2edaa789a60c3e0ca0 GIT binary patch literal 10143 zcmbt)WmFtN+hyYt2tkHGa1X&5BzS@Z8-fLb69)I-E`bo-b#MuU1a}XT!QCZT(7<4W zJ3IN_-Sh2_-Tkw-Pgmcr=l1iIovyAr{V@0N2OyX8w6*{M6&2tG006kC6NQI0v^hl? z8DljK)i;U|IRFg}0MPpWSulA4z}~^tSwmi$UPo7t9%mImLmmGG6H}Lu|6%{f6s0;I_ue`n&EnY);xBuA)|*%=iaRVFeNC$szyfBug{|HH-qaSzvzt|*P#Kkoca zLk7joQ2e>&|Hh&J8#n#v{7)Z+(umvJx&4dv5C3XMVD6x$iMsx4A8Nn_&;aBC>3{V{ z-J{@`4*)OE001NIzw@9l0B8sS0E&hG&STC60HV(TP(S+LdH>xeA5EN1{>vREDn++I z^~&)#03g%_0Mao4z}NpT8!Gv~l#L!`qDGa=5p`Gsc7QoR4=4f-fGNO@V*CIvzy}CD z{03xD-TD8Ae@_1YJfNO_=m3aufj}S-1C0?tCq}~{Mtgt*w5Xb+qhtIVaQ_Rq*fYO2`(ua0|<|ikDQ75DZe@^Sm3p^ zNj&NqYSakDLPh*v4gmlQ7?1*x^GJ`i1%oTTll!$FXP!e~L~!pu zmQrh)D`+)crJ6CMa|8FhP%FQh!zzt6gO-$TW^43gW5csGgqEamFS1gr3>rrrHFdIM zRoulR93sum^3^sdrHOU671QXvq0rZKP25eAsk`xl;uSr58pZs)bpBbLoYd#yKe)hOBuTq}MDvr# z|6PFt@@o2){}DvwT)UYJZ_K)Ky!Fb9GC+KTbVqCIV4|x)c`nWYH0b^khkwoBFxJrN z_%W!z(#wI83QO;u54DSyO4ML=T~VEhw`d&a2fcC4$DAT*k&x59+tDjT%kcw16@;90 zKLj_-Es8X_Q$A_8F_f+$H>IA=5{~p1co{`zSV=)>13sn>Ez>CHcG}X z!re}6Qv;(KveFNLDs--GxUv@;1X~sk; ziP>f$bOIEr%P@F12?{Sp@TppdRk0?;3f0+4@Mx>rtg$8OSuk2OMGsp*S)u;jC0kNR z$r`>bDSuYeTgaI=h=|i>@rxU#Z;)I}QMimkgx{lLDcg+z31gVf)!dJ9$h2%FLQigA zNt?h&L;STar>wzd&Pqmth3ROSpDnS@-nA$U>9FkLV8=Sz-ME}G@b^XrQZA~lo={h~ z>1iJM8Ow1jn3!l`g|OpT{a_miOL*n{u=f`GKc^FHuZh z7LD`r>%9hw(MiSD?J4H)uSPlpFRP%8W_Fz2*dG!Yp%$MD?TPs$#UXC+osJ+*Dx5g^ zJUR)n*~x-}5=6kds>kK5wbRXfSS-+lo!fK5aQmO&YmJd%Vw2j!2Df*9r`s80i8NV!!C|VFRw7y;l=#^ z;&l;i?rh@)jfrhd{vqQt9nSNfrIFDeYem^+PUz0#+)b*QJnjH9ZL-uRmrSwOCjb+V$+9^^hK9G(6 zWop<-~KuTO5Ix_*;>?ZJY0#evpJ^NP7N-?iyzFild#}82?;( ziDfoKt{v_X#hTbTb3)q6j=MQI#j^+nlg8&*l$~OJ4MBR`kE9j#g+1XyA7(}Mu}qmf-i6SecV##%GcUQNjIs@_oJ_^oMU(f4l^!? zpQp%l1VnC{bFy5N7&6_lQMP6=B`afzg@4HNqoI+DCH+O`B?eN$#uZ6F+Rcsi;_w%| z#METgiFSQ4I|9yc=zCMF3;Uw0zJ|%rD=c1p-gO)aMC;94tvmq~KD>L=oaw%LL~9Hq z1%o7LFoz%yKnAnV1S=!k0_$n1XAUtbpI6!$;^aQ_gpODWE)Rpn8gKC5!e!;dbFO~= zWE+Be!g2(2_=pi;j@4T#FTyj|Gf=)Q1LtVr2ua*#^9Hc0)}%E7)sV8h%v6R_bU_ZbLq_T;uvRaq;7~ zslTf@wo6k-opn_DIjA=Ot-2tG7e0Nmb&s!1!2J2Z$pz`JcSyS8X0DuC23e9I`|FVm z+Goz$m}Fv2oRTV=8x8gJi|z^qxpfi0f^AJ z;q#m(m-giMviu04#bLf4yE@%)vv%-JIY5oEeOeDQw=0%st6oX{@9^)@gT}eF3406- zv`<5nC`(I!amOd2<@eB>#Fb`u=>_kU-lw*;TxKk0-|a(ht7m>`#*}plEdBAkZHP|{ zbD}v=d80)oJ-2~A-X9On3imkWcM1O*XKW_RnN%c;CtSCZE;VWSht5p$(XoR|cggL0 zkv|5uOfsP!F3K=liGoG@B`&g|a!pvc&|8+e`zpgAjzj|o$vXZ{4yzYyUP?Cnjyzc= z0`|sA$Oj-)u<=%m_4}X8&B1{V-@jGsU4xLa%7OW`9(Ef27OI|VgLtzasc)VLJG>29 zH|s1lF((k}gA+2x!L%?n@Yr?wGIW+#Ux}AQ((em++ub`MW4ewWfFz0WuFKJu`1bkk z4)dw2Wmdln6i{ps!d z&W^6G#23D^aCmQz?@$p@V$zswJatqk;Fu0=>(@^hfhQ<3Cw&2vsmq#qL7eg_nT3wY z)Cw14wQcGpHxegQ$0sSi*<7x^&s|^|;X|lag$b|E%!W0zhG9g$+VQFlFz>USVb=*7 zx*7hXe^)ZDx)cQtU~TnkSWCBh+N*OS$>F$XSOE%$rQeI#gULuXau#EJIX@fzmht^8 zmKFdSz3~W$@urxodES=yQ#ym`@=R*K9XYK&JJ##G90cN)COM<%5gk5IUWV2dvg>5% zo!55T>cNMLpp2}Rr86qcV0J_8=Nrbm$(-oZY0MA6r#{w7o%RE%YU}+608w%g^igSJ zO7D8D?2JdJdC-V)dbF(I%vSz@b2C4{Rml$ESOZ^ zFES#)HHf5^iz_UwRL+(d6!ss)5)%_&hlSnA%I`8&EXTxjlgQ?&zpBtY=v_=aP`x}S z6Xm0}ezyNwX7MKRSheW^$ZvM`C2w2 z8nyWH4kpf{wU@$}bBb806Q+G2`v@jJ`e>U9r5ml+vn8x9EE2Ht0Gh*py~ z2Ikeh7C*uwZ1H5yz|8jIjDkFSi(uEU{Xr&ji4jquFC5^~jqs+4yAL(&JvcOJjCHRQ zTk5^!;oQ#DqBZGh@jt{4Fh?_Ur2qMivVwUNaqODW<0CIpI6tW(NmFZ}$feD;CHw{; z6muRK_0a#c$<;LM<23A94z?iaoLpJgo458?4`spsV$v-un92KBIsA0bY4*TvMo=_x-ph>^Oh%U^XMnuVyYK;`Xi>~;Pjtwsi+%5i3D4Y+nCjK z7{J!Y<$Q*ZK0`!Fsw@VU!M!A&3%-OBt!P4|W`3RqS2VR(QpkEWe3#($^W=UJM!qv2 zX?HZSPMRNC>VH1(5EA?EL*QKj-;8?nRdSDS0={e2EV>nIxwU+nKX~6)4RX3?8*ma3 zxa?(?u75YHFGF)&Sdh6|MwsuMe_cdIQfV`m)RxLqwl(v)d0mfNIQItIej6qhBh+-k7H@(JvCq zJC~tnF_Zj6r&)A#u87YeAHP$kucw5Ix!+e?M z-_5@kylRoWWV)g3nQ~ulqQqsQ1>tX=2YjVN>Tt;CM?v1X8gVx15${O539b5dZQM1^ z)z4CV{2=nl+(0W&=DB3;0uQ>qR~_q$E{6tYKD`boe+;bsSrAX4iua3b58k7?>SVP7 zA71WWt2+qyLU@hEwM&Ve35bdIbuQKl+vHT_(><@<5!awn&huO2vA*?gh z?7zA#6!P4ye}|^t?~cA_v%6Ptc35Y57CYSD_ESm@eJ}& z{y58zk{j|KtWl20EnTHPX`@EXX+37v$0L>l)K%YMUxEpT2|3ODAf{-I6@WJGAlvLjb<>)s$(=$&_*Z&- zcL=&QeE|PZXK>;2`(Cj^WI!8Lrr~xpT&!@RTwz)N?Wzs;rslYTJF#8C&f<^ujBnXP zV+cNFw7p)HtRJa)nM!D#YsN&EJrcIEV|8goBk<__KHNll_4azR@MQsmOilVd6(PQ4 zz^R`EZj^6nvMa;(l$1qJr<3S)$fL3W1+?|04GZZGo$aB99Ym6u)6%_IUF=}u@Ywn@ z%CcZL6;HCQr~GoZf|i`t#c<-s)z(l45j}YVwfx2(N>?wSpQv!2ZQsTbbmvlD@6q)U z^4LT@04iG!JoWJ!ejczoi8gyMpM(Gn{3_!Zr|DKP2Grl=DHrwtv^nKhmxzNI5u?mA`-SgK~1AhEjCHaGZ#+{HMPXeno~Y2RNMj@5R<6`d6C^;ak*n zapuPkVnr|1D(kbAW$ZmoOtlfM;Tz8NUtCQ2^%N+RXwarUbpCWqYZtm{ItDj>*vgt( zkcmGbt9-J4g<#68m!e&#uvrQP5=0cPAAq0h6=J2+b0T_t+2>4jp|YAr1)Jhw)V7?l zBy}85Yq400kh&uKw5FpEKyx#`+K=f)S2h(p=rkYwzV01U7C z&9nsBc=g8$Z{#v;U`)|rELvgAj*`n=qvS-I=@-H&-9-}<_2DOLDRKdNS2=uZwt6dP zbj9a&?Z(?f_t%LGOIsYIhLFG%U;nUA<+$M|j#Hn)O@~x0;{#q;PEMr z&J0onkMckLbxVb?S;6-gx}e(5`6%q;HE;cEFd!0{aQsuT zWpv5oY4p0K%;45na=l+e8w+e>({2%wB9Pl}T;7B!&zehKbcQP2eugh!jxLpZ&C_nK z*M9rh;#2kVMuDC7s^?}>Uz14}XZ{D=k~9t~mC+Wl$F2!ZEK0;u!(!=1kcgo_z%2V-041z|-bl!>z zy@)}0yl<2^I^f|t7x^_>#k(f9+J>ykoW*-Fn0+|CHH@Q^HLj+d^J#vWsh_@C<-!U=xd?a|DXP&q!%BSz6tERwED8Bw^Yy;! zPHsNS1c?L?w-!Z6oISI>Hv!t&Q|+%{Z^%`^;sM&PmPdwp2dhfn(fk@Sc=3R`;H9g+>ar`D?%s za_so`@BSWBO>ga@ny^#mCbEg7XFT%NDVc8Z=URrPgKcN2M8CVuw&9H_O%9(H@eTWA zEj#!4Uyn1CHa9KGT$U-#A>so}*;ENr>|I&*ykf>PC2~#QK!rs$jh}}+@1_#H@7G6n zr^-sCwlCH!;aA~z@LnCok;}M(;rf|0B=~-AUf{CSD`)=+kE7IOEUmrN5BR9GD-pJ* z@h{4Sn8E^6Zf>Kmlos*TW-!L^ucQJmk^KxhdHnlvxf{uH1jNL05EUtvjudNTkUaA_ zWmHShcl+)qV2z?(0ZE`4z`1BOrg}Mwy-INWQ>yB_$48sc7p+HlT@<2dV`!kGA+F~L`r99uIvOBL1+K&AAzD+WcW-%9Tp$b%u|5Uf-MY?3 zLhh7jE?QN#N6TWAjqLQ{va073QkAaAXQ*#77qA$)sa;S1-8JoyPKv47vEs$w-Ru3Q zJtMmw4Pay2&*s}JOq7iyk}>sZF50G=2(2IsHlgoI?z1Z0OHez$a!}vPmM1Rd7;0@o z4*<c@y{N5U}cipu?C>g{9C1^iP zsiAVHc#ergeH`RCJpjv16D=*FWj*e7o(H>f!wc{+M-DBFVdfu_;Rh|R>bjkAb9Cix zrt%oj^)BfZUN1B>XiZgQp3ubnad|91-0%R9v`}Ygm05lXo`fFU~a|c@om5PErS*@sYnN&E@b02 zmIo7?i9NaV2GG1BV;r2EBk}}8pk>=^JNJ2oUgKfABiKiA`RBfSJC&<% z4qZcA_m;RAM;t+9g4>Db`OTG8E4<_ZAdjWg3b6;ugbY2}>Cu|7MVH4N7#1IU{oZml zST*>a`ti#-n6i7uHq2QiTVSL}thO?qD4CS*0bxWkdG9bO<8<-Sv(~ zuV?lwOBrnFyTm3cZa(Si5>-`{KK>$HM~OO>``s}JlGQcg6>pcxYtCu`IX0(s+I;uK z)DEBi1z_5I#T>jp{M#AF@JE`yH?EaUUi6OxBb65_DlFjN<^oktJt1@nrg<NLU0$(CsecHt6fiaKx)HWP(woq$Y=7N42ab~PcA;DR8~pyWzS?ml{9 zxTJp-eA)LZJM6>O=ElbElMUNL2DJ?|aIE(cT0YXdn4j<-f7y;uq}hBQ zUhvN54J$l2TOMO=k3^)T(mTqT_EjwPDAR%d!b&q|nY|vYW+=cabbBZ@q~|-(N`zsoL$_DWnb!N%UjF-ihegc zlezfxiprWGrEYsYy@KF$Bwc$|!ebsjYgq0s!|0w17}vTm-k_}Bq`Z<{m_5=ecSk2J z77Ts>7KgfRbxv#-P@6*w6QPM?pbZ$8F&L`;G(lBil%4qlIH`j;0kt>JfBb zKghk!d#|DyMEdimnUnD!Z)|j6y0EJ#XEYkq)$Ip>Ft_{}j)ZRI-{qX=r5S)L@L?@ctC_;U&Z$Rzo^sYS(8=Mq>J}=NTZdQzxl76 z-zt0SPx6t6y2aJbtmq0+ktLJ_c$DQabZ66VrB=@3y@BWYhBg~^ZVK_7h&Pz63YH1W zdEkEWh=hz*ApZ{Rq9*b52?wf$I#{gri6bv$A{ zeflwhE$1V4y28zDSN#WIq9<&0`?7oKnS>Ngo@qy4W{GHQ@@MQcGTLolAor(PszL}!r2W>EC<>GE=R7=0wuMT{-LVN3g@=0D3-rWaFRS3**E zB55|tYPmzyeD!GA+`P!w;3AffP>>i*&XsS8po8U~!pbaWt8f(zqx2tts!}w0Z1IM} zXhKw_$YN3nay?@Y27`6NVKCSO0G^SIz3fGbX&~P)d%Ft>Z@wh>F(20(XPL_XTHY)X zH@Ebii7l?`E-w*>AR|kbynco#A3ob8{1yLmzhQ<;t~%eqWAfJClv9Alk02HFSKVlx z{!oJ;xOQT_jg?Dz;w-JsQD0WCz7#$KWo2a*z50t7`a~auhxz0+b{JFKYw92(`q;NY z-rlagPH+F1?=aKbz5MB(#-X0FPm*WYSSWQxCc>Iea|p_*lx?%Xlf>EApJ76nHZ2B- zEn4|y5NP{)S8U+J;X@GJ>X>n>u&}h|KhTu(Sn>y;rE6t;_6OTKPDH`PpN`kTXXz_WH!LRh$u=%IJ>$Xi-zzV4QGfQhC)NZEg6JOr zEAfnXZHvnp3$L@{_^xvF$Q+&_X)WP8NgqMA-M+Fz_&+UJ$B9Wn;qFAPHO8$xl|*aN zk|)}>0ZmkL(AhBNp?4jva5;8kO^x$#82#2Xo$|K4H0m7$e*h>yY;r@=ODubID4oF2 z5agzQb?%$^exkj(V_A7%;R^Bu;T@%c1BS_66(qkaAc{dxzWGjf@4AcG`N5SJAN&Og zmi}@^e@F}_6=-9fu9f}Q4)<%Ox4nk$Ju~k3?mh}fPvF;&t4Lj_Ye)rgvFH}1^-*!x zlEN}l)@kg$i+6t>gM}1lCToWv1Enx8Sa^6i473C0<0B=#heD;0G`_WnSR;IdU86#H z7?V85(=b>DL~hV$fzcjp9hS2=G<3gRcKZOtU{xBJT1k{C7W}3fOk@2OBhAs=SNTgI zLP{;vnY0U5OwN)6zaXBEtcS8ID>m~6GzR{F6B*V^3cCrLVvvrD8F4y;a{(n;L#0FhxJMk$My2qa8FIG4T~A2NcmLs$KWI z9X==+CMXU``F4@;I2|>}KHmDR4M}L8IF5k%Ei9LWB;Sp46O5r(krA> zv0_Iz{bly9_jS3r&zFbV$IsP5B&K?O$lhao&}iSGKZ}BJ&PgxG1~acpFT9D2N*1+$ z{7vnQzU)KF7lU9fd=4Gi!nO6f?=}n0uDR~YtyfpYg$G4?l?#`joPs!D~N~yuzS-qSHQ*uu~tCR6|FXGE76Gp8yAR zWIGm_Pqe5*pSeUsLnB=5{qKhrL+%(9Qk4r(D4h7W)wtu@{67tidV2U~+ik^H{z)~O z<`<84mG5kyQ)OP9g7Ec+WyK(BG7LO?Ac{k;h|%8_OzCYI<4%w>_U)x_F#Jf(nN+T} zk?x)s*HIoUZ56Zyg@=+H`Vh9Z?L)nc@SO0YEm$=(+iXoO4@ab8z>g2GFdtbyR|RQr z@$TY=&3lPdqKz$HX(8C>S7H(BeVG2$BKTNA9Y=(;Xw|Q_zeA(5LUHWpnVpR3nj`~> L+6%MWALjoDG03>O literal 0 HcmV?d00001 diff --git a/src/docs/commands.md b/src/docs/commands.md new file mode 100644 index 0000000..e69de29 diff --git a/src/docs/getting-started.md b/src/docs/getting-started.md new file mode 100644 index 0000000..e69de29 diff --git a/src/docs/index.md b/src/docs/index.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/docs/index.md @@ -0,0 +1 @@ + diff --git a/src/mkdocs.yml b/src/mkdocs.yml new file mode 100644 index 0000000..3d0bf76 --- /dev/null +++ b/src/mkdocs.yml @@ -0,0 +1,34 @@ +site_name: space +site_url: https://space.externref.tech + +theme: + name: material + logo: assets/space.png + favicon: assets/space.png + palette: + - scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode + + - scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + +plugins: + - social: + cards_color: + fill: "#bf9674" + text: "#131314" + +nav: + - 'Welcome!': 'index.md' + - 'Getting Started': 'getting-started.md' + - 'commands.md' + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + - attr_list diff --git a/src/poetry.lock b/src/poetry.lock new file mode 100644 index 0000000..9c9d498 --- /dev/null +++ b/src/poetry.lock @@ -0,0 +1,371 @@ +[[package]] +name = "babel" +version = "2.16.0" +description = "Internationalization utilities" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +dev = ["pytest (>=6.0)", "pytest-cov", "freezegun (>=1.0,<2.0)"] + +[[package]] +name = "certifi" +version = "2024.7.4" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.7.0" + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["twine", "markdown", "flake8", "wheel"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markdown" +version = "3.7" +description = "Python implementation of John Gruber's Markdown." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +docs = ["mkdocs (>=1.5)", "mkdocs-nature (>=0.6)", "mdx-gh-links (>=0.2)", "mkdocstrings", "mkdocs-gen-files", "mkdocs-section-index", "mkdocs-literate-nav"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mkdocs" +version = "1.6.0" +description = "Project documentation with Markdown." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml-env-tag (==0.1)", "pyyaml (==5.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs-material" +version = "9.5.32" +description = "Documentation that simply works" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +babel = ">=2.10,<3.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "paginate" +version = "0.5.6" +description = "Divides large result sets into pages for easier browsing" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "platformdirs" +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx (>=7.2.6)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest (>=7.4.3)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymdown-extensions" +version = "10.9" +description = "Extension pack for Python Markdown." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "regex" +version = "2024.7.24" +description = "Alternative regular expression module, to replace re." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.8" + +[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 = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "urllib3" +version = "2.2.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "watchdog" +version = "4.0.2" +description = "Filesystem events monitoring" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.10" +content-hash = "ce92b6a28153c22f6e3b2d7def00571494abe079befe83f0014f957623f98e84" + +[metadata.files] +babel = [] +certifi = [] +charset-normalizer = [] +click = [] +colorama = [] +ghp-import = [] +idna = [] +jinja2 = [] +markdown = [] +markupsafe = [] +mergedeep = [] +mkdocs = [] +mkdocs-get-deps = [] +mkdocs-material = [] +mkdocs-material-extensions = [] +packaging = [] +paginate = [] +pathspec = [] +platformdirs = [] +pygments = [] +pymdown-extensions = [] +python-dateutil = [] +pyyaml = [] +pyyaml-env-tag = [] +regex = [] +requests = [] +six = [] +urllib3 = [] +watchdog = [] diff --git a/src/pyproject.toml b/src/pyproject.toml new file mode 100644 index 0000000..ff561ab --- /dev/null +++ b/src/pyproject.toml @@ -0,0 +1,16 @@ +[tool.poetry] +name = "space" +version = "0.1.0" +description = "A JSON based minimalist database" +authors = ["vidhyk"] +license = "MIT" + +[tool.poetry.dependencies] +python = "^3.10" +mkdocs-material = "^9.5.32" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From 5b8ffe57f19cc27b9c900edd99c8ba70530ba5a5 Mon Sep 17 00:00:00 2001 From: externref Date: Tue, 20 Aug 2024 03:21:33 +0530 Subject: [PATCH 14/15] move docs files outside the `src` dir --- {src/docs => docs}/assets/space.png | Bin {src/docs => docs}/commands.md | 0 {src/docs => docs}/getting-started.md | 0 {src/docs => docs}/index.md | 0 src/mkdocs.yml => mkdocs.yml | 0 src/poetry.lock => poetry.lock | 0 src/pyproject.toml => pyproject.toml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {src/docs => docs}/assets/space.png (100%) rename {src/docs => docs}/commands.md (100%) rename {src/docs => docs}/getting-started.md (100%) rename {src/docs => docs}/index.md (100%) rename src/mkdocs.yml => mkdocs.yml (100%) rename src/poetry.lock => poetry.lock (100%) rename src/pyproject.toml => pyproject.toml (100%) diff --git a/src/docs/assets/space.png b/docs/assets/space.png similarity index 100% rename from src/docs/assets/space.png rename to docs/assets/space.png diff --git a/src/docs/commands.md b/docs/commands.md similarity index 100% rename from src/docs/commands.md rename to docs/commands.md diff --git a/src/docs/getting-started.md b/docs/getting-started.md similarity index 100% rename from src/docs/getting-started.md rename to docs/getting-started.md diff --git a/src/docs/index.md b/docs/index.md similarity index 100% rename from src/docs/index.md rename to docs/index.md diff --git a/src/mkdocs.yml b/mkdocs.yml similarity index 100% rename from src/mkdocs.yml rename to mkdocs.yml diff --git a/src/poetry.lock b/poetry.lock similarity index 100% rename from src/poetry.lock rename to poetry.lock diff --git a/src/pyproject.toml b/pyproject.toml similarity index 100% rename from src/pyproject.toml rename to pyproject.toml From 85ad66da95eeb3af402e6dd0f3e1cc6cae32d27a Mon Sep 17 00:00:00 2001 From: externref Date: Wed, 14 Jan 2026 17:06:23 +0530 Subject: [PATCH 15/15] rewrite init --- .gitignore | 3 +- .vscode/decs.code-snippets | 19 - .vscode/extensions.json | 5 - .vscode/settings.json | 14 - ARCHITECTURE.md | 166 +++++++ Cargo.lock | 882 ++++++++++++++++++++++++++-------- Cargo.toml | 15 +- LICENSE | 21 - README.md | 108 ++++- assets/execution_pipeline.png | Bin 0 -> 239169 bytes assets/page_layout.png | Bin 0 -> 133095 bytes docs/assets/space.png | Bin 10143 -> 0 bytes docs/commands.md | 0 docs/getting-started.md | 0 docs/index.md | 1 - mkdocs.yml | 34 -- poetry.lock | 371 -------------- pyproject.toml | 16 - src/fs_utils.rs | 76 --- src/internals/database.rs | 153 ------ src/internals/mod.rs | 24 - src/internals/schema.rs | 192 -------- src/main.rs | 97 +--- 23 files changed, 956 insertions(+), 1241 deletions(-) delete mode 100644 .vscode/decs.code-snippets delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/settings.json create mode 100644 ARCHITECTURE.md delete mode 100644 LICENSE create mode 100644 assets/execution_pipeline.png create mode 100644 assets/page_layout.png delete mode 100644 docs/assets/space.png delete mode 100644 docs/commands.md delete mode 100644 docs/getting-started.md delete mode 100644 docs/index.md delete mode 100644 mkdocs.yml delete mode 100644 poetry.lock delete mode 100644 pyproject.toml delete mode 100644 src/fs_utils.rs delete mode 100644 src/internals/database.rs delete mode 100644 src/internals/mod.rs delete mode 100644 src/internals/schema.rs diff --git a/.gitignore b/.gitignore index 7a0ec7f..f6c313c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -# Added by cargo - /target +/data \ No newline at end of file diff --git a/.vscode/decs.code-snippets b/.vscode/decs.code-snippets deleted file mode 100644 index c756bd1..0000000 --- a/.vscode/decs.code-snippets +++ /dev/null @@ -1,19 +0,0 @@ -{ - "add hashmap of string to a struct": { - "scope": "rust", - "prefix": "hashmap_0", - "body": [ - "let $0: std::collections::HashMap =", - " std::collections::HashMap::new();" - ], - "description": "adds a hashmap variable with string keys" - }, - "input a string": { - "scope": "rust", - "prefix": "input_str", - "body": [ - "let mut input = String::new();", - "std::io::stdin().read_line(&mut input).unwrap();" - ] - } -} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index e3697c0..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "rust-lang.rust-analyzer", - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 8bd77bd..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "python.analysis.typeCheckingMode": "strict", - "yaml.schemas": { - "https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml" - }, - "yaml.customTags": [ - "!ENV scalar", - "!ENV sequence", - "!relative scalar", - "tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg", - "tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji", - "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format" - ] -} \ No newline at end of file diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..30456b1 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,166 @@ +# ARCHITECTURE: Space DB Technical Specification + +This document provides the exhaustive architectural blueprint for the **Space** database management system. Space is a high-performance, document-relational hybrid engine written in Rust, utilizing a custom binary storage format and a command-based communication protocol. + +--- + +## 1. System Overview + +The Space DBMS is architected as a set of decoupled layers, each responsible for a specific stage of the data lifecycle. The system prioritizes low-latency I/O and transactional durability. + +| Layer | Component | Responsibility | +|:--- |:--- |:--- | +| **Transport** | TCP Server | Manages socket I/O on Port 4500 and connection pooling. | +| **Protocol** | Binary Framer | Encapsulates BSON commands into length-prefixed frames. | +| **Execution** | Command Processor | Validates and dispatches CRUD operations to the storage engine. | +| **Memory** | Buffer Pool | Caches 8KB binary pages using an LRU-K eviction policy. | +| **Persistence** | Slotted Pager | Manages physical disk I/O and Write-Ahead Logging (WAL). | + +--- + +## 2. Transport and Protocol Layer + +Space communicates over TCP using a custom binary framing protocol to ensure high-performance data transmission and request multiplexing. + +### 2.1 Communication Specification +* **Port:** 4500 +* **Mode:** Asynchronous (Non-blocking via Tokio) +* **Primary Protocol:** Length-Prefixed Binary Messaging + +### 2.2 Binary Frame Structure +Every message sent to or from Space must conform to the following 10-byte header format followed by the payload and a trailing checksum. + +| Field | Size (Bytes) | Type | Description | +|:--- |:--- |:--- |:--- | +| **Message Length** | 4 | uint32 | Total length of the frame (Header + Payload + Checksum). | +| **Request ID** | 4 | uint32 | Sequence number used for asynchronous multiplexing. | +| **OpCode** | 2 | uint16 | Operation identifier (0x00: Ping, 0x01: Command). | +| **Payload** | Variable | BSON | The encoded data exchange document. | +| **Checksum** | 4 | uint32 | CRC32 for frame integrity validation. | + +--- + +## 3. Data Exchange Format (BSON Command Logic) + +Space utilizes **BSON (Binary JSON)** as its native data exchange format. BSON provides a zero-copy friendly, type-rich serialization that supports binary data, 64-bit integers, and nested documents. + +### 3.1 Command Structure +All interactions with the database are initiated via a BSON "Command Document." A standard request must contain a `command` and a `collection` field. + +**Example: Find Operation (Logical Representation)** +```json +{ + "command": "find", + "collection": "users", + "filter": { + "username": "sarthak" + }, + "limit": 10 +} +``` + +### 3.2 Response Structure +The server responds with a BSON document containing a status indicator (`ok`) and the requested data or error message. + +| Field | Type | Description | +|:--- |:--- |:--- | +| **ok** | Int32/Bool | 1 for success, 0 for failure. | +| **cursor** | Document | Contains the result set for `find` operations. | +| **n** | Int32 | Number of documents affected (for `insert`/`update`). | +| **errmsg** | String | Description of the error (only if `ok` is 0). | + +### 3.3 Type Mapping +| BSON Type | Space Internal Type | Description | +|:--- |:--- |:--- | +| **Double** | Float64 | 64-bit IEEE 754 floating point. | +| **String** | UTF-8 String | Length-prefixed character data. | +| **Document** | Nested BSON | Used for the hybrid "document" part of records. | +| **Binary** | Byte Blob | Raw bytes stored in the slotted page. | +| **Int64** | Int64 | 64-bit signed integer. | + +--- + +## 4. Storage Architecture + +Space uses a page-based storage model where all data is organized into fixed-size units to align with hardware sectors and OS memory management. + +### 4.1 Physical File Layout +Data is stored in `.tbl` files. Internally, these files are an array of 8192-byte (8KB) pages. + +![](./assets/page_layout.png) + +### 4.2 Slotted Page Anatomy +To handle variable-length documents (BSON) alongside structured data (INT64, VARCHAR), Space employs a Slotted Page architecture. + +| Offset | Field | Size | Description | +|:--- |:--- |:--- |:--- | +| 0 | **LSN** | 8 | Log Sequence Number for WAL recovery. | +| 8 | **Checksum** | 4 | CRC32 of page content. | +| 12 | **Slot Count** | 2 | Number of records in the page. | +| 14 | **Upper** | 2 | Pointer to the end of the slot array. | +| 16 | **Lower** | 2 | Pointer to the start of the record data. | +| 18 | **Space** | 2 | Remaining free bytes in the page. | +| 20 | **Slot Array** | 4 * N | List of (Offset, Length) pairs. | +| ... | **Free Space** | Var | Unallocated space growing toward the bottom. | +| 8192 | **Records** | Var | Actual data blocks growing toward the top. | + +--- + +## 5. Memory Management (Buffer Pool) + +The Buffer Pool Manager (BPM) sits between the execution engine and the disk. It minimizes disk latency by keeping frequently accessed pages in memory. + +### 4.1 LRU-K Eviction Policy +Space utilizes the LRU-K algorithm to manage page eviction. Unlike standard LRU, LRU-K tracks the time of the last $K$ references to a page, effectively protecting the cache from being flushed by one-time full table scans. + +### 4.2 Page States +| State | Description | +|:--- |:--- | +| **Clean** | Page in memory matches the page on disk. | +| **Dirty** | Page has been modified and must be written to disk before eviction. | +| **Pinned** | Page is currently being accessed by a transaction and cannot be evicted. | + +--- + +## 6. Transactional Integrity (ACID) + +Space ensures Atomicity, Consistency, Isolation, and Durability through the ARIES recovery protocol and Write-Ahead Logging. + +### 6.1 Write-Ahead Logging (WAL) +Every mutation (Insert, Update, Delete) is appended to a sequential log file (`journal.wal`) and synchronized with the storage hardware via `fsync` before the corresponding data page is modified in memory. + +### 6.2 Recovery Logic +During system startup, Space performs a three-stage recovery: +1. **Analysis:** Scans the WAL to identify dirty pages and active transactions. +2. **Redo:** Re-applies all committed changes from the WAL that are not yet in the `.tbl` files. +3. **Undo:** Rolls back any changes from transactions that did not reach a "Commit" state before a crash. + +--- + +## 7. Command Execution Pipeline + +The following flowchart details the lifecycle of a BSON command from the network to the physical disk. + +![](./assets/execution_pipeline.png) + +--- + +## 8. Catalog and Schema + +Space maintains a global system catalog to store metadata about collections and indexes. + +| Meta-field | Type | Description | +|:--- |:--- |:--- | +| **Table Name** | String | The unique identifier for the collection. | +| **Root Page** | uint32 | The starting page of the collection's B+ Tree. | +| **Column Definitions** | Map | Definitions of structured fields (Name, Type). | +| **Indexes** | List | List of B+ Trees associated with the table. | + +--- + +## 9. Development Standards + +* **Memory Safety:** No `unsafe` code allowed in the Transport or Command layers; restricted to low-level binary casting in the Storage layer using crates like `zerocopy`. +* **Error Handling:** Explicit result propagation using the `thiserror` crate; no `panic!` or `unwrap()` in the server execution path. +* **Concurrency:** Non-blocking I/O using `tokio`; fine-grained page locking via `parking_lot::RwLock`. +* **Zero-Copy:** Data is cast directly from binary page buffers to structs where possible to minimize CPU cycles during serialization. \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index f0403ac..cb55e8c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,106 +1,151 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "bitflags" -version = "2.6.0" +name = "ahash" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "const-random", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "autocfg" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "cfg_aliases" -version = "0.1.1" +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] -name = "clearscreen" -version = "3.0.0" +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "nix", - "terminfo", - "thiserror", - "which", - "winapi", + "funty", + "radium", + "tap", + "wyz", ] [[package]] -name = "color-print" -version = "0.3.6" +name = "bson" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee543c60ff3888934877a5671f45494dd27ed4ba25c6670b9a7576b7ed7a8c0" +checksum = "b3f109694c4f45353972af96bf97d8a057f82e2d6e496457f4d135b9867a518c" dependencies = [ - "color-print-proc-macro", + "ahash", + "base64", + "bitvec", + "getrandom 0.3.4", + "hex", + "indexmap", + "js-sys", + "rand", + "serde_bytes", + "simdutf8", + "thiserror", + "time", + "uuid", ] [[package]] -name = "color-print-proc-macro" -version = "0.3.6" +name = "bumpalo" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[package]] +name = "cfg-if" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ff1a80c5f3cb1ca7c06ffdd71b6a6dd6d8f896c42141fbd43f50ed28dcdb93" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" dependencies = [ - "nom", - "proc-macro2", - "quote", - "syn", + "const-random-macro", ] [[package]] -name = "dirs" -version = "4.0.0" +name = "const-random-macro" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "dirs-sys", + "getrandom 0.2.17", + "once_cell", + "tiny-keccak", ] [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "crunchy" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ - "libc", - "redox_users", - "winapi", + "powerfmt", ] [[package]] -name = "either" -version = "1.13.0" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "errno" -version = "0.3.9" +name = "fsevent-sys" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" dependencies = [ "libc", - "windows-sys", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", @@ -108,191 +153,362 @@ dependencies = [ ] [[package]] -name = "home" -version = "0.5.9" +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.10.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "windows-sys", + "cfg-if", ] [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] -name = "libc" -version = "0.2.156" +name = "js-sys" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +dependencies = [ + "once_cell", + "wasm-bindgen", +] [[package]] -name = "libredox" -version = "0.1.3" +name = "kqueue" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" dependencies = [ - "bitflags", + "kqueue-sys", "libc", ] [[package]] -name = "linux-raw-sys" -version = "0.4.14" +name = "kqueue-sys" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] [[package]] -name = "memchr" -version = "2.7.4" +name = "lazy_static" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "libc" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] -name = "nix" -version = "0.28.0" +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ - "bitflags", - "cfg-if", - "cfg_aliases", "libc", + "log", + "wasi", + "windows-sys 0.61.2", ] [[package]] -name = "nom" -version = "7.1.3" +name = "notify" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "memchr", - "minimal-lexical", + "bitflags 2.10.0", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", ] [[package]] -name = "phf" -version = "0.11.2" +name = "notify-types" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "phf_shared", + "windows-sys 0.61.2", ] [[package]] -name = "phf_codegen" -version = "0.11.2" +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "phf_generator", - "phf_shared", + "autocfg", ] [[package]] -name = "phf_generator" -version = "0.11.2" +name = "once_cell" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" dependencies = [ - "phf_shared", - "rand", + "portable-atomic", ] [[package]] -name = "phf_shared" -version = "0.11.2" +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "siphasher", + "zerocopy", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" -version = "0.8.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] [[package]] -name = "redox_users" -version = "0.4.5" +name = "rhai" +version = "1.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "f4e35aaaa439a5bda2f8d15251bc375e4edfac75f9865734644782c9701b5709" dependencies = [ - "getrandom", - "libredox", - "thiserror", + "ahash", + "bitflags 2.10.0", + "instant", + "num-traits", + "once_cell", + "rhai_codegen", + "smallvec", + "smartstring", + "thin-vec", ] [[package]] -name = "rustix" -version = "0.38.34" +name = "rhai_codegen" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "d4322a2a4e8cf30771dd9f27f7f37ca9ac8fe812dddd811096a98483080dabe6" dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "ryu" -version = "1.0.18" +name = "rustversion" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] name = "serde" -version = "1.0.208" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -301,37 +517,75 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", ] [[package]] -name = "siphasher" -version = "0.3.11" +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] [[package]] name = "space" version = "0.1.0" dependencies = [ - "clearscreen", - "color-print", + "bson", + "notify", + "rhai", "serde", "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "syn" -version = "2.0.74" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -339,99 +593,292 @@ dependencies = [ ] [[package]] -name = "terminfo" -version = "0.8.0" +name = "tap" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" -dependencies = [ - "dirs", - "fnv", - "nom", - "phf", - "phf_codegen", -] +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thin-vec" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" [[package]] name = "thiserror" -version = "1.0.63" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" + +[[package]] +name = "time-macros" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "tracing" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "which" -version = "6.0.2" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "either", - "home", - "rustix", - "winsafe", + "wit-bindgen", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "wasm-bindgen" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "wasm-bindgen-macro-support" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "wasm-bindgen-shared" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" -version = "0.52.6" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ + "windows-link", "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", @@ -444,54 +891,89 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] -name = "winsafe" -version = "0.0.19" +name = "zmij" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" diff --git a/Cargo.toml b/Cargo.toml index e4ca010..b0f55d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,15 @@ [package] name = "space" version = "0.1.0" -edition = "2021" +edition = "2024" [dependencies] -clearscreen = "3.0.0" -color-print = "0.3.6" -serde = { version = "1.0.208", features = ["derive"]} -serde_json = "1.0.125" +bson = "3.1.0" +notify = "8.2.0" +rhai = "1.23.6" +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.149" +thiserror = "2.0.17" +tokio = "1.49.0" +tracing = "0.1.44" +tracing-subscriber = "0.3.22" diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 11d5498..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 sarthak - -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. diff --git a/README.md b/README.md index 12ac03c..5c17313 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,102 @@ -# space 🌌 +# Space DB -

- - - - -
-A minimalist JSON based database. -

+Space is a high-performance, document-relational hybrid database management system implemented in Rust. It is engineered for low-latency data access and transactional durability, combining the structure of relational engines with the flexibility of document-oriented stores. +## Core Features +| Feature | Description | +|:--- |:--- | +| **Hybrid Engine** | Supports structured relational columns and flexible BSON document blobs. | +| **ACID Compliant** | Fully atomic, consistent, isolated, and durable via ARIES-style WAL. | +| **Slotted Storage** | 8KB binary pages with slotted-page architecture for variable-length records. | +| **Advanced Caching** | LRU-K Buffer Pool Manager to optimize memory usage and disk I/O. | +| **Custom Protocol** | High-speed TCP binary framing protocol on Port 4500. | +| **Async Core** | Powered by the Tokio runtime for high-concurrency connection handling. | -> [!WARNING] -> This database system is just a raw idea and prone to unexpected behaviour. +## System Requirements -Documentation @ [https://space.externref.tech](https://space.externref.tech) +* **Language:** Rust 1.75+ +* **Operating System:** Linux, macOS, Windows +* **Architecture:** x86_64 or ARM64 +* **Default Port:** 4500 +## Quick Start + +### 1. Build the Binary +```bash +cargo build --release +``` + +### 2. Initialize the Environment +Space requires a specific directory structure for data persistence. Ensure the following directories exist relative to the binary: +```bash +mkdir -p data/storage data/wal +``` + +### 3. Run the Server +```bash +./target/release/space +``` +The server will start listening for TCP connections on `127.0.0.1:4500`. + +## Project Structure + +```text +space/ +├── src/ +│ ├── main.rs # Entry point and server orchestration +│ ├── server/ # TCP transport and BSON command handler +│ ├── storage/ # Slotted pages, Pager, and Buffer Pool +│ ├── catalog/ # Metadata and schema management +│ └── common/ # Shared types and binary utilities +├── data/ # Persistent database files +│ ├── storage/ # .tbl files (Binary Pages) +│ └── wal/ # .wal files (Write-Ahead Logs) +└── ARCHITECTURE.md # Detailed technical specifications +``` + +## Communication Protocol + +Space uses a custom length-prefixed binary protocol. Every request must start with a 10-byte header. + +### Binary Header Format +1. **Message Length (4 bytes):** Total frame size (Header + Payload + Checksum). +2. **Request ID (4 bytes):** Client-generated ID for request multiplexing. +3. **OpCode (2 bytes):** `0x00` for Ping, `0x01` for Command. + +### Command Format (BSON) +Operations are sent as BSON documents. For example, a `find` operation: +```json +{ + "command": "find", + "collection": "users", + "filter": { "username": "sarthak" } +} +``` + +## Command Reference + +| Command | Arguments | Description | +|:--- |:--- |:--- | +| `insert` | `collection`, `data` | Persists a new document to the specified collection. | +| `find` | `collection`, `filter` | Retrieves documents matching the BSON filter. | +| `update` | `collection`, `filter`, `update` | Modifies existing documents matching the filter. | +| `delete` | `collection`, `filter` | Removes documents matching the filter. | +| `ping` | N/A | Validates server connectivity and latency. | + +## Internal Architecture + +Space is built on a layered architecture to ensure isolation between the transport and storage concerns: + +1. **Transport Layer:** Handles TCP state and asynchronous packet ingestion. +2. **Command Layer:** Decodes BSON payloads and validates schema constraints. +3. **Storage Layer:** Manages the Buffer Pool, Page fetching, and Slotted Record layout. +4. **Persistence Layer:** Direct I/O with the filesystem, utilizing Write-Ahead Logging for safety. + +For a deep dive into the internal binary formats and recovery protocols, refer to [ARCHITECTURE.md](./ARCHITECTURE.md). + +## Development Standards + +* **Zero-Panic:** The system propagates results through the `thiserror` crate; `unwrap()` is strictly prohibited in the execution path. +* **Memory Safety:** Rust's borrow checker ensures memory safety; `unsafe` blocks are restricted to binary-to-struct casting in the storage engine. +* **Concurrency:** Fine-grained locking is managed via `parking_lot::RwLock` to provide high parallel read throughput. \ No newline at end of file diff --git a/assets/execution_pipeline.png b/assets/execution_pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..ceae676b24382f579872214ec58a7f26969923b3 GIT binary patch literal 239169 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/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³-*!%Q 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 z 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 R3;xfNlalf$;*RV7^*@=@HI@JX literal 0 HcmV?d00001 diff --git a/docs/assets/space.png b/docs/assets/space.png deleted file mode 100644 index 8cde92c92504cd81ed24bb2edaa789a60c3e0ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10143 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 L+6%MWALjoDG03>O diff --git a/docs/commands.md b/docs/commands.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 8b13789..0000000 --- a/docs/index.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 3d0bf76..0000000 --- a/mkdocs.yml +++ /dev/null @@ -1,34 +0,0 @@ -site_name: space -site_url: https://space.externref.tech - -theme: - name: material - logo: assets/space.png - favicon: assets/space.png - palette: - - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to light mode - - - scheme: default - toggle: - icon: material/brightness-7 - name: Switch to dark mode - -plugins: - - social: - cards_color: - fill: "#bf9674" - text: "#131314" - -nav: - - 'Welcome!': 'index.md' - - 'Getting Started': 'getting-started.md' - - 'commands.md' - -markdown_extensions: - - admonition - - pymdownx.details - - pymdownx.superfences - - attr_list diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 9c9d498..0000000 --- a/poetry.lock +++ /dev/null @@ -1,371 +0,0 @@ -[[package]] -name = "babel" -version = "2.16.0" -description = "Internationalization utilities" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -dev = ["pytest (>=6.0)", "pytest-cov", "freezegun (>=1.0,<2.0)"] - -[[package]] -name = "certifi" -version = "2024.7.4" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" -optional = false -python-versions = ">=3.7.0" - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" - -[[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -python-dateutil = ">=2.8.1" - -[package.extras] -dev = ["twine", "markdown", "flake8", "wheel"] - -[[package]] -name = "idna" -version = "3.7" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "markdown" -version = "3.7" -description = "Python implementation of John Gruber's Markdown." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -docs = ["mkdocs (>=1.5)", "mkdocs-nature (>=0.6)", "mdx-gh-links (>=0.2)", "mkdocstrings", "mkdocs-gen-files", "mkdocs-section-index", "mkdocs-literate-nav"] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "mkdocs" -version = "1.6.0" -description = "Project documentation with Markdown." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -jinja2 = ">=2.11.1" -markdown = ">=3.3.6" -markupsafe = ">=2.0.1" -mergedeep = ">=1.3.4" -mkdocs-get-deps = ">=0.2.0" -packaging = ">=20.5" -pathspec = ">=0.11.1" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml-env-tag (==0.1)", "pyyaml (==5.1)", "watchdog (==2.0)"] - -[[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -mergedeep = ">=1.3.4" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" - -[[package]] -name = "mkdocs-material" -version = "9.5.32" -description = "Documentation that simply works" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -babel = ">=2.10,<3.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.0,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -regex = ">=2022.4" -requests = ">=2.26,<3.0" - -[package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -description = "Extension pack for Python Markdown and MkDocs Material." -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "paginate" -version = "0.5.6" -description = "Divides large result sets into pages for easier browsing" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "platformdirs" -version = "4.2.2" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx (>=7.2.6)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest (>=7.4.3)"] -type = ["mypy (>=1.8)"] - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pymdown-extensions" -version = "10.9" -description = "Extension pack for Python Markdown." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -markdown = ">=3.6" -pyyaml = "*" - -[package.extras] -extra = ["pygments (>=2.12)"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyyaml = "*" - -[[package]] -name = "regex" -version = "2024.7.24" -description = "Alternative regular expression module, to replace re." -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -category = "main" -optional = false -python-versions = ">=3.8" - -[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 = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "urllib3" -version = "2.2.2" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "watchdog" -version = "4.0.2" -description = "Filesystem events monitoring" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.10" -content-hash = "ce92b6a28153c22f6e3b2d7def00571494abe079befe83f0014f957623f98e84" - -[metadata.files] -babel = [] -certifi = [] -charset-normalizer = [] -click = [] -colorama = [] -ghp-import = [] -idna = [] -jinja2 = [] -markdown = [] -markupsafe = [] -mergedeep = [] -mkdocs = [] -mkdocs-get-deps = [] -mkdocs-material = [] -mkdocs-material-extensions = [] -packaging = [] -paginate = [] -pathspec = [] -platformdirs = [] -pygments = [] -pymdown-extensions = [] -python-dateutil = [] -pyyaml = [] -pyyaml-env-tag = [] -regex = [] -requests = [] -six = [] -urllib3 = [] -watchdog = [] diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index ff561ab..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[tool.poetry] -name = "space" -version = "0.1.0" -description = "A JSON based minimalist database" -authors = ["vidhyk"] -license = "MIT" - -[tool.poetry.dependencies] -python = "^3.10" -mkdocs-material = "^9.5.32" - -[tool.poetry.dev-dependencies] - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/src/fs_utils.rs b/src/fs_utils.rs deleted file mode 100644 index c766e2f..0000000 --- a/src/fs_utils.rs +++ /dev/null @@ -1,76 +0,0 @@ -// MIT License - -// Copyright (c) 2024 sarthak - -// 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. - -/** -Gets the path as [std::path::PathBuf] of the directory to use for data storage. -*/ -pub fn get_data_save_dir() -> std::path::PathBuf { - if cfg!(target_os = "linux") { - let xdg_dirs = std::env::var("HOME").unwrap(); - return std::path::PathBuf::from(format!( - "{}/.local/share/", - xdg_dirs.split(":").next().unwrap().to_owned(), - )); - } else if cfg!(target_os = "windows") { - let appdata: String = std::env::var("APPDATA").unwrap(); - return std::path::PathBuf::from(format!("{}/", appdata)); - } else if cfg!(target_os = "macos") { - let home: String = std::env::var("HOME").unwrap(); - return std::path::PathBuf::from(format!("{}/Library/Application Support/", home)); - } else { - return std::path::PathBuf::from(format!("data/database/")); - } -} - -/** -Checks all the file system related setups needed for the db to function. -*/ -pub fn verify_setup(dbname: String) { - let mut data_dir = get_data_save_dir(); - data_dir.push(".space"); - if !data_dir.exists() { - std::fs::create_dir(&data_dir).unwrap(); - } - data_dir.push(dbname); - if !data_dir.exists() { - println!("{:?}", data_dir); - std::fs::create_dir(&data_dir).unwrap(); - } - if !data_dir.join("data").exists() { - std::fs::create_dir(&data_dir.join("data")).unwrap(); - } - data_dir.push(".schemas"); - if !data_dir.exists() { - std::fs::create_dir(&data_dir).unwrap(); - } -} - -/** -This is just appending the `.space/` to the PathBuf returned by [get_data_save_dir], -ideally after verifying the setup. -*/ -pub fn get_database_dir(dbname: String) -> std::path::PathBuf { - let mut strgdir = get_data_save_dir(); - strgdir.push(".space"); - strgdir.push(dbname); - return strgdir; -} diff --git a/src/internals/database.rs b/src/internals/database.rs deleted file mode 100644 index 3f021e8..0000000 --- a/src/internals/database.rs +++ /dev/null @@ -1,153 +0,0 @@ -// MIT License - -// Copyright (c) 2024 sarthak - -// 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. - -use std::io::Write; - -use crate::fs_utils; -use crate::internals::schema; - -#[derive(Clone)] -pub struct CommandHandler { - db_path: std::path::PathBuf, -} - -impl CommandHandler { - fn create_schema_command(&self, mut args: Vec<&str>) { - let schema_name = args.get(0).unwrap().to_string(); - args.remove(0); - let schema_data: std::collections::HashMap = - serde_json::from_str(args.join(" ").as_str()).unwrap(); - let mut path = self.db_path.clone(); - path.push(format!(".schemas/{}.space.json", schema_name.clone())); - let schema = schema::Schema::new(path, self.db_path.clone(), schema_name, schema_data); - schema.create(); - } - - #[allow(dead_code, unreachable_code, unused)] - fn interactive_write(&self, schema: &schema::Schema) { - todo!(); - let mut data: std::collections::HashMap = - std::collections::HashMap::new(); - for (name, dtype) in schema.configs.iter() { - let mut input = String::new(); - std::io::stdin().read_line(&mut input).unwrap(); - let convr: serde_json::Value = serde_json::from_str(&input).unwrap(); - data.insert(name.to_string(), convr); - } - } -} -#[derive(Clone)] -pub struct Database { - pub name: String, - pub schemas: std::collections::HashMap, - pub path: std::path::PathBuf, - pub command_handler: CommandHandler, -} - -impl Database { - /** - * loads all schema files from the database storage and adds it to the database instance. - */ - fn load_schemas(&mut self) { - let mut schemas = self.path.clone(); - schemas.push(".schemas"); - for _file in std::fs::read_dir(schemas).unwrap() { - let file = _file.unwrap(); - let raw_configs: std::collections::HashMap = serde_json::from_reader( - std::io::BufReader::new(std::fs::File::open(&file.path()).unwrap()), - ) - .unwrap(); - - let schema = schema::Schema::new( - file.path(), - self.path.clone(), - file.file_name().into_string().unwrap(), - raw_configs, - ); - self.schemas - .insert(schema.name.split(".").next().unwrap().to_string(), schema); - } - } - pub fn new(name: String) -> Database { - let schemas = std::collections::HashMap::new(); - let path = fs_utils::get_database_dir(name.to_string()); - let command_handler = CommandHandler { - db_path: path.clone(), - }; - let mut database = Database { - name: name.clone(), - schemas, - path, - command_handler, - }; - fs_utils::verify_setup(database.name.clone()); - database.load_schemas(); - return database; - } - - #[allow(unused_mut)] - pub fn run_command(&self, command: &str, mut tokens: Vec<&str>) { - match command { - "!create_schema" => { - self.command_handler.create_schema_command(tokens); - } - _ => {} - } - } - - pub fn run(&self) { - clearscreen::clear().unwrap(); - color_print::cprintln!( - r#" ___ ____ ____ ____ ____ - /___)| _ \ / _ | / ___) / _ ) * ☀️ . -|___ || | | |( ( | |( (___ ( (/ / . 🌏 * ' -(___/ | ||_/ \_||_| \____) \____) * * - |_|"# - ); - - let mut cmd: String = String::new(); - color_print::cprintln!( - " Welcome to space-db, connected to [{}]", - self.name - ); - loop { - print!("> "); - cmd.clear(); - std::io::stdout().flush().unwrap(); - while !cmd.trim().ends_with(";") { - std::io::stdin().read_line(&mut cmd).unwrap(); - if [":q", ":quit", "!q", "!quit"].contains(&cmd.trim()) { - color_print::cprintln!("Thanks for using space 🌌"); - std::process::exit(0); - } - } - let mut tokens: Vec<&str> = cmd - .trim() - .strip_suffix(';') - .unwrap() - .split_whitespace() - .collect(); - let command = tokens.remove(0); - self.run_command(command, tokens); - } - } -} diff --git a/src/internals/mod.rs b/src/internals/mod.rs deleted file mode 100644 index f58bba8..0000000 --- a/src/internals/mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -// MIT License - -// Copyright (c) 2024 sarthak - -// 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. - -pub mod database; -pub mod schema; diff --git a/src/internals/schema.rs b/src/internals/schema.rs deleted file mode 100644 index d7694d1..0000000 --- a/src/internals/schema.rs +++ /dev/null @@ -1,192 +0,0 @@ -// MIT License - -// Copyright (c) 2024 sarthak - -// 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. - -#[derive(Clone, Debug)] -pub enum DataType { - String, - Integer, - Float, - Bool, - ArrayString, - ArrayInteger, - ArrayFloat, - ArrayBool, -} -#[derive(Clone, Debug)] -pub struct Schema { - pub name: String, - pub path: std::path::PathBuf, - database_path: std::path::PathBuf, - raw_configs: std::collections::HashMap, - pub configs: std::collections::HashMap, -} - -impl Schema { - fn generate_configs( - raw_configs: &std::collections::HashMap, - ) -> std::collections::HashMap { - // let type_map = std::collections::HashMap::from([ - // ("string", DataType::String), - // ("integer", DataType::Integer), - // ("float", DataType::Float), - // ("bool", DataType::Bool), - // ("a_string", DataType::ArrayString), - // ("a_integer", DataType::Integer), - // ("a_float", DataType::ArrayFloat), - // ("a_bool", DataType::ArrayBool), - // ]); - let mut configs: std::collections::HashMap = - std::collections::HashMap::new(); - for (attr, val) in raw_configs.iter() { - let valid = [ - "string", - "integer", - "float", - "bool", - "a_string", - "a_integer", - "a_float", - "a_bool", - ]; - if !valid.contains(&val.as_str()) { - panic!("Invalid data type in schema: \"{}\"", val) - } - if val == "string" { - configs.insert(attr.to_string(), DataType::String); - } else if val == "integer" { - configs.insert(attr.to_string(), DataType::Integer); - } else if val == "float" { - configs.insert(attr.to_string(), DataType::Float); - } else if val == "bool" { - configs.insert(attr.to_string(), DataType::Bool); - } else if val == "a_string" { - configs.insert(attr.to_string(), DataType::ArrayString); - } else if val == "a_integer" { - configs.insert(attr.to_string(), DataType::ArrayInteger); - } else if val == "a_float" { - configs.insert(attr.to_string(), DataType::ArrayFloat); - } else if val == "a_bool" { - configs.insert(attr.to_string(), DataType::ArrayBool); - } - } - return configs; - } - - pub fn new( - path: std::path::PathBuf, - database_path: std::path::PathBuf, - name: String, - raw_configs: std::collections::HashMap, - ) -> Schema { - let configs = Schema::generate_configs(&raw_configs); - return Schema { - path, - database_path, - name, - raw_configs, - configs, - }; - } - pub fn validate_input( - &self, - input: &std::collections::HashMap, - ) -> bool { - for (key, dtype) in &self.configs { - let value = input.get(key); - - let is_type_correct = match dtype { - DataType::String => value.unwrap().is_string(), - DataType::Integer => value.unwrap().is_i64(), - DataType::Float => value.unwrap().is_f64(), - DataType::Bool => value.unwrap().is_boolean(), - - _ => { - let val = value.unwrap(); - if !val.is_array() { - return false; - } - let internal_type_correct = match dtype { - DataType::ArrayString => { - for item in val.as_array().unwrap() { - if !item.is_string() { - return false; - } - } - true - } - DataType::ArrayInteger => { - for item in val.as_array().unwrap() { - if !item.is_i64() { - println!(" breaks here"); - return false; - } - } - true - } - DataType::ArrayFloat => { - for item in val.as_array().unwrap() { - if !item.is_f64() { - return false; - } - } - true - } - DataType::ArrayBool => { - for item in val.as_array().unwrap() { - if !item.is_boolean() { - return false; - } - } - true - } - _ => false, - }; - internal_type_correct - } - }; - if !is_type_correct { - return false; - } - } - return true; - } - - pub fn write(&self, id: String, data: std::collections::HashMap) { - if !self.validate_input(&data) { - panic!("invalid data input"); - } - std::fs::write( - self.database_path - .join(format!("data/{}/{}.space.json", self.name, id)), - serde_json::to_string_pretty(&data).unwrap(), - ) - .unwrap(); - } - - pub fn create(&self) { - // add schema files under schemas folder - let json_data = serde_json::to_string_pretty(&self.raw_configs).unwrap(); - std::fs::write(self.path.clone(), json_data).unwrap(); - // create folder for schema data - std::fs::create_dir(self.database_path.join(format!("data/{}", self.name))).unwrap(); - } -} diff --git a/src/main.rs b/src/main.rs index 07e5b5a..e7a11a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,98 +1,3 @@ -// MIT License - -// Copyright (c) 2024 sarthak - -// 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. - -mod fs_utils; -mod internals; - fn main() { - let mut args = Vec::from_iter(std::env::args()); - let _exec_from = args.remove(0); - let db_name = args.remove(0); - let db = internals::database::Database::new(db_name); - db.run(); -} - -#[cfg(test)] -mod tests { - use crate::fs_utils; - use crate::internals; - - fn rm_schema_if_exists() { - let schema_file = fs_utils::get_database_dir(".space_tests".to_string()) - .join(".schemas/test_schema.space.json"); - let schema_dir = - fs_utils::get_database_dir(".space_tests".to_string()).join("data/test_schema"); - if schema_file.exists() { - std::fs::remove_file(schema_file).unwrap(); - } - if schema_dir.exists() { - std::fs::remove_dir_all(schema_dir).unwrap(); - } - } - - #[test] - fn create_schema() { - rm_schema_if_exists(); - let db = internals::database::Database::new(".space_tests".to_string()); - let schema_config: std::collections::HashMap = - std::collections::HashMap::from([ - ("name".to_string(), "string".to_string()), - ("marks".to_string(), "a_integer".to_string()), - ]); - let schema = internals::schema::Schema::new( - db.path.join(".schemas/test_schema.space.json"), - db.path, - "test_schema".to_string(), - schema_config.clone(), - ); - schema.create(); - let saved_file_data: std::collections::HashMap = - serde_json::from_str(std::fs::read_to_string(schema.path).unwrap().as_str()).unwrap(); - assert_eq!(schema_config, saved_file_data); - } - - #[test] - fn test_input_validation() { - let db: internals::database::Database = - internals::database::Database::new(".space_tests".to_string()); - let schema: &internals::schema::Schema = db.schemas.get("test_schema").unwrap(); - // schema.create(); - let invalid_input: std::collections::HashMap = - serde_json::from_str( - r#"{ - "name": "sarthak", - "marks": [1, "hello"] - }"#, - ) - .unwrap(); - let valid_input: std::collections::HashMap = - serde_json::from_str( - r#"{ - "name": "not sarthak", - "marks": [1, 2, 4, 5] - }"#, - ) - .unwrap(); - assert_eq!(schema.validate_input(&valid_input), true); - assert_eq!(schema.validate_input(&invalid_input), false); - } + println!("Hello, world!"); }