Skip to content

Commit 8318aba

Browse files
committed
chore: bootstrapping repository
0 parents  commit 8318aba

12 files changed

Lines changed: 1626 additions & 0 deletions

File tree

.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# EditorConfig is awesome: https://editorconfig.org
2+
3+
# top-most EditorConfig file
4+
root = true
5+
6+
[*]
7+
end_of_line = lf
8+
insert_final_newline = true
9+
10+
[*.py]
11+
indent_style = space
12+
indent_size = 4
13+
14+
[Makefile]
15+
indent_style = tab
16+
17+
[*.{js,ts,json,yml}]
18+
indent_style = space
19+
indent_size = 2
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: PR
2+
on:
3+
pull_request_target:
4+
types:
5+
- opened
6+
- reopened
7+
- edited
8+
- synchronize
9+
10+
jobs:
11+
title-format:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: amannn/action-semantic-pull-request@v6
15+
env:
16+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17+
with:
18+
validateSingleCommit: true

.github/workflows/main.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
jobs:
10+
cancel-previous:
11+
runs-on: ubuntu-latest
12+
if: github.ref != 'refs/heads/main'
13+
steps:
14+
- uses: khan/pull-request-workflow-cancel@1.0.1
15+
with:
16+
workflows: "main.yml"
17+
env:
18+
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
19+
20+
formatting:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v5
24+
25+
- name: Install uv
26+
uses: astral-sh/setup-uv@v5
27+
with:
28+
python-version: "3.12"
29+
30+
- name: Run Lint
31+
run: |
32+
uv run hatch run quality:check
33+
34+
- name: Run Type Checks
35+
run: |
36+
uv run hatch run quality:typecheck
37+
38+
testing:
39+
runs-on: ubuntu-latest
40+
strategy:
41+
matrix:
42+
python-version:
43+
- '3.12'
44+
- '3.13'
45+
- '3.14'
46+
needs: formatting
47+
steps:
48+
- uses: actions/checkout@v5
49+
with:
50+
lfs: true
51+
52+
- name: Install uv
53+
uses: astral-sh/setup-uv@v5
54+
with:
55+
python-version: "${{ matrix.python-version }}"
56+
57+
- name: Run tests
58+
run: |
59+
uv run hatch run tests:run

