FourCIPP 0.28.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. fourcipp-0.28.0/.coveragerc +2 -0
  2. fourcipp-0.28.0/.github/workflows/check_code.yaml +42 -0
  3. fourcipp-0.28.0/.github/workflows/publish_pypi.yaml +35 -0
  4. fourcipp-0.28.0/.github/workflows/run_testsuite.yaml +79 -0
  5. fourcipp-0.28.0/.github/workflows/tag_version.yaml +65 -0
  6. fourcipp-0.28.0/.github/workflows/update_4C_metadata_schema_file.yaml +90 -0
  7. fourcipp-0.28.0/.gitignore +323 -0
  8. fourcipp-0.28.0/.pre-commit-config.yaml +107 -0
  9. fourcipp-0.28.0/LICENSE +21 -0
  10. fourcipp-0.28.0/PKG-INFO +171 -0
  11. fourcipp-0.28.0/README.md +129 -0
  12. fourcipp-0.28.0/docs/assets/fourcipp_logo_black.svg +6 -0
  13. fourcipp-0.28.0/pyproject.toml +41 -0
  14. fourcipp-0.28.0/requirements.in +6 -0
  15. fourcipp-0.28.0/requirements.txt +42 -0
  16. fourcipp-0.28.0/setup.cfg +4 -0
  17. fourcipp-0.28.0/src/FourCIPP.egg-info/PKG-INFO +171 -0
  18. fourcipp-0.28.0/src/FourCIPP.egg-info/SOURCES.txt +62 -0
  19. fourcipp-0.28.0/src/FourCIPP.egg-info/dependency_links.txt +1 -0
  20. fourcipp-0.28.0/src/FourCIPP.egg-info/entry_points.txt +2 -0
  21. fourcipp-0.28.0/src/FourCIPP.egg-info/requires.txt +12 -0
  22. fourcipp-0.28.0/src/FourCIPP.egg-info/top_level.txt +1 -0
  23. fourcipp-0.28.0/src/fourcipp/__init__.py +34 -0
  24. fourcipp-0.28.0/src/fourcipp/config/4C_metadata.yaml +211964 -0
  25. fourcipp-0.28.0/src/fourcipp/config/4C_schema.json +393521 -0
  26. fourcipp-0.28.0/src/fourcipp/config/config.yaml +12 -0
  27. fourcipp-0.28.0/src/fourcipp/fourc_input.py +603 -0
  28. fourcipp-0.28.0/src/fourcipp/legacy_io/__init__.py +162 -0
  29. fourcipp-0.28.0/src/fourcipp/legacy_io/element.py +135 -0
  30. fourcipp-0.28.0/src/fourcipp/legacy_io/inline_dat.py +212 -0
  31. fourcipp-0.28.0/src/fourcipp/legacy_io/node.py +114 -0
  32. fourcipp-0.28.0/src/fourcipp/legacy_io/node_topology.py +194 -0
  33. fourcipp-0.28.0/src/fourcipp/legacy_io/particle.py +71 -0
  34. fourcipp-0.28.0/src/fourcipp/utils/__init__.py +22 -0
  35. fourcipp-0.28.0/src/fourcipp/utils/cli.py +128 -0
  36. fourcipp-0.28.0/src/fourcipp/utils/configuration.py +180 -0
  37. fourcipp-0.28.0/src/fourcipp/utils/converter.py +138 -0
  38. fourcipp-0.28.0/src/fourcipp/utils/dict_utils.py +375 -0
  39. fourcipp-0.28.0/src/fourcipp/utils/metadata.py +32 -0
  40. fourcipp-0.28.0/src/fourcipp/utils/not_set.py +64 -0
  41. fourcipp-0.28.0/src/fourcipp/utils/typing.py +39 -0
  42. fourcipp-0.28.0/src/fourcipp/utils/validation.py +155 -0
  43. fourcipp-0.28.0/src/fourcipp/utils/yaml_io.py +101 -0
  44. fourcipp-0.28.0/src/fourcipp/version.py +34 -0
  45. fourcipp-0.28.0/tests/__init__.py +22 -0
  46. fourcipp-0.28.0/tests/conftest.py +74 -0
  47. fourcipp-0.28.0/tests/fourcipp/__init__.py +22 -0
  48. fourcipp-0.28.0/tests/fourcipp/legacy_io/__init__.py +22 -0
  49. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_element.py +88 -0
  50. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_inline_dat.py +64 -0
  51. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_legacy_io.py +37 -0
  52. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_node.py +53 -0
  53. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_node_topology.py +64 -0
  54. fourcipp-0.28.0/tests/fourcipp/legacy_io/test_particle.py +47 -0
  55. fourcipp-0.28.0/tests/fourcipp/legacy_io/utils.py +86 -0
  56. fourcipp-0.28.0/tests/fourcipp/test_fourc_input.py +647 -0
  57. fourcipp-0.28.0/tests/fourcipp/test_readme_quickstart_example.py +69 -0
  58. fourcipp-0.28.0/tests/fourcipp/utils/__init__.py +22 -0
  59. fourcipp-0.28.0/tests/fourcipp/utils/test_configuration.py +32 -0
  60. fourcipp-0.28.0/tests/fourcipp/utils/test_converter.py +110 -0
  61. fourcipp-0.28.0/tests/fourcipp/utils/test_dict_utils.py +666 -0
  62. fourcipp-0.28.0/tests/fourcipp/utils/test_not_set.py +44 -0
  63. fourcipp-0.28.0/tests/fourcipp/utils/test_validation.py +40 -0
  64. fourcipp-0.28.0/tests/fourcipp/utils/test_yaml_io.py +42 -0
