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 @@ + +
@~}4Xlx&sz}Cpd-v?}Gvz#o6hkq)D^SmM+7U`mMhW=0!bm~; z3O`n{YzITGKhNRu931}4o(gw}r2OS|8I6u3?4h7ZV=@l>+9#^vGGa_oP2o=fQNNN31;WFn1RmRk3K3tPwmi2Btb~8&}Hc-KoEzz_xdI !z)rw}oTTwRDvVWjkAGr5Gf@2@&@C@?Tyg@UdV$Xf z8TTvnO+2=?0(nwxWuhlNIlhGf {O&Vz{q(7glxy4R*V|kI3_TS%T^Uc2MDB~B96j!5~xWc1@2l> zaiht;H;{QYnPHJ|TCXMs4XG|L+2u9U7;XooI6Pyds04pv*5C@05K-D;1q<>H c70CI>eTp_;NcFfNgnXF(pB*$;lDWGQ>fA!K8g|8A#5$7v?31M$gfVGn*Y zRhmo=38FV{TE|#?o7{979yDS_h^o43$c%9UD~HSiIp6$EI^rV89G)958bg#QL1n{R z6+ZT1u3LK~cy}s8%orEjQx{HS)zrycDeX(2rIn5 Sx z^-awxBB}^PkZ__7P};4ug+|$3+* jD@>~+k zzeXsD3ns=ttc-d!&nJ(nq^Tm9XpP|VmXjeoRIcW(4Z0KVuv{UXk`uzRF@1YQNN+1= z07EMmS<^*bC&LeVR6-YzaSaF+>lArXlpj~BG7Y3;`vKRX^#vU*!rupNH(1p+{5u5? zeDDCoI2zgqkMy}}3C;OQbm6koAC5^&R0BE$NMYzCdElNHUt0p*OtLqmi%4IIOV-rc zw$zv5hQV2hlVI4hWK2bvLhMC)x`^qzFrWgrXMuMRUxJVa;J^ZkyzbzrV5XH{5q%=X zrp6Yo`bPphSGZRrYoG!7;5)z?TxeIXR;i%tVSUWcSAib}lq< D(0zuo;$DQ83BpXFSYOk1jOQW4SE TXJUhtAHro66c%#Vu9 z@5kcBO^(R-p=~_h_otAupmUWKTDfb8Fd;N~Y&GBkmomB zf-<0f!qzyo_*TKMk9k8-a2c~q9_ ch4%!*w3)!mSbfoZeD%rRGuvy9$n( zu+C;H{>0>YGsa377%!R3p=lUs2d@N|Q7w)b4nq~KOYNq6k`*)%B)=? `8F_QTHu&8hOb1U@kPzgIHetFKQ&zee08UZ`ZoUl*#9HUXC zf%9eoygd@(-hsk2x ^*y^JZ%gHvmXAGelxpwEd(uNshkRdaqxCen{a=d}~w zf@)q!)P?KFyD|+-MfXp5vNh_8M+bw8Z_0f`N2iQ*V^{4~;0tfjT-K<7cGw<~@B4Op z3#-F4fID2HsI9qgUeP<#)CqSgug(w~v}_FtFIBU=!RXwn7eq|e4*uI~&It-2%zZ>q zAwd@WdhnT+&n69@2n{WKX_}Es+xV4~?RhqX69x7ac1oY4p^tiVx9&+{8kk+esHoXe z&D&7s(m|42e6OQGApNR~FG$}%$V^-k2a7-hPFg1Dt0z9TWUr5keOCUhc{43lhG77* zuvoerzqmY%a!5dIh%-56q9w1R7i1S!pZB$CPTHmDYa?o6v83)stadHGiHVbrfGexw zs*NKP)h dJP{5Fx(0oL9Q3%JkdD`%i%$Aa-?aHTx-aSj z{8D7L74@An2mtw^L*T4z$WS6zA4=;{5*E}E;szusVbkC~vLjr%QK&;DCb@=r*4u85 z!a_%K_;NW0C6Cxsp7~Wex)Qz$M>1uB9rP_vU@Bjz_moL6E5@YD8YRtBB`0r6-*#f9 zBrX|(e~heBClUdJ?uKqcvgHTF%=VB6=Bb`C$Dcm$67lPoOA_UQx2TWo==DcHWS}*1 ze?oBVAOPOXUCv-XU#SQHtV@%)S%Jt+Fd6cv-Z1h6$$2q!(*!Qj#_jL{!+QFZFA^t# z)Ajw9CJ$7~Rx(SI`EF_96NyH_2;ZReL*(C#NMJP6y=Q;)aD)jTDyeMcnWiejVPY-_ zE5e%Z>wS&?CJ3gQnG8oq^TYHNZiUSORB)d(#OhRLE1Ltrz8bYAPm|X*<#gvt=E82R zXbQ8FE*ZD`<%t~kRcSYysOO8yuX~|7Pr>!NaWQ}Sg41Xo$=^7qQET%Isx|D`oY7z7 z@N+$89O_g$&>%n{OAZ+tM(PsMOr5LJ5e3!6f0x@ zxsl7>?8nev%ST6b1P z7hppDBuOhy?MMorpvAViPcrf4lT&Vc&B^sgNy&@C#1WHWiJgMLan}l7UHYLeU`>V^ zj-rM2r A2x)5ge&6S$BVUcKnus zH=?(H 23pROnsvyu#u%XN}PR^)r IIqSTx7i zA2wg+XruL&mqLKD8MI|dyK;G&6STit*l=gTZ5CNDXBhABm@`l{ExW!ZA*Gd}&tA%+ zQvP5~A<>(e!|F;4;Ip2)B;xAG_`xgkt303nwC64P`G*E%h6X4s -UcLTn?Lu;EqH&8(fQ|XC8l~115Z%XS;yYgrZ z7rwtkL%@G17p*F!IB3o3orp#QvTn_jLvTUIxlTY={4NwuD*arqSsu0v#NrdzqHW&t z%wQ`2>W%2OB(JPusndeT@esSFx=gp}VT!Sy>EXf_wBoT}BC+aMZXde63|pjgjGAK4 zj!5$!&F}R(l>A2{HE+6uu}#aU^Q7_$3u4^V$6~>Ggo?w!y519>(fxtr&Vu3 y&YZEW=Cw>J+D89fS(~W4cafOnFPG(fNN76Wra5kUSn3Ek7_qg)sci> z1i2%lM+z^W{a&o~rfe6Y&-J87RUF{sN!t*xkbIh_>*)NzuO4dnm419>lVxz0%ryJw z$F#e8f*|=LY_eK