summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@glootie.lan.tomvanderlee.com>2023-11-19 16:55:03 +0100
committerGravatar Tom van der Lee <tom@glootie.lan.tomvanderlee.com>2023-11-19 16:55:03 +0100
commit4147da1317c19fa61d6aa265e8370e63231f9207 (patch)
tree316925e780126c97fb10342e3175fd0e6b0aa3fb
download2023-4147da1317c19fa61d6aa265e8370e63231f9207.tar.gz
2023-4147da1317c19fa61d6aa265e8370e63231f9207.tar.bz2
2023-4147da1317c19fa61d6aa265e8370e63231f9207.zip
Initial commit
-rw-r--r--.gitignore234
-rw-r--r--.pre-commit-config.yaml15
-rw-r--r--aoc/__init__.py43
-rw-r--r--aoc/__main__.py66
-rw-r--r--aoc/datastructures.py98
-rw-r--r--aoc/decorators.py30
-rw-r--r--aoc/mixins.py77
-rw-r--r--aoc/template/__init__.py16
-rw-r--r--aoc/template/example.txt0
-rw-r--r--aoc/template/input.txt0
-rw-r--r--aoc/test_init.py8
-rw-r--r--aoc/tests/__init__.py0
-rw-r--r--aoc/tests/test_datastructures.py79
-rw-r--r--aoc/utils.py6
-rw-r--r--conftest.py36
-rw-r--r--requirements.txt3
16 files changed, 711 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f402d03
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,234 @@
1
2# Created by https://www.toptal.com/developers/gitignore/api/python,pycharm+all
3# Edit at https://www.toptal.com/developers/gitignore?templates=python,pycharm+all
4
5### PyCharm+all ###
6# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
7# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
8
9# User-specific stuff
10.idea/**/workspace.xml
11.idea/**/tasks.xml
12.idea/**/usage.statistics.xml
13.idea/**/dictionaries
14.idea/**/shelf
15
16# Generated files
17.idea/**/contentModel.xml
18
19# Sensitive or high-churn files
20.idea/**/dataSources/
21.idea/**/dataSources.ids
22.idea/**/dataSources.local.xml
23.idea/**/sqlDataSources.xml
24.idea/**/dynamic.xml
25.idea/**/uiDesigner.xml
26.idea/**/dbnavigator.xml
27
28# Gradle
29.idea/**/gradle.xml
30.idea/**/libraries
31
32# Gradle and Maven with auto-import
33# When using Gradle or Maven with auto-import, you should exclude module files,
34# since they will be recreated, and may cause churn. Uncomment if using
35# auto-import.
36# .idea/artifacts
37# .idea/compiler.xml
38# .idea/jarRepositories.xml
39# .idea/modules.xml
40# .idea/*.iml
41# .idea/modules
42# *.iml
43# *.ipr
44
45# CMake
46cmake-build-*/
47
48# Mongo Explorer plugin
49.idea/**/mongoSettings.xml
50
51# File-based project format
52*.iws
53
54# IntelliJ
55out/
56
57# mpeltonen/sbt-idea plugin
58.idea_modules/
59
60# JIRA plugin
61atlassian-ide-plugin.xml
62
63# Cursive Clojure plugin
64.idea/replstate.xml
65
66# Crashlytics plugin (for Android Studio and IntelliJ)
67com_crashlytics_export_strings.xml
68crashlytics.properties
69crashlytics-build.properties
70fabric.properties
71
72# Editor-based Rest Client
73.idea/httpRequests
74
75# Android studio 3.1+ serialized cache file
76.idea/caches/build_file_checksums.ser
77
78### PyCharm+all Patch ###
79# Ignores the whole .idea folder and all .iml files
80# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
81
82.idea/
83
84# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
85
86*.iml
87modules.xml
88.idea/misc.xml
89*.ipr
90
91# Sonarlint plugin
92.idea/sonarlint
93
94### Python ###
95# Byte-compiled / optimized / DLL files
96__pycache__/
97*.py[cod]
98*$py.class
99
100# C extensions
101*.so
102
103# Distribution / packaging
104.Python
105build/
106develop-eggs/
107dist/
108downloads/
109eggs/
110.eggs/
111lib/
112lib64/
113parts/
114sdist/
115var/
116wheels/
117pip-wheel-metadata/
118share/python-wheels/
119*.egg-info/
120.installed.cfg
121*.egg
122MANIFEST
123
124# PyInstaller
125# Usually these files are written by a python script from a template
126# before PyInstaller builds the exe, so as to inject date/other infos into it.
127*.manifest
128*.spec
129
130# Installer logs
131pip-log.txt
132pip-delete-this-directory.txt
133
134# Unit test / coverage reports
135htmlcov/
136.tox/
137.nox/
138.coverage
139.coverage.*
140.cache
141nosetests.xml
142coverage.xml
143*.cover
144*.py,cover
145.hypothesis/
146.pytest_cache/
147pytestdebug.log
148
149# Translations
150*.mo
151*.pot
152
153# Django stuff:
154*.log
155local_settings.py
156db.sqlite3
157db.sqlite3-journal
158
159# Flask stuff:
160instance/
161.webassets-cache
162
163# Scrapy stuff:
164.scrapy
165
166# Sphinx documentation
167docs/_build/
168doc/_build/
169
170# PyBuilder
171target/
172
173# Jupyter Notebook
174.ipynb_checkpoints
175
176# IPython
177profile_default/
178ipython_config.py
179
180# pyenv
181.python-version
182
183# pipenv
184# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
185# However, in case of collaboration, if having platform-specific dependencies or dependencies
186# having no cross-platform support, pipenv may install dependencies that don't work, or not
187# install all needed dependencies.
188#Pipfile.lock
189
190# PEP 582; used by e.g. github.com/David-OConnor/pyflow
191__pypackages__/
192
193# Celery stuff
194celerybeat-schedule
195celerybeat.pid
196
197# SageMath parsed files
198*.sage.py
199
200# Environments
201.env
202.venv
203env/
204venv/
205ENV/
206env.bak/
207venv.bak/
208pythonenv*
209
210# Spyder project settings
211.spyderproject
212.spyproject
213
214# Rope project settings
215.ropeproject
216
217# mkdocs documentation
218/site
219
220# mypy
221.mypy_cache/
222.dmypy.json
223dmypy.json
224
225# Pyre type checker
226.pyre/
227
228# pytype static type analyzer
229.pytype/
230
231# profiling data
232.prof
233