@@ -0,0 +1,2 @@
1
+ [run]
2
+ omit = src/fourcipp/version.py
@@ -0,0 +1,42 @@
1
+ name: Code quality
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - reopened
11
+ - synchronize
12
+
13
+ jobs:
14
+ fourcipp-code-check:
15
+ name: Code check
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v3
21
+ - name: Set up virtual environment
22
+ uses: conda-incubator/setup-miniconda@v3
23
+ with:
24
+ auto-update-conda: true
25
+ conda-remove-defaults: true
26
+ activate-environment: fourcipp
27
+ python-version: 3.12
28
+ - name: Install requirements
29
+ shell: bash -el {0}
30
+ run: |
31
+ conda activate fourcipp
32
+ pip install -e .[dev,safe]
33
+ pip install pre-commit
34
+ - name: Run code-checks
35
+ shell: bash -el {0}
36
+ run: |
37
+ conda activate fourcipp
38
+ if [ "${GITHUB_REF}" = "refs/heads/main" ]; then
39
+ SKIP=no-commit-to-branch pre-commit run --all-files
40
+ else
41
+ pre-commit run --all-files
42
+ fi
@@ -0,0 +1,35 @@
1
+ name: Build and upload to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ # Build and publish wheel for each new version of FourCIPP
7
+ - "v[0-9]*.[0-9]*.[0-9]*"
8
+
9
+ jobs:
10
+ build_dist:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v5
14
+
15
+ - name: Build sdist and wheel
16
+ run: pipx run build
17
+
18
+ - uses: actions/upload-artifact@v4
19
+ with:
20
+ name: dist
21
+ path: dist/*
22
+
23
+ upload_pypi:
24
+ needs: build_dist
25
+ runs-on: ubuntu-latest
26
+ environment: pypi
27
+ permissions:
28
+ id-token: write
29
+ steps:
30
+ - uses: actions/download-artifact@v5
31
+ with:
32
+ name: dist
33
+ path: dist
34
+
35
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,79 @@
1
+ name: Testsuite
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - reopened
11
+ - synchronize
12
+ schedule:
13
+ - cron: "30 5 * * *" # Run after metadata file update
14
+
15
+ jobs:
16
+ run_pytest:
17
+ runs-on: ${{ matrix.os }}
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ os: [ubuntu-latest, windows-latest, macos-latest]
22
+ python-version: ["3.10", "3.13"]
23
+ defaults:
24
+ run:
25
+ shell: bash -l {0}
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v3
29
+ - name: Set up virtual environment
30
+ uses: conda-incubator/setup-miniconda@v3
31
+ with:
32
+ auto-update-conda: true
33
+ conda-remove-defaults: true
34
+ activate-environment: fourcipp
35
+ python-version: ${{ matrix.python-version }}
36
+ - name: Install requirements
37
+ shell: bash -el {0}
38
+ run: |
39
+ conda activate fourcipp
40
+ pip install -e .[dev,safe]
41
+ - name: Run pytest
42
+ shell: bash -el {0}
43
+ run: |
44
+ conda activate fourcipp
45
+ pytest --color=yes -v --performance-tests --no-cov
46
+ cat timings.md >> $GITHUB_STEP_SUMMARY
47
+
48
+ run_pytest_with_4C:
49
+ runs-on: ubuntu-latest
50
+ container:
51
+ image: ghcr.io/4c-multiphysics/4c:main
52
+ defaults:
53
+ run:
54
+ shell: bash -l {0}
55
+ steps:
56
+ - name: Checkout repository
57
+ uses: actions/checkout@v3
58
+ - name: Set up virtual environment
59
+ uses: conda-incubator/setup-miniconda@v3
60
+ with:
61
+ auto-update-conda: true
62
+ conda-remove-defaults: true
63
+ activate-environment: fourcipp
64
+ python-version: 3.13
65
+ - name: Install requirements
66
+ shell: bash -el {0}
67
+ run: |
68
+ conda activate fourcipp
69
+ pip install -e .[dev,safe]
70
+ - name: Run pytest using 4C_docker_main config
71
+ run: |
72
+ fourcipp switch-config-profile 4C_docker_main
73
+ pytest --color=yes -v
74
+ - name: Run pytest using default config
75
+ # For this job coverage is turned off, otherwise the checks would fail.
76
+ # Coverage is done in the 4C docker job, as here 4C test input files are available.
77
+ run: |
78
+ fourcipp switch-config-profile default
79
+ pytest --color=yes -v --no-cov
@@ -0,0 +1,65 @@
1
+ name: Auto Tag Versioning
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Testsuite"]
6
+ types:
7
+ - completed
8
+
9
+ jobs:
10
+ tag:
11
+ # only tag versions after a new commit to main and after successful testing (not after scheduled/cron testing)
12
+ if: github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'main' && github.event.workflow_run.conclusion == 'success'
13
+ runs-on: ubuntu-latest
14
+ permissions:
15
+ contents: write
16
+
17
+ steps:
18
+ - name: Checkout code
19
+ uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+ token: ${{ secrets.PAT_4C_BOT_MERGE_TO_MAIN }}
23
+
24
+ - name: Get latest tag
25
+ id: get_tag
26
+ run: |
27
+ latest=$(git tag --list 'v[0-9]*.[0-9]*.[0-9]*' | sort -V | tail -n1)
28
+ echo "Latest tag: $latest"
29
+ echo "latest_tag=$latest" >> "$GITHUB_OUTPUT"
30
+
31
+ - name: Check if commit is already tagged
32
+ id: check_tag
33
+ run: |
34
+ tag=$(git tag --points-at HEAD | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' || true)
35
+ if [ -n "$tag" ]; then
36
+ echo "This commit is already tagged with $tag. Skipping auto-tag."
37
+ echo "skip=true" >> "$GITHUB_OUTPUT"
38
+ else
39
+ echo "No version tag on this commit. Proceeding."
40
+ echo "skip=false" >> "$GITHUB_OUTPUT"
41
+ fi
42
+
43
+ - name: Compute next version tag
44
+ if: steps.check_tag.outputs.skip != 'true'
45
+ id: new_tag
46
+ run: |
47
+ latest="${{ steps.get_tag.outputs.latest_tag }}"
48
+ version="${latest#v}"
49
+ IFS='.' read -r major minor patch <<< "$version"
50
+ minor=$((minor + 1))
51
+ new_tag="v${major}.${minor}.0"
52
+ echo "New tag: $new_tag"
53
+ echo "tag=$new_tag" >> "$GITHUB_OUTPUT"
54
+
55
+ - name: Configure Git user
56
+ if: steps.check_tag.outputs.skip != 'true'
57
+ run: |
58
+ git config user.name "4C-Bot"
59
+ git config user.email "207683181+4C-Bot@users.noreply.github.com"
60
+
61
+ - name: Create and push new tag
62
+ if: steps.check_tag.outputs.skip != 'true'
63
+ run: |
64
+ git tag ${{ steps.new_tag.outputs.tag }}
65
+ git push origin ${{ steps.new_tag.outputs.tag }}
@@ -0,0 +1,90 @@
1
+ name: Update 4C metadata and schema file
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 5 * * *" # run each night at 5AM. Current nightly 4C test should be completed by then
6
+
7
+ jobs:
8
+ update-4C-metadata-schema-file:
9
+ name: Update 4C metadata and schema file
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout repository
14
+ uses: actions/checkout@v3
15
+ with:
16
+ token: ${{ secrets.PAT_4C_BOT_MERGE_TO_MAIN }}
17
+ - name: Pull latest metadata file from 4C
18
+ uses: dawidd6/action-download-artifact@v9
19
+ with:
20
+ repo: 4C-multiphysics/4C
21
+ github_token: ${{ secrets.ORGANIZATION_TOKEN }}
22
+ workflow: nightly_tests.yml
23
+ workflow_conclusion: completed
24
+ name: clang18_build-metadata
25
+ path: clang18_build-metadata
26
+ - name: Pull latest schema file from 4C
27
+ uses: dawidd6/action-download-artifact@v9
28
+ with:
29
+ repo: 4C-multiphysics/4C
30
+ github_token: ${{ secrets.ORGANIZATION_TOKEN }}
31
+ workflow: nightly_tests.yml
32
+ workflow_conclusion: completed
33
+ name: clang18_build-schema
34
+ path: clang18_build-schema
35
+ # Format new files with pre-commit (this needs to be done before the files are hashed to ensure that both are formatted)
36
+ - name: Set up virtual environment
37
+ uses: conda-incubator/setup-miniconda@v3
38
+ with:
39
+ auto-update-conda: true
40
+ conda-remove-defaults: true
41
+ activate-environment: fourcipp
42
+ python-version: 3.12
43
+ - name: Install requirements
44
+ shell: bash -el {0}
45
+ run: |
46
+ conda activate fourcipp
47
+ pip install -e .[dev,safe]
48
+ pip install pre-commit
49
+ # files need to be specified because they are not yet staged and therefore pre-commit cannot find them
50
+ # pre-commit hook is run twice to not fail if the first run fails (due to formatting files)
51
+ - name: Run pre-commit, i.e., format files
52
+ shell: bash -el {0}
53
+ run: |
54
+ conda activate fourcipp
55
+ SKIP=no-commit-to-branch pre-commit run --files clang18_build-metadata/4C_metadata.yaml clang18_build-schema/4C_schema.json || SKIP=no-commit-to-branch pre-commit run --files clang18_build-metadata/4C_metadata.yaml clang18_build-schema/4C_schema.json
56
+ # Compare the hashes
57
+ - name: Check if metadata file has changed and overwrite old file if necessary
58
+ run: |
59
+ set -euo pipefail
60
+ hash_current=$(grep -v 'commit_hash' src/fourcipp/config/4C_metadata.yaml | sha256sum | awk '{print $1}')
61
+ hash_new=$(grep -v 'commit_hash' clang18_build-metadata/4C_metadata.yaml | sha256sum | awk '{print $1}')
62
+
63
+ echo "Current metadata file hash: $hash_current"
64
+ echo "New metadata file hash: $hash_new"
65
+
66
+ if [ "$hash_current" != "$hash_new" ]; then
67
+ mv clang18_build-metadata/4C_metadata.yaml src/fourcipp/config/4C_metadata.yaml
68
+ mv clang18_build-schema/4C_schema.json src/fourcipp/config/4C_schema.json
69
+ rm -r clang18_build-metadata
70
+ rm -r clang18_build-schema
71
+
72
+ echo "metadata_file_changed=true" >> $GITHUB_ENV
73
+ else
74
+ echo "metadata_file_changed=false" >> $GITHUB_ENV
75
+ fi
76
+ # Commit and push changes
77
+ - name: Get 4C hash for commit message
78
+ if: env.metadata_file_changed == 'true'
79
+ run: echo "fourc_commit_hash=$(awk '/commit_hash:/ {print $2}' src/fourcipp/config/4C_metadata.yaml)" >> $GITHUB_ENV
80
+ - name: Commit and push changes
81
+ if: env.metadata_file_changed == 'true'
82
+ uses: stefanzweifel/git-auto-commit-action@v5
83
+ with:
84
+ commit_message: "Nightly update of 4C metadata and schema file (4C commit hash: ${{ env.fourc_commit_hash }})"
85
+ branch: main
86
+ push_options: --force
87
+ commit_options: "--no-verify"
88
+ commit_user_name: 4C-Bot
89
+ commit_user_email: 207683181+4C-Bot@users.noreply.github.com
90
+ commit_author: 4C-Bot <207683181+4C-Bot@users.noreply.github.com>
@@ -0,0 +1,323 @@
1
+ # Manually added files & folder
2
+
3
+ # FourCIPP version file
4
+ src/fourcipp/version.py
5
+
6
+ # FourCIPP config file
7
+ src/fourcipp/config/config.yaml
8
+
9
+ # Automatically created section
10
+
11
+ # Created by https://www.toptal.com/developers/gitignore/api/python,macos,linux,windows,visualstudiocode,pycharm
12
+ # Edit at https://www.toptal.com/developers/gitignore?templates=python,macos,linux,windows,visualstudiocode,pycharm
13
+
14
+ ### Linux ###
15
+ *~
16
+
17
+ # temporary files which can be created if a process still has a handle open of a deleted file
18
+ .fuse_hidden*
19
+
20
+ # KDE directory preferences
21
+ .directory
22
+
23
+ # Linux trash folder which might appear on any partition or disk
24
+ .Trash-*
25
+
26
+ # .nfs files are created when an open file is removed but is still being accessed
27
+ .nfs*
28
+
29
+ ### macOS ###
30
+ # General
31
+ .DS_Store
32
+ .AppleDouble
33
+ .LSOverride
34
+
35
+ # Icon must end with two \r
36
+ Icon
37
+
38
+
39
+ # Thumbnails
40
+ ._*
41
+
42
+ # Files that might appear in the root of a volume
43
+ .DocumentRevisions-V100
44
+ .fseventsd
45
+ .Spotlight-V100
46
+ .TemporaryItems
47
+ .Trashes
48
+ .VolumeIcon.icns
49
+ .com.apple.timemachine.donotpresent
50
+
51
+ # Directories potentially created on remote AFP share
52
+ .AppleDB
53
+ .AppleDesktop
54
+ Network Trash Folder
55
+ Temporary Items
56
+ .apdisk
57
+
58
+ ### macOS Patch ###
59
+ # iCloud generated files
60
+ *.icloud
61
+
62
+ ### PyCharm ###
63
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
64
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
65
+
66
+ # All stuff in the .idea folder is usually not useful to share, as it contains
67
+ # user-specific or machine-specific settings.
68
+ .idea/
69
+
70
+ # Gradle and Maven with auto-import
71
+ # When using Gradle or Maven with auto-import, you should exclude module files,
72
+ # since they will be recreated, and may cause churn. Uncomment if using
73
+ # auto-import.
74
+ # *.iml
75
+ # *.ipr
76
+
77
+ # CMake
78
+ cmake-build-*/
79
+
80
+ # File-based project format
81
+ *.iws
82
+
83
+ # IntelliJ
84
+ out/
85
+
86
+ # mpeltonen/sbt-idea plugin
87
+ .idea_modules/
88
+
89
+ # JIRA plugin
90
+ atlassian-ide-plugin.xml
91
+
92
+ # Crashlytics plugin (for Android Studio and IntelliJ)
93
+ com_crashlytics_export_strings.xml
94
+ crashlytics.properties
95
+ crashlytics-build.properties
96
+ fabric.properties
97
+
98
+ ### PyCharm Patch ###
99
+ # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
100
+
101
+ # *.iml
102
+ # modules.xml
103
+ # .idea/misc.xml
104
+ # *.ipr
105
+
106
+ ### Python ###
107
+ # Byte-compiled / optimized / DLL files
108
+ __pycache__/
109
+ *.py[cod]
110
+ *$py.class
111
+
112
+ # C extensions
113
+ *.so
114
+
115
+ # Distribution / packaging
116
+ .Python
117
+ build/
118
+ develop-eggs/
119
+ dist/
120
+ downloads/
121
+ eggs/
122
+ .eggs/
123
+ lib/
124
+ lib64/
125
+ parts/
126
+ sdist/
127
+ var/
128
+ wheels/
129
+ share/python-wheels/
130
+ *.egg-info/
131
+ .installed.cfg
132
+ *.egg
133
+ MANIFEST
134
+
135
+ # PyInstaller
136
+ # Usually these files are written by a python script from a template
137
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
138
+ *.manifest
139
+ *.spec
140
+
141
+ # Installer logs
142
+ pip-log.txt
143
+ pip-delete-this-directory.txt
144
+
145
+ # Unit test / coverage reports
146
+ htmlcov/
147
+ .tox/
148
+ .nox/
149
+ .coverage
150
+ .coverage.*
151
+ .cache
152
+ nosetests.xml
153
+ coverage.xml
154
+ *.cover
155
+ *.py,cover
156
+ .hypothesis/
157
+ .pytest_cache/
158
+ cover/
159
+
160
+ # Translations
161
+ *.mo
162
+ *.pot
163
+
164
+ # Django stuff:
165
+ *.log
166
+ local_settings.py
167
+ db.sqlite3
168
+ db.sqlite3-journal
169
+
170
+ # Flask stuff:
171
+ instance/
172
+ .webassets-cache
173
+
174
+ # Scrapy stuff:
175
+ .scrapy
176
+
177
+ # Sphinx documentation
178
+ docs/_build/
179
+
180
+ # PyBuilder
181
+ .pybuilder/
182
+ target/
183
+
184
+ # Jupyter Notebook
185
+ .ipynb_checkpoints
186
+
187
+ # IPython
188
+ profile_default/
189
+ ipython_config.py
190
+
191
+ # pyenv
192
+ # For a library or package, you might want to ignore these files since the code is
193
+ # intended to run in multiple environments; otherwise, check them in:
194
+ # .python-version
195
+
196
+ # pipenv
197
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
198
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
199
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
200
+ # install all needed dependencies.
201
+ #Pipfile.lock
202
+
203
+ # poetry
204
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
205
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
206
+ # commonly ignored for libraries.
207
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
208
+ #poetry.lock
209
+
210
+ # pdm
211
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
212
+ #pdm.lock
213
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
214
+ # in version control.
215
+ # https://pdm.fming.dev/#use-with-ide
216
+ .pdm.toml
217
+
218
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
219
+ __pypackages__/
220
+
221
+ # Celery stuff
222
+ celerybeat-schedule
223
+ celerybeat.pid
224
+
225
+ # SageMath parsed files
226
+ *.sage.py
227
+
228
+ # Environments
229
+ .env
230
+ .venv
231
+ env/
232
+ venv/
233
+ ENV/
234
+ env.bak/
235
+ venv.bak/
236
+
237
+ # Spyder project settings
238
+ .spyderproject
239
+ .spyproject
240
+
241
+ # Rope project settings
242
+ .ropeproject
243
+
244
+ # mkdocs documentation
245
+ /site
246
+
247
+ # mypy
248
+ .mypy_cache/
249
+ .dmypy.json
250
+ dmypy.json
251
+
252
+ # Pyre type checker
253
+ .pyre/
254
+
255
+ # pytype static type analyzer
256
+ .pytype/
257
+
258
+ # Cython debug symbols
259
+ cython_debug/
260
+
261
+ # PyCharm
262
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
263
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
264
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
265
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
266
+ #.idea/
267
+
268
+ ### Python Patch ###
269
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
270
+ poetry.toml
271
+
272
+ # ruff
273
+ .ruff_cache/
274
+
275
+ # LSP config files
276
+ pyrightconfig.json
277
+
278
+ ### VisualStudioCode ###
279
+ .vscode/*
280
+ !.vscode/settings.json
281
+ !.vscode/tasks.json
282
+ !.vscode/launch.json
283
+ !.vscode/extensions.json
284
+ !.vscode/*.code-snippets
285
+
286
+ # Local History for Visual Studio Code
287
+ .history/
288
+
289
+ # Built Visual Studio Code Extensions
290
+ *.vsix
291
+
292
+ ### VisualStudioCode Patch ###
293
+ # Ignore all local history of files
294
+ .history
295
+ .ionide
296
+
297
+ ### Windows ###
298
+ # Windows thumbnail cache files
299
+ Thumbs.db
300
+ Thumbs.db:encryptable
301
+ ehthumbs.db
302
+ ehthumbs_vista.db
303
+
304
+ # Dump file
305
+ *.stackdump
306
+
307
+ # Folder config file
308
+ [Dd]esktop.ini
309
+
310
+ # Recycle Bin used on file shares
311
+ $RECYCLE.BIN/
312
+
313
+ # Windows Installer files
314
+ *.cab
315
+ *.msi
316
+ *.msix
317
+ *.msm
318
+ *.msp
319
+
320
+ # Windows shortcuts
321
+ *.lnk
322
+
323
+ # End of https://www.toptal.com/developers/gitignore/api/python,macos,linux,windows,visualstudiocode,pycharm