shoeboxpy 0.0.1__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 (44) hide show
  1. shoeboxpy-0.0.1/.devcontainer/devcontainer.json +4 -0
  2. shoeboxpy-0.0.1/.github/workflows/docs.yml +60 -0
  3. shoeboxpy-0.0.1/.github/workflows/publish.yml +73 -0
  4. shoeboxpy-0.0.1/.github/workflows/python-package.yml +40 -0
  5. shoeboxpy-0.0.1/.gitignore +404 -0
  6. shoeboxpy-0.0.1/.readthedocs.yaml +15 -0
  7. shoeboxpy-0.0.1/LICENSE +287 -0
  8. shoeboxpy-0.0.1/PKG-INFO +99 -0
  9. shoeboxpy-0.0.1/README.md +84 -0
  10. shoeboxpy-0.0.1/demo/demo.py +39 -0
  11. shoeboxpy-0.0.1/devcontainer.dockerfile +7 -0
  12. shoeboxpy-0.0.1/docs/assets/shoebox.webp +0 -0
  13. shoeboxpy-0.0.1/docs/make.bat +35 -0
  14. shoeboxpy-0.0.1/docs/source/_static/css/custom.css +43 -0
  15. shoeboxpy-0.0.1/docs/source/conf.py +110 -0
  16. shoeboxpy-0.0.1/docs/source/getting_started.rst +67 -0
  17. shoeboxpy-0.0.1/docs/source/index.rst +33 -0
  18. shoeboxpy-0.0.1/docs/source/modules.rst +7 -0
  19. shoeboxpy-0.0.1/docs/source/shoeboxpy.rst +33 -0
  20. shoeboxpy-0.0.1/docs/source/theory.md +6 -0
  21. shoeboxpy-0.0.1/docs/theory.md +163 -0
  22. shoeboxpy-0.0.1/notebooks/.gitkeep +0 -0
  23. shoeboxpy-0.0.1/pyproject.toml +40 -0
  24. shoeboxpy-0.0.1/requirements.docs.txt +6 -0
  25. shoeboxpy-0.0.1/requirements.txt +3 -0
  26. shoeboxpy-0.0.1/setup.cfg +4 -0
  27. shoeboxpy-0.0.1/src/shoeboxpy/__init__.py +3 -0
  28. shoeboxpy-0.0.1/src/shoeboxpy/__version__.py +34 -0
  29. shoeboxpy-0.0.1/src/shoeboxpy/animate.py +233 -0
  30. shoeboxpy-0.0.1/src/shoeboxpy/model3dof.py +247 -0
  31. shoeboxpy-0.0.1/src/shoeboxpy/model6dof.py +458 -0
  32. shoeboxpy-0.0.1/src/shoeboxpy/utils.py +21 -0
  33. shoeboxpy-0.0.1/src/shoeboxpy.egg-info/PKG-INFO +99 -0
  34. shoeboxpy-0.0.1/src/shoeboxpy.egg-info/SOURCES.txt +42 -0
  35. shoeboxpy-0.0.1/src/shoeboxpy.egg-info/dependency_links.txt +1 -0
  36. shoeboxpy-0.0.1/src/shoeboxpy.egg-info/requires.txt +4 -0
  37. shoeboxpy-0.0.1/src/shoeboxpy.egg-info/top_level.txt +1 -0
  38. shoeboxpy-0.0.1/tests/__init__.py +0 -0
  39. shoeboxpy-0.0.1/tests/speed_check.py +95 -0
  40. shoeboxpy-0.0.1/tests/test_3dof.py +53 -0
  41. shoeboxpy-0.0.1/tests/test_6dof.py +72 -0
  42. shoeboxpy-0.0.1/tests/test_dt.py +77 -0
  43. shoeboxpy-0.0.1/tests/test_overflow.py +81 -0
  44. shoeboxpy-0.0.1/tests/test_speed_check.py +11 -0
