diff --git a/.gitea/workflows/python-package.yml b/.gitea/workflows/python-package.yml index 09275ea..2ee342a 100644 --- a/.gitea/workflows/python-package.yml +++ b/.gitea/workflows/python-package.yml @@ -3,7 +3,7 @@ on: push: tags: - 'v[0-9]+.[0-9]+.[0-9]+' - paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml'] jobs: Package: diff --git a/.gitea/workflows/python-ruff.yml b/.gitea/workflows/python-ruff.yml index b1be7a3..72b480e 100644 --- a/.gitea/workflows/python-ruff.yml +++ b/.gitea/workflows/python-ruff.yml @@ -1,7 +1,7 @@ name: Python Ruff Code Quality on: push: - paths-ignore: ["README.md", ".gitignore", "LICENSE"] + paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml'] jobs: ruff: diff --git a/.gitea/workflows/python-test.yml b/.gitea/workflows/python-test.yml index 4fa654b..a9b9c0d 100644 --- a/.gitea/workflows/python-test.yml +++ b/.gitea/workflows/python-test.yml @@ -2,7 +2,7 @@ name: Run Python tests (through Pytest) on: push: - paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml'] jobs: Test: diff --git a/.gitea/workflows/python-version-check.yml b/.gitea/workflows/python-version-check.yml index c8f364b..07f9520 100644 --- a/.gitea/workflows/python-version-check.yml +++ b/.gitea/workflows/python-version-check.yml @@ -2,7 +2,7 @@ name: Verify Python project can be installed, loaded and have version checked on: push: - paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml'] jobs: Test: diff --git a/CONVENTIONS.md b/CONVENTIONS.md new file mode 100644 index 0000000..60cd60c --- /dev/null +++ b/CONVENTIONS.md @@ -0,0 +1,17 @@ +When contributing code to this project, you MUST follow these principles: + +- Code should be easy to read and understand. +- Keep the code as simple as possible. Avoid unnecessary complexity. +- Use meaningful names for variables, functions, etc. Names should reveal intent. +- Functions should be small and do one thing well. They should not exceed a few lines. +- Function names should describe the action being performed. +- Only use comments when necessary, as they can become outdated. Instead, strive to make the code self-explanatory. +- When comments are used, they should add useful information that is not readily apparent from the code itself. +- Properly handle errors and exceptions to ensure the software's robustness. +- Use exceptions rather than error codes for handling errors. +- Consider security implications of the code. Implement security best practices to protect against vulnerabilities and attacks. +- Documentation should document semantics, not syntax. +- Prefer importing modules, not individual items from modules. +- Do not use f-strings in logging statements. +- Loop variables and walrus-expression-variables should be deleted when + unneeded to keep scope clean, and to avoid accidental use. diff --git a/LICENSE b/LICENSE index 67061b0..991257a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Jon Michael Aanes +Copyright (c) 2024-2025 Jon Michael Aanes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0283f35..73b04b1 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,9 @@ depo.get_amount_of_asset(BTC) ## Dependencies -All requirements can be installed easily using: +This project requires [Python](https://www.python.org/) 3.8 or newer. + +All required libraries can be installed easily using: ```bash pip install -r requirements.txt @@ -104,15 +106,38 @@ Full list of requirements: - [krakenex](https://pypi.org/project/krakenex/) - [frozendict](https://pypi.org/project/frozendict/) - [fin-defs](https://gitfub.space/Jmaa/fin-defs) +- [pbc-client](https://gitfub.space/Jmaa/pbc-client) - [dataclassabc](https://pypi.org/project/dataclassabc/) +## Contributing + +Feel free to submit pull requests. Please follow the [Code Conventions](CONVENTIONS.md) when doing so. + + +### Testing + +Testing requires the [pytest](https://docs.pytest.org/en/stable/) library. + +Run tests with the following command: + +```sh +pytest test +``` + +Test coverage can be run using the [`pytest-cov`](https://pypi.org/project/pytest-cov/) extension: + +```sh +pytest --cov=fin_depo test +``` + + ## License ``` MIT License -Copyright (c) 2024 Jon Michael Aanes +Copyright (c) 2024-2025 Jon Michael Aanes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/setup.py b/setup.py index 95178ec..76f5a29 100644 --- a/setup.py +++ b/setup.py @@ -119,6 +119,7 @@ REQUIREMENTS_MAIN = [ 'krakenex', 'frozendict', 'fin-defs @ git+https://gitfub.space/Jmaa/fin-defs.git', + 'pbc-client @ git+https://gitfub.space/Jmaa/pbc-client.git', 'dataclassabc', ] REQUIREMENTS_TEST = [