From ca60f535997c068ba3003fbe4a7fb8078a8e1da7 Mon Sep 17 00:00:00 2001 From: Tenzin Tsundue <52460417+tenzin3@users.noreply.github.com> Date: Fri, 19 Apr 2024 15:25:24 +0530 Subject: [PATCH] Initial commit --- .github/workflows/CI.yml | 35 +++++++ .gitignore | 129 ++++++++++++++++++++++++++ .pre-commit-config.yaml | 44 +++++++++ LICENSE | 21 +++++ README.md | 32 +++++++ docs/.nojekyll | 1 + docs/LICENSE.md | 22 +++++ docs/README.md | 6 ++ docs/_assets/favicon.ico | Bin 0 -> 1150 bytes docs/_assets/logo.png | Bin 0 -> 26318 bytes docs/_sidebar.md | 6 ++ docs/background.md | 5 + docs/examples.md | 4 + docs/getting-started.md | 29 ++++++ docs/help.md | 6 ++ docs/index.html | 45 +++++++++ docs/reference.md | 34 +++++++ non-coding-work-reports/2023-10-04.md | 1 + pyproject.toml | 30 ++++++ setup.cfg | 31 +++++++ src/project_name/__init__.py | 0 src/project_name/example.py | 2 + tests/__init__.py | 0 tests/test_example.py | 5 + 24 files changed, 488 insertions(+) create mode 100644 .github/workflows/CI.yml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/.nojekyll create mode 100644 docs/LICENSE.md create mode 100644 docs/README.md create mode 100644 docs/_assets/favicon.ico create mode 100644 docs/_assets/logo.png create mode 100644 docs/_sidebar.md create mode 100644 docs/background.md create mode 100644 docs/examples.md create mode 100644 docs/getting-started.md create mode 100644 docs/help.md create mode 100644 docs/index.html create mode 100644 docs/reference.md create mode 100644 non-coding-work-reports/2023-10-04.md create mode 100644 pyproject.toml create mode 100644 setup.cfg create mode 100644 src/project_name/__init__.py create mode 100644 src/project_name/example.py create mode 100644 tests/__init__.py create mode 100644 tests/test_example.py diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..bdd06bd --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,35 @@ +name: CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +permissions: + contents: read + +jobs: + test: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + + - name: Install dependencies + run: | + pip install -U pip + pip install . + pip install .[dev] + + - name: Test with pytest + run: PYTHONPATH=src pytest + + - name: Test Coverage + run: PYTHONPATH=src pytest --cov project_name diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6e4761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..55e4b03 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,44 @@ +default_stages: [commit] + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + + - repo: https://github.com/asottile/pyupgrade + rev: v2.37.3 + hooks: + - id: pyupgrade + args: [--py38-plus] + + - repo: https://github.com/psf/black + rev: 22.8.0 + hooks: + - id: black + + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + + - repo: https://github.com/PyCQA/flake8 + rev: 5.0.4 + hooks: + - id: flake8 + args: ["--config=setup.cfg"] + additional_dependencies: [flake8-isort] + + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v0.982 + hooks: + - id: mypy + additional_dependencies: [types-all] + +# sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date +ci: + autoupdate_schedule: weekly + skip: [] + submodules: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..31f249e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 OpenPecha + +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 new file mode 100644 index 0000000..c4b9a14 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ + +

+
+ OpenPecha +
+

+ + + +

Use this repo template for all new Python projects.