@@ -0,0 +1,4 @@
1
+ // Write a devcontainer using the Dockerfile in the root of the repository
2
+ {
3
+ "dockerFile": "../devcontainer.dockerfile"
4
+ }
@@ -0,0 +1,60 @@
1
+ name: docs
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ paths:
7
+ - 'docs/**'
8
+ - 'src/**'
9
+ - 'pyproject.toml'
10
+ - 'requirements.docs.txt'
11
+ pull_request:
12
+ branches: [ master ]
13
+ paths:
14
+ - 'docs/**'
15
+ - 'src/**'
16
+ workflow_dispatch:
17
+
18
+ permissions:
19
+ contents: read
20
+ pages: write
21
+ id-token: write
22
+
23
+ concurrency:
24
+ group: 'pages'
25
+ cancel-in-progress: true
26
+
27
+ jobs:
28
+ build:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+
34
+ - name: Set up Python
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: '3.12'
38
+
39
+ - name: Install Python deps
40
+ run: |
41
+ python -m pip install --upgrade pip
42
+ pip install -r requirements.docs.txt
43
+ pip install -e .
44
+
45
+ - name: Build Sphinx HTML
46
+ working-directory: docs
47
+ run: sphinx-build -b html source build
48
+
49
+ - name: Upload artifact
50
+ uses: actions/upload-pages-artifact@v3
51
+ with:
52
+ path: docs/build
53
+
54
+ deploy:
55
+ needs: build
56
+ runs-on: ubuntu-latest
57
+ steps:
58
+ - name: Deploy to GitHub Pages
59
+ id: deployment
60
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,73 @@
1
+ name: Publish (template-based)
2
+
3
+ # Adapted from provided template. Builds and publishes shoeboxpy to PyPI using Trusted Publishing.
4
+ # Relies on setuptools-scm, so tag the release as vMAJOR.MINOR.PATCH (e.g. v0.1.0).
5
+
6
+ on:
7
+ release:
8
+ types: [published]
9
+ workflow_dispatch:
10
+ inputs:
11
+ skip-tests:
12
+ description: "Skip pytest"
13
+ default: "false"
14
+ required: false
15
+
16
+ permissions:
17
+ contents: read
18
+ id-token: write # mandatory for trusted publishing
19
+
20
+ jobs:
21
+ pypi-publish:
22
+ name: Build & upload to PyPI
23
+ runs-on: ubuntu-latest
24
+ environment:
25
+ name: pypi
26
+ url: https://pypi.org/p/shoeboxpy
27
+ steps:
28
+ - name: Checkout (full history for setuptools-scm)
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 0
32
+
33
+ - name: Validate tag (release only)
34
+ if: github.event_name == 'release'
35
+ run: |
36
+ TAG_NAME="${GITHUB_REF##*/}"; echo "Tag: $TAG_NAME"
37
+ if [[ ! $TAG_NAME =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
38
+ echo "Tag must match vMAJOR.MINOR.PATCH" >&2; exit 1; fi
39
+
40
+ - name: Set up Python
41
+ uses: actions/setup-python@v5
42
+ with:
43
+ python-version: '3.12'
44
+
45
+ - name: Install deps & build tooling
46
+ run: |
47
+ python -m pip install --upgrade pip
48
+ pip install build twine pytest
49
+ pip install -r requirements.txt || true
50
+ pip install -e .
51
+
52
+ - name: Run tests
53
+ if: ${{ github.event.inputs.skip-tests != 'true' }}
54
+ run: |
55
+ PYTHONPATH=$PWD/src pytest -q
56
+
57
+ - name: Build distributions
58
+ run: |
59
+ python -m build
60
+ ls -l dist
61
+
62
+ - name: Verify distributions
63
+ run: |
64
+ python -m twine check dist/*
65
+
66
+ - name: Publish package distributions to PyPI
67
+ uses: pypa/gh-action-pypi-publish@release/v1
68
+ with:
69
+ verbose: true
70
+ print-hash: true
71
+
72
+ - name: Post publish note
73
+ run: echo "Published shoeboxpy (may take a minute to appear)."
@@ -0,0 +1,40 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
3
+
4
+ name: Python package
5
+
6
+ on:
7
+ push:
8
+ branches: [ "master" ]
9
+ pull_request:
10
+ branches: [ "master" ]
11
+
12
+ jobs:
13
+ build:
14
+
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - name: Set up Python ${{ matrix.python-version }}
24
+ uses: actions/setup-python@v3
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ python -m pip install flake8 pytest
31
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
32
+ - name: Lint with flake8
33
+ run: |
34
+ # stop the build if there are Python syntax errors or undefined names
35
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
36
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
37
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
38
+ - name: Test with pytest
39
+ run: |
40
+ PYTHONPATH=$PWD/src pytest
@@ -0,0 +1,404 @@
1
+ # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,linux,windows,macos,python,pycharm+all,vim,git,cmake
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,linux,windows,macos,python,pycharm+all,vim,git,cmake
3
+
4
+ ### CMake ###
5
+ CMakeLists.txt.user
6
+ CMakeCache.txt
7
+ CMakeFiles
8
+ CMakeScripts
9
+ Testing
10
+ Makefile
11
+ cmake_install.cmake
12
+ install_manifest.txt
13
+ compile_commands.json
14
+ CTestTestfile.cmake
15
+ _deps
16
+
17
+ ### CMake Patch ###
18
+ # External projects
19
+ *-prefix/
20
+
21
+ ### Git ###
22
+ # Created by git for backups. To disable backups in Git:
23
+ # $ git config --global mergetool.keepBackup false
24
+ *.orig
25
+
26
+ # Created by git when using merge tools for conflicts
27
+ *.BACKUP.*
28
+ *.BASE.*
29
+ *.LOCAL.*
30
+ *.REMOTE.*
31
+ *_BACKUP_*.txt
32
+ *_BASE_*.txt
33
+ *_LOCAL_*.txt
34
+ *_REMOTE_*.txt
35
+
36
+ ### Linux ###
37
+ *~
38
+
39
+ # temporary files which can be created if a process still has a handle open of a deleted file
40
+ .fuse_hidden*
41
+
42
+ # KDE directory preferences
43
+ .directory
44
+
45
+ # Linux trash folder which might appear on any partition or disk
46
+ .Trash-*
47
+
48
+ # .nfs files are created when an open file is removed but is still being accessed
49
+ .nfs*
50
+
51
+ ### macOS ###
52
+ # General
53
+ .DS_Store
54
+ .AppleDouble
55
+ .LSOverride
56
+
57
+ # Icon must end with two \r
58
+ Icon
59
+
60
+
61
+ # Thumbnails
62
+ ._*
63
+
64
+ # Files that might appear in the root of a volume
65
+ .DocumentRevisions-V100
66
+ .fseventsd
67
+ .Spotlight-V100
68
+ .TemporaryItems
69
+ .Trashes
70
+ .VolumeIcon.icns
71
+ .com.apple.timemachine.donotpresent
72
+
73
+ # Directories potentially created on remote AFP share
74
+ .AppleDB
75
+ .AppleDesktop
76
+ Network Trash Folder
77
+ Temporary Items
78
+ .apdisk
79
+
80
+ ### macOS Patch ###
81
+ # iCloud generated files
82
+ *.icloud
83
+
84
+ ### PyCharm+all ###
85
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
86
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
87
+
88
+ # User-specific stuff
89
+ .idea/**/workspace.xml
90
+ .idea/**/tasks.xml
91
+ .idea/**/usage.statistics.xml
92
+ .idea/**/dictionaries
93
+ .idea/**/shelf
94
+
95
+ # AWS User-specific
96
+ .idea/**/aws.xml
97
+
98
+ # Generated files
99
+ .idea/**/contentModel.xml
100
+
101
+ # Sensitive or high-churn files
102
+ .idea/**/dataSources/
103
+ .idea/**/dataSources.ids
104
+ .idea/**/dataSources.local.xml
105
+ .idea/**/sqlDataSources.xml
106
+ .idea/**/dynamic.xml
107
+ .idea/**/uiDesigner.xml
108
+ .idea/**/dbnavigator.xml
109
+
110
+ # Gradle
111
+ .idea/**/gradle.xml
112
+ .idea/**/libraries
113
+
114
+ # Gradle and Maven with auto-import
115
+ # When using Gradle or Maven with auto-import, you should exclude module files,
116
+ # since they will be recreated, and may cause churn. Uncomment if using
117
+ # auto-import.
118
+ # .idea/artifacts
119
+ # .idea/compiler.xml
120
+ # .idea/jarRepositories.xml
121
+ # .idea/modules.xml
122
+ # .idea/*.iml
123
+ # .idea/modules
124
+ # *.iml
125
+ # *.ipr
126
+
127
+ # CMake
128
+ cmake-build-*/
129
+
130
+ # Mongo Explorer plugin
131
+ .idea/**/mongoSettings.xml
132
+
133
+ # File-based project format
134
+ *.iws
135
+
136
+ # IntelliJ
137
+ out/
138
+
139
+ # mpeltonen/sbt-idea plugin
140
+ .idea_modules/
141
+
142
+ # JIRA plugin
143
+ atlassian-ide-plugin.xml
144
+
145
+ # Cursive Clojure plugin
146
+ .idea/replstate.xml
147
+
148
+ # SonarLint plugin
149
+ .idea/sonarlint/
150
+
151
+ # Crashlytics plugin (for Android Studio and IntelliJ)
152
+ com_crashlytics_export_strings.xml
153
+ crashlytics.properties
154
+ crashlytics-build.properties
155
+ fabric.properties
156
+
157
+ # Editor-based Rest Client
158
+ .idea/httpRequests
159
+
160
+ # Android studio 3.1+ serialized cache file
161
+ .idea/caches/build_file_checksums.ser
162
+
163
+ ### PyCharm+all Patch ###
164
+ # Ignore everything but code style settings and run configurations
165
+ # that are supposed to be shared within teams.
166
+
167
+ .idea/*
168
+
169
+ !.idea/codeStyles
170
+ !.idea/runConfigurations
171
+
172
+ ### Python ###
173
+ # Byte-compiled / optimized / DLL files
174
+ __pycache__/
175
+ *.py[cod]
176
+ *$py.class
177
+
178
+ # C extensions
179
+ *.so
180
+
181
+ # Distribution / packaging
182
+ .Python
183
+ build/
184
+ develop-eggs/
185
+ dist/
186
+ downloads/
187
+ eggs/
188
+ .eggs/
189
+ lib/
190
+ lib64/
191
+ parts/
192
+ sdist/
193
+ var/
194
+ wheels/
195
+ share/python-wheels/
196
+ *.egg-info/
197
+ .installed.cfg
198
+ *.egg
199
+ MANIFEST
200
+
201
+ # PyInstaller
202
+ # Usually these files are written by a python script from a template
203
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
204
+ *.manifest
205
+ *.spec
206
+
207
+ # Installer logs
208
+ pip-log.txt
209
+ pip-delete-this-directory.txt
210
+
211
+ # Unit test / coverage reports
212
+ htmlcov/
213
+ .tox/
214
+ .nox/
215
+ .coverage
216
+ .coverage.*
217
+ .cache
218
+ nosetests.xml
219
+ coverage.xml
220
+ *.cover
221
+ *.py,cover
222
+ .hypothesis/
223
+ .pytest_cache/
224
+ cover/
225
+
226
+ # Translations
227
+ *.mo
228
+ *.pot
229
+
230
+ # Django stuff:
231
+ *.log
232
+ local_settings.py
233
+ db.sqlite3
234
+ db.sqlite3-journal
235
+
236
+ # Flask stuff:
237
+ instance/
238
+ .webassets-cache
239
+
240
+ # Scrapy stuff:
241
+ .scrapy
242
+
243
+ # Sphinx documentation
244
+ docs/_build/
245
+
246
+ # PyBuilder
247
+ .pybuilder/
248
+ target/
249
+
250
+ # Jupyter Notebook
251
+ .ipynb_checkpoints
252
+
253
+ # IPython
254
+ profile_default/
255
+ ipython_config.py
256
+
257
+ # pyenv
258
+ # For a library or package, you might want to ignore these files since the code is
259
+ # intended to run in multiple environments; otherwise, check them in:
260
+ # .python-version
261
+
262
+ # pipenv
263
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
264
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
265
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
266
+ # install all needed dependencies.
267
+ #Pipfile.lock
268
+
269
+ # poetry
270
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
271
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
272
+ # commonly ignored for libraries.
273
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
274
+ #poetry.lock
275
+
276
+ # pdm
277
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
278
+ #pdm.lock
279
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
280
+ # in version control.
281
+ # https://pdm.fming.dev/#use-with-ide
282
+ .pdm.toml
283
+
284
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
285
+ __pypackages__/
286
+
287
+ # Celery stuff
288
+ celerybeat-schedule
289
+ celerybeat.pid
290
+
291
+ # SageMath parsed files
292
+ *.sage.py
293
+
294
+ # Environments
295
+ .env
296
+ .venv
297
+ env/
298
+ venv/
299
+ ENV/
300
+ env.bak/
301
+ venv.bak/
302
+
303
+ # Spyder project settings
304
+ .spyderproject
305
+ .spyproject
306
+
307
+ # Rope project settings
308
+ .ropeproject
309
+
310
+ # mkdocs documentation
311
+ /site
312
+
313
+ # mypy
314
+ .mypy_cache/
315
+ .dmypy.json
316
+ dmypy.json
317
+
318
+ # Pyre type checker
319
+ .pyre/
320
+
321
+ # pytype static type analyzer
322
+ .pytype/
323
+
324
+ # Cython debug symbols
325
+ cython_debug/
326
+
327
+ # PyCharm
328
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
329
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
330
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
331
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
332
+ #.idea/
333
+
334
+ ### Python Patch ###
335
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
336
+ poetry.toml
337
+
338
+ # ruff
339
+ .ruff_cache/
340
+
341
+ # LSP config files
342
+ pyrightconfig.json
343
+
344
+ ### Vim ###
345
+ # Swap
346
+ [._]*.s[a-v][a-z]
347
+ !*.svg # comment out if you don't need vector files
348
+ [._]*.sw[a-p]
349
+ [._]s[a-rt-v][a-z]
350
+ [._]ss[a-gi-z]
351
+ [._]sw[a-p]
352
+
353
+ # Session
354
+ Session.vim
355
+ Sessionx.vim
356
+
357
+ # Temporary
358
+ .netrwhist
359
+ # Auto-generated tag files
360
+ tags
361
+ # Persistent undo
362
+ [._]*.un~
363
+
364
+ ### VisualStudioCode ###
365
+ .vscode
366
+
367
+ # Local History for Visual Studio Code
368
+ .history/
369
+
370
+ # Built Visual Studio Code Extensions
371
+ *.vsix
372
+
373
+ ### VisualStudioCode Patch ###
374
+ # Ignore all local history of files
375
+ .history
376
+ .ionide
377
+
378
+ ### Windows ###
379
+ # Windows thumbnail cache files
380
+ Thumbs.db
381
+ Thumbs.db:encryptable
382
+ ehthumbs.db
383
+ ehthumbs_vista.db
384
+
385
+ # Dump file
386
+ *.stackdump
387
+
388
+ # Folder config file
389
+ [Dd]esktop.ini
390
+
391
+ # Recycle Bin used on file shares
392
+ $RECYCLE.BIN/
393
+
394
+ # Windows Installer files
395
+ *.cab
396
+ *.msi
397
+ *.msix
398
+ *.msm
399
+ *.msp
400
+
401
+ # Windows shortcuts
402
+ *.lnk
403
+
404
+ # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,linux,windows,macos,python,pycharm+all,vim,git,cmake
@@ -0,0 +1,15 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: "ubuntu-20.04"
5
+ tools:
6
+ python: "3.8"
7
+
8
+ python:
9
+ # Install our python package before building the docs
10
+ install:
11
+ - method: pip
12
+ path: .
13
+
14
+ sphinx:
15
+ fail_on_warning: true