.gitignore

Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
# Created by https://www.toptal.com/developers/gitignore/api/vim,linux,emacs,visualstudiocode
2+
# Edit at https://www.toptal.com/developers/gitignore?templates=vim,linux,emacs,visualstudiocode
3+
4+
### Emacs ###
5+
# -*- mode: gitignore; -*-
6+
*~
7+
\#*\#
8+
/.emacs.desktop
9+
/.emacs.desktop.lock
10+
*.elc
11+
auto-save-list
12+
tramp
13+
.\#*
14+
15+
# Org-mode
16+
.org-id-locations
17+
*_archive
18+
19+
# flymake-mode
20+
*_flymake.*
21+
22+
# eshell files
23+
/eshell/history
24+
/eshell/lastdir
25+
26+
# elpa packages
27+
/elpa/
28+
29+
# reftex files
30+
*.rel
31+
32+
# AUCTeX auto folder
33+
/auto/
34+
35+
# cask packages
36+
.cask/
37+
dist/
38+
39+
# Flycheck
40+
flycheck_*.el
41+
42+
# server auth directory
43+
/server/
44+
45+
# projectiles files
46+
.projectile
47+
48+
# directory configuration
49+
.dir-locals.el
50+
51+
# network security
52+
/network-security.data
53+
54+
55+
### Linux ###
56+
57+
# temporary files which can be created if a process still has a handle open of a deleted file
58+
.fuse_hidden*
59+
60+
# KDE directory preferences
61+
.directory
62+
63+
# Linux trash folder which might appear on any partition or disk
64+
.Trash-*
65+
66+
# .nfs files are created when an open file is removed but is still being accessed
67+
.nfs*
68+
69+
### Vim ###
70+
# Swap
71+
[._]*.s[a-v][a-z]
72+
!*.svg # comment out if you don't need vector files
73+
[._]*.sw[a-p]
74+
[._]s[a-rt-v][a-z]
75+
[._]ss[a-gi-z]
76+
[._]sw[a-p]
77+
78+
# Session
79+
Session.vim
80+
Sessionx.vim
81+
82+
# Temporary
83+
.netrwhist
84+
# Auto-generated tag files
85+
tags
86+
# Persistent undo
87+
[._]*.un~
88+
89+
### VisualStudioCode ###
90+
.vscode/*
91+
!.vscode/settings.json
92+
!.vscode/tasks.json
93+
!.vscode/launch.json
94+
!.vscode/extensions.json
95+
!.vscode/*.code-snippets
96+
97+
# Local History for Visual Studio Code
98+
.history/
99+
100+
# Built Visual Studio Code Extensions
101+
*.vsix
102+
103+
### VisualStudioCode Patch ###
104+
# Ignore all local history of files
105+
.history
106+
.ionide
107+
108+
# End of https://www.toptal.com/developers/gitignore/api/vim,linux,emacs,visualstudiocode
109+
110+
# Created by https://www.toptal.com/developers/gitignore/api/python
111+
# Edit at https://www.toptal.com/developers/gitignore?templates=python
112+
113+
### Python ###
114+
# Byte-compiled / optimized / DLL files
115+
__pycache__/
116+
*.py[cod]
117+
*$py.class
118+
119+
# C extensions
120+
*.so
121+
122+
# Distribution / packaging
123+
.Python
124+
build/
125+
develop-eggs/
126+
dist/
127+
downloads/
128+
eggs/
129+
.eggs/
130+
lib/
131+
lib64/
132+
parts/
133+
sdist/
134+
var/
135+
wheels/
136+
share/python-wheels/
137+
*.egg-info/
138+
.installed.cfg
139+
*.egg
140+
MANIFEST
141+
142+
# PyInstaller
143+
# Usually these files are written by a python script from a template
144+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
145+
*.manifest
146+
*.spec
147+
148+
# Installer logs
149+
pip-log.txt
150+
pip-delete-this-directory.txt
151+
152+
# Unit test / coverage reports
153+
htmlcov/
154+
.tox/
155+
.nox/
156+
.coverage
157+
.coverage.*
158+
.cache
159+
nosetests.xml
160+
coverage.xml
161+
*.cover
162+
*.py,cover
163+
.hypothesis/
164+
.pytest_cache/
165+
cover/
166+
167+
# Translations
168+
*.mo
169+
*.pot
170+
171+
# Django stuff:
172+
*.log
173+
local_settings.py
174+
db.sqlite3
175+
db.sqlite3-journal
176+
177+
# Flask stuff:
178+
instance/
179+
.webassets-cache
180+
181+
# Scrapy stuff:
182+
.scrapy
183+
184+
# Sphinx documentation
185+
docs/_build/
186+
187+
# PyBuilder
188+
.pybuilder/
189+
target/
190+
191+
# Jupyter Notebook
192+
.ipynb_checkpoints
193+
194+
# IPython
195+
profile_default/
196+
ipython_config.py
197+
198+
# pyenv
199+
# For a library or package, you might want to ignore these files since the code is
200+
# intended to run in multiple environments; otherwise, check them in:
201+
# .python-version
202+
203+
# pipenv
204+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
205+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
206+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
207+
# install all needed dependencies.
208+
#Pipfile.lock
209+
210+
# poetry
211+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
212+
# This is especially recommended for binary packages to ensure reproducibility, and is more
213+
# commonly ignored for libraries.
214+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
215+
#poetry.lock
216+
217+
# pdm
218+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
219+
#pdm.lock
220+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
221+
# in version control.
222+
# https://pdm.fming.dev/#use-with-ide
223+
.pdm.toml
224+
225+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
226+
__pypackages__/
227+
228+
# Celery stuff
229+
celerybeat-schedule
230+
celerybeat.pid
231+
232+
# SageMath parsed files
233+
*.sage.py
234+
235+
# Environments
236+
.env
237+
.venv
238+
env/
239+
venv/
240+
ENV/
241+
env.bak/
242+
venv.bak/
243+
244+
# Spyder project settings
245+
.spyderproject
246+
.spyproject
247+
248+
# Rope project settings
249+
.ropeproject
250+
251+
# mkdocs documentation
252+
/site
253+
254+
# mypy
255+
.mypy_cache/
256+
.dmypy.json
257+
dmypy.json
258+
259+
# Pyre type checker
260+
.pyre/
261+
262+
# pytype static type analyzer
263+
.pytype/
264+
265+
# Cython debug symbols
266+
cython_debug/
267+
268+
# PyCharm
269+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
270+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
271+
# and can be added to the global gitignore or merged into this file. For a more nuclear
272+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
273+
#.idea/
274+
275+
### Python Patch ###
276+
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
277+
poetry.toml
278+
279+
# ruff
280+
.ruff_cache/
281+
282+
# LSP config files
283+
pyrightconfig.json
284+
285+
# End of https://www.toptal.com/developers/gitignore/api/python

0 commit comments

Comments
 (0)