+ +## Description + +Project description goes here. + +## Project owner(s) + + + +- [@10zinten](https://github.com/10zinten) +- [@evanyerburgh](https://github.com/evanyerburgh) + +## Integrations + + + +None +## Docs + + + +Read the docs [here](https://wiki.openpecha.org/#/dev/coding-guidelines). diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ + diff --git a/docs/LICENSE.md b/docs/LICENSE.md new file mode 100644 index 0000000..7df6ac9 --- /dev/null +++ b/docs/LICENSE.md @@ -0,0 +1,22 @@ + +# MIT License + +Copyright (c) 2023 OpenPecha + +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/docs/README.md b/docs/README.md new file mode 100644 index 0000000..aeb4a66 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,6 @@ + +# Project name + + + +_Short conceptual overview_ diff --git a/docs/_assets/favicon.ico b/docs/_assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bd7c9d77bd42d90cdfc0784652fb95a70c56701a GIT binary patch literal 1150 zcmcJOUr19?9LJBTC!PcO9~;mgpi#8Aw+(~aU%qM|LYQ`Gz6rIAF~ccT$S}y+vSP0*108b&Uw+V*&Fg{ zlKGgwui&JbNdB0ck9)T?qY@+cw2YSBVG*mDNxmG0_&jKbzX7?(g7;6J1a}Z^Ce5gq zBi*{Mw5*FMO${MwYW)OqE`z8P$nF&vGIGTE%-_qvx>DhF$6UXLih=Crh~?S?s`D_# z;Cvywji=?uCGX^(5+?T*N5d}<-;yp|T^GKqjpe|aj=~LsC}?4Xk%-P^r+PO7A>;|r z^3D~Wj~ZNz*4&b5g|ku7deRh~i@&=S@OK1}@QtoNs{owtu*1la^b#4>W~C|YW|Jv1}1P5wQd#1^90#i zTd(NcH?S{te9f}XnGAnT{ii#_eot>9WGI`Ewlt(lCL}#64j$9vtWDB}#t{0aF^;=G E0hRRk&j0`b literal 0 HcmV?d00001 diff --git a/docs/_assets/logo.png b/docs/_assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..764b69937b4e414c0620f9f5d859032aaa7105ec GIT binary patch literal 26318 zcmeFYWmufemNtq*aCd2(;O_438nl7N-Q9z`1$TD|7F-fsf&_PW4K5#f_ntlPoHJ*> zGuL&#^J|)`n|`X+y4QN{x>r?KQ$#2$N+H4H!-Ii=A<0OKtG@pp`tyW?d4H|euE_xd zBW?6j*LG0_x&s`X?9D7~KmZp{2M_?{VQB^i=CRb2Y3W4Bllb{<8`Bx83VDNDdwdVZ z`T2o3QC+5@=E&|CuU@u@m7E-`^+}g7kMHezef|ZZ8CSoIWCwaFGsh{rt0`p}Wvpct`Smj^JC>_VHuy@opT-bL-^uZ`b**wTRPW$<4u-_1q%r z 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 literal 0 HcmV?d00001 diff --git a/docs/_sidebar.md b/docs/_sidebar.md new file mode 100644 index 0000000..8ce5834 --- /dev/null +++ b/docs/_sidebar.md @@ -0,0 +1,6 @@ + +- [Overview](README.md) +- [Getting started](getting-started.md) +- [Reference](reference.md) +- [Help](help.md) +- [License](LICENSE.md) diff --git a/docs/background.md b/docs/background.md new file mode 100644 index 0000000..7c7558e --- /dev/null +++ b/docs/background.md @@ -0,0 +1,5 @@ + +# Background + +_Optional page_ + diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 0000000..1b81877 --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,4 @@ + +# Examples + + diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..b5cde18 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,29 @@ +# Getting started + +Intro + +## 1. Prerequisites + +- Python version +- _Dependency 1_ + +## 2. Installation + +1. _Write the step here._ +2. _Write the step here._ + +## 3. Configuration + +1. _Write the step here._ +2. _Write the step here._ + +## 4. Short how-to + +1. _Write the step here._ +2. _Write the step here._ + +## 5. Troubleshooting + +_Add any known issues and solutions_ + +Get more help [here](help.md). \ No newline at end of file diff --git a/docs/help.md b/docs/help.md new file mode 100644 index 0000000..9da8fa2 --- /dev/null +++ b/docs/help.md @@ -0,0 +1,6 @@ + +# Need help or have questions? + +- File an [issue](add link). +- Join our [Discord](https://discord.com/invite/7GFpPFSTeA) and ask there. +- Email us at openpecha[at]gmail[dot]com. diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..08ef899 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,45 @@ + + + + + Tool name + + + + + + + + + + +
+ + + + + + + + + + diff --git a/docs/reference.md b/docs/reference.md new file mode 100644 index 0000000..7dfb453 --- /dev/null +++ b/docs/reference.md @@ -0,0 +1,34 @@ + +# Reference + + + +Overview +## Main section (change title) + +## Reference articles + +- []() +- []() + + + +Overview +## Endpoints/library functions + + + +### Resource description + +### Endpoints and methods + +### Parameters + +### Request examples + +### Response examples and schema + +## Reference articles + +- []() +- []() diff --git a/non-coding-work-reports/2023-10-04.md b/non-coding-work-reports/2023-10-04.md new file mode 100644 index 0000000..61b2ec1 --- /dev/null +++ b/non-coding-work-reports/2023-10-04.md @@ -0,0 +1 @@ +Your non-coding work reports will go here diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a4cf13f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,30 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "project_name" +version = "0.0.1" +authors = [ + { name="OpenPecha", email="dev@openpecha.org" }, +] +description = "A small example package" +readme = "README.md" +requires-python = ">=3.8" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] + +[project.optional-dependencies] +dev = [ + "pytest", + "pytest-cov", + "pre-commit", +] + + +[project.urls] +"Homepage" = "https://github.com/OpenPecha/openpecha-project-template" +"Bug Tracker" = "https://github.com/OpenPecha/openpecha-project-template/issues" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..cf57192 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,31 @@ +[flake8] +max-line-length = 120 +exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules,venv +per-file-ignores = __init__.py:F401 + +[pycodestyle] +max-line-length = 120 +exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules,venv + +[isort] +line_length = 88 +known_first_party = bot +multi_line_output = 3 +default_section = THIRDPARTY +skip = venv/ +skip_glob = +include_trailing_comma = true +force_grid_wrap = 0 +use_parentheses = true + +[mypy] +python_version = 3.8 +exclude = test_*.py +check_untyped_defs = True +ignore_missing_imports = True +warn_unused_ignores = True +warn_redundant_casts = True +warn_unused_configs = True + +[coverage:run] +omit = tests/* diff --git a/src/project_name/__init__.py b/src/project_name/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/project_name/example.py b/src/project_name/example.py new file mode 100644 index 0000000..c929f88 --- /dev/null +++ b/src/project_name/example.py @@ -0,0 +1,2 @@ +def add_one(number): + return number + 1 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_example.py b/tests/test_example.py new file mode 100644 index 0000000..be899fd --- /dev/null +++ b/tests/test_example.py @@ -0,0 +1,5 @@ +from project_name.example import add_one + + +def test_add_one(): + assert add_one(1) == 2