openspeleo-core 0.0.2__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 (51) hide show
  1. openspeleo_core-0.0.2/.devcontainer/Dockerfile +34 -0
  2. openspeleo_core-0.0.2/.devcontainer/devcontainer.json +62 -0
  3. openspeleo_core-0.0.2/.github/workflows/workflow.yml +199 -0
  4. openspeleo_core-0.0.2/.gitignore +191 -0
  5. openspeleo_core-0.0.2/.pre-commit-config.yaml +40 -0
  6. openspeleo_core-0.0.2/Cargo.lock +3693 -0
  7. openspeleo_core-0.0.2/Cargo.toml +50 -0
  8. openspeleo_core-0.0.2/LICENSE +192 -0
  9. openspeleo_core-0.0.2/Makefile +62 -0
  10. openspeleo_core-0.0.2/PKG-INFO +32 -0
  11. openspeleo_core-0.0.2/README.md +34 -0
  12. openspeleo_core-0.0.2/benches/load_benchmark.rs +64 -0
  13. openspeleo_core-0.0.2/benchmark_suite.py +343 -0
  14. openspeleo_core-0.0.2/pyproject.toml +210 -0
  15. openspeleo_core-0.0.2/src_cython/DEPRECATED +1 -0
  16. openspeleo_core-0.0.2/src_cython/__init__.py +0 -0
  17. openspeleo_core-0.0.2/src_cython/_cython_lib.pyx +60 -0
  18. openspeleo_core-0.0.2/src_cython/setup_cython.py +55 -0
  19. openspeleo_core-0.0.2/src_python/openspeleo_core/__init__.py +10 -0
  20. openspeleo_core-0.0.2/src_python/openspeleo_core/_rust_lib/ariane.pyi +23 -0
  21. openspeleo_core-0.0.2/src_python/openspeleo_core/_rust_lib/mapping.pyi +7 -0
  22. openspeleo_core-0.0.2/src_python/openspeleo_core/ariane_core/__init__.py +29 -0
  23. openspeleo_core-0.0.2/src_python/openspeleo_core/commands/__init__.py +1 -0
  24. openspeleo_core-0.0.2/src_python/openspeleo_core/commands/convert.py +71 -0
  25. openspeleo_core-0.0.2/src_python/openspeleo_core/commands/main.py +33 -0
  26. openspeleo_core-0.0.2/src_python/openspeleo_core/compass_core/__init__.py +0 -0
  27. openspeleo_core-0.0.2/src_python/openspeleo_core/legacy/__init__.py +15 -0
  28. openspeleo_core-0.0.2/src_python/openspeleo_core/legacy/processing.py +60 -0
  29. openspeleo_core-0.0.2/src_python/openspeleo_core/legacy/xml_utils.py +118 -0
  30. openspeleo_core-0.0.2/src_python/openspeleo_core/mapping.py +11 -0
  31. openspeleo_core-0.0.2/src_rust/ariane/deserialize.rs +254 -0
  32. openspeleo_core-0.0.2/src_rust/ariane/loader.rs +46 -0
  33. openspeleo_core-0.0.2/src_rust/ariane/mod.rs +13 -0
  34. openspeleo_core-0.0.2/src_rust/ariane/serialize.rs +131 -0
  35. openspeleo_core-0.0.2/src_rust/bin/stub_gen.rs +7 -0
  36. openspeleo_core-0.0.2/src_rust/lib.rs +17 -0
  37. openspeleo_core-0.0.2/src_rust/mapping.rs +104 -0
  38. openspeleo_core-0.0.2/tests/__init__.py +0 -0
  39. openspeleo_core-0.0.2/tests/ariane/__init__.py +0 -0
  40. openspeleo_core-0.0.2/tests/ariane/test_ariane.py +76 -0
  41. openspeleo_core-0.0.2/tests/artifacts/Data.xml +94777 -0
  42. openspeleo_core-0.0.2/tests/artifacts/demo.tml +0 -0
  43. openspeleo_core-0.0.2/tests/artifacts/demo.xml +402 -0
  44. openspeleo_core-0.0.2/tests/artifacts/hand_survey.tml +0 -0
  45. openspeleo_core-0.0.2/tests/artifacts/test_large.tml +0 -0
  46. openspeleo_core-0.0.2/tests/artifacts/test_simple.mini.tml +0 -0
  47. openspeleo_core-0.0.2/tests/artifacts/test_simple.tml +0 -0
  48. openspeleo_core-0.0.2/tests/artifacts/test_with_walls.tml +0 -0
  49. openspeleo_core-0.0.2/tests/test_apply_key_mapping.py +93 -0
  50. openspeleo_core-0.0.2/tests/test_xml_utils.py +37 -0
  51. openspeleo_core-0.0.2/uv.lock +677 -0
@@ -0,0 +1,34 @@
1
+ FROM python:3.13-slim-bookworm
2
+
3
+ RUN apt update && apt install -y --no-install-recommends \
4
+ git \
5
+ curl \
6
+ wget \
7
+ unzip \
8
+ vim \
9
+ nano \
10
+ zsh \
11
+ tmux \
12
+ # cleaning up unused files
13
+ && apt clean \
14
+ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
15
+ && rm -rf /var/lib/apt/lists/*
16
+
17
+ # devcontainer dependencies and utils
18
+ RUN apt-get update && apt-get install -y --no-install-recommends \
19
+ build-essential \
20
+ libclang-dev \
21
+ # cleaning up unused files
22
+ && apt clean \
23
+ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
24
+ && rm -rf /var/lib/apt/lists/*
25
+
26
+ # Install Rust & Cargo
27
+ RUN curl https://sh.rustup.rs -sSf | \
28
+ sh -s -- --default-toolchain stable -y
29
+
30
+ # Install uv.
31
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
32
+
33
+ ENV UV_CACHE_DIR="/workspace/.uv/cache"
34
+ ENV PATH="/workspace/.venv/bin:$PATH"
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "rxml - Dev Container",
3
+ "build": {
4
+ "context": "..",
5
+ "dockerfile": "Dockerfile"
6
+ },
7
+ "workspaceFolder": "/workspace/",
8
+ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace/,type=bind",
9
+ "customizations": {
10
+ "vscode": {
11
+ "settings": {
12
+ "editor.formatOnSave": true,
13
+ "makefile.configureOnOpen": false,
14
+ "remote.autoForwardPorts": false,
15
+ "[python]": {
16
+ "analysis.autoImportCompletions": true,
17
+ "analysis.typeCheckingMode": "basic",
18
+ "defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
19
+ "editor.codeActionsOnSave": {
20
+ "source.organizeImports": "always"
21
+ },
22
+ "editor.defaultFormatter": "charliermarsh.ruff",
23
+ "languageServer": "Pylance",
24
+ "linting.enabled": true,
25
+ "linting.flake8Enabled": true,
26
+ "linting.mypyEnabled": true,
27
+ "linting.mypyPath": "/usr/local/bin/mypy",
28
+ "linting.pylintEnabled": true
29
+ }
30
+ },
31
+ "extensions": [
32
+ // Python
33
+ "ms-python.python",
34
+ // Build Tools
35
+ "ms-azuretools.vscode-docker",
36
+ // Git & Github
37
+ "GitHub.vscode-pull-request-github",
38
+ // Github Actions
39
+ "GitHub.vscode-github-actions",
40
+ // GitLens
41
+ "eamodio.gitlens",
42
+ // Makefile
43
+ "ms-vscode.makefile-tools",
44
+ // TOML
45
+ "tamasfe.even-better-toml",
46
+ // PyLance
47
+ "ms-python.vscode-pylance",
48
+ // Makefile Tools
49
+ "ms-vscode.makefile-tools",
50
+ // Ruff
51
+ "charliermarsh.ruff",
52
+ // Rust
53
+ "rust-lang.rust-analyzer"
54
+ ]
55
+ }
56
+ },
57
+ "features": {
58
+ "ghcr.io/devcontainers/features/sshd:1": {
59
+ "version": "latest"
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,199 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - master
8
+ tags:
9
+ - '*'
10
+ pull_request:
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ test:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: update
22
+ run: |
23
+ rustup update
24
+ rustup component add clippy
25
+ rustup install nightly
26
+ - name: lint
27
+ run: |
28
+ cargo fmt -- --check
29
+ cargo clippy -- -D warnings
30
+ - name: test
31
+ run: |
32
+ cargo check
33
+ cargo test --all
34
+ linux:
35
+ runs-on: ${{ matrix.platform.runner }}
36
+ strategy:
37
+ matrix:
38
+ platform:
39
+ - runner: ubuntu-22.04
40
+ target: x86_64
41
+ - runner: ubuntu-22.04
42
+ target: x86
43
+ - runner: ubuntu-22.04
44
+ target: aarch64
45
+ - runner: ubuntu-22.04
46
+ target: armv7
47
+ - runner: ubuntu-22.04
48
+ target: s390x
49
+ - runner: ubuntu-22.04
50
+ target: ppc64le
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+ - uses: actions/setup-python@v5
54
+ with:
55
+ python-version: 3.x
56
+ - name: Build wheels
57
+ uses: PyO3/maturin-action@v1
58
+ with:
59
+ target: ${{ matrix.platform.target }}
60
+ args: --release --out dist --find-interpreter
61
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
62
+ manylinux: auto
63
+ - name: Upload wheels
64
+ uses: actions/upload-artifact@v4
65
+ with:
66
+ name: wheels-linux-${{ matrix.platform.target }}
67
+ path: dist
68
+
69
+ musllinux:
70
+ runs-on: ${{ matrix.platform.runner }}
71
+ strategy:
72
+ matrix:
73
+ platform:
74
+ - runner: ubuntu-22.04
75
+ target: x86_64
76
+ - runner: ubuntu-22.04
77
+ target: x86
78
+ - runner: ubuntu-22.04
79
+ target: aarch64
80
+ - runner: ubuntu-22.04
81
+ target: armv7
82
+ steps:
83
+ - uses: actions/checkout@v4
84
+ - uses: actions/setup-python@v5
85
+ with:
86
+ python-version: 3.x
87
+ - name: Build wheels
88
+ uses: PyO3/maturin-action@v1
89
+ with:
90
+ target: ${{ matrix.platform.target }}
91
+ args: --release --out dist --find-interpreter
92
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
93
+ manylinux: musllinux_1_2
94
+ - name: Upload wheels
95
+ uses: actions/upload-artifact@v4
96
+ with:
97
+ name: wheels-musllinux-${{ matrix.platform.target }}
98
+ path: dist
99
+
100
+ windows:
101
+ runs-on: ${{ matrix.platform.runner }}
102
+ strategy:
103
+ matrix:
104
+ platform:
105
+ - runner: windows-latest
106
+ target: x64
107
+ - runner: windows-latest
108
+ target: x86
109
+ steps:
110
+ - uses: actions/checkout@v4
111
+ - uses: actions/setup-python@v5
112
+ with:
113
+ python-version: 3.x
114
+ architecture: ${{ matrix.platform.target }}
115
+ - name: Build wheels
116
+ uses: PyO3/maturin-action@v1
117
+ with:
118
+ target: ${{ matrix.platform.target }}
119
+ args: --release --out dist --find-interpreter
120
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
121
+ - name: Upload wheels
122
+ uses: actions/upload-artifact@v4
123
+ with:
124
+ name: wheels-windows-${{ matrix.platform.target }}
125
+ path: dist
126
+
127
+ macos:
128
+ runs-on: ${{ matrix.platform.runner }}
129
+ strategy:
130
+ matrix:
131
+ platform:
132
+ - runner: macos-13
133
+ target: x86_64
134
+ - runner: macos-latest
135
+ target: aarch64
136
+ steps:
137
+ - uses: actions/checkout@v4
138
+ - uses: actions/setup-python@v5
139
+ with:
140
+ python-version: 3.x
141
+ - name: Build wheels
142
+ uses: PyO3/maturin-action@v1
143
+ with:
144
+ target: ${{ matrix.platform.target }}
145
+ args: --release --out dist --find-interpreter
146
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
147
+ - name: Upload wheels
148
+ uses: actions/upload-artifact@v4
149
+ with:
150
+ name: wheels-macos-${{ matrix.platform.target }}
151
+ path: dist
152
+
153
+ sdist:
154
+ runs-on: ubuntu-latest
155
+ steps:
156
+ - uses: actions/checkout@v4
157
+ - name: Build sdist
158
+ uses: PyO3/maturin-action@v1
159
+ with:
160
+ command: sdist
161
+ args: --out dist
162
+ - name: Upload sdist
163
+ uses: actions/upload-artifact@v4
164
+ with:
165
+ name: wheels-sdist
166
+ path: dist
167
+
168
+ release:
169
+ name: Release
170
+ runs-on: ubuntu-latest
171
+ environment: pypi
172
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
173
+ needs: [linux, musllinux, windows, macos, sdist]
174
+ permissions:
175
+ # Use to sign the release artifacts
176
+ id-token: write
177
+ # Used to upload release artifacts
178
+ contents: write
179
+ # Used to generate artifact attestation
180
+ attestations: write
181
+ steps:
182
+ - name: Download all the dists
183
+ uses: actions/download-artifact@v5
184
+ with:
185
+ path: dist
186
+ merge-multiple: true
187
+
188
+ - name: Generate artifact attestation
189
+ uses: actions/attest-build-provenance@v2
190
+ with:
191
+ subject-path: 'dist/*'
192
+
193
+ - name: Publish package distributions to PyPI
194
+ uses: pypa/gh-action-pypi-publish@release/v1
195
+ with:
196
+ print-hash: true
197
+ skip-existing: true
198
+ verbose: true
199
+ packages-dir: 'dist'
@@ -0,0 +1,191 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # Rope project settings
136
+ .ropeproject
137
+
138
+ # mkdocs documentation
139
+ /site
140
+
141
+ # mypy
142
+ .mypy_cache/
143
+ .dmypy.json
144
+ dmypy.json
145
+
146
+ # Pyre type checker
147
+ .pyre/
148
+
149
+ # pytype static type analyzer
150
+ .pytype/
151
+
152
+ # Cython debug symbols
153
+ cython_debug/
154
+
155
+ # PyCharm
156
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
159
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160
+ #.idea/
161
+
162
+ # Generated by Cargo
163
+ # will have compiled files and executables
164
+ .cargo/
165
+ debug/
166
+ target/
167
+ vendor/
168
+
169
+ # These are backup files generated by rustfmt
170
+ **/*.rs.bk
171
+
172
+ # MSVC Windows builds of rustc generate these, which store debugging information
173
+ *.pdb
174
+
175
+ # RustRover
176
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
177
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
178
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
179
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
180
+ #.idea/
181
+
182
+ # Debug Files
183
+ /*.json
184
+ /*.xml
185
+ /*.tml
186
+ /*.json
187
+ tests/*.json
188
+ tests/*.xml
189
+ tests/*.tml
190
+
191
+ .DS_Store
@@ -0,0 +1,40 @@
1
+ exclude: "^docs/|/migrations/|devcontainer.json|.*.html|.*.css|.*.js|.*.svg|.*.dist|.*.pyi"
2
+
3
+ default_language_version:
4
+ python: python3.13
5
+
6
+ repos:
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v6.0.0
9
+ hooks:
10
+ - id: trailing-whitespace
11
+ exclude: ^tests/artifacts/
12
+ - id: end-of-file-fixer
13
+ exclude: ^tests/artifacts/
14
+ - id: check-json
15
+ - id: check-toml
16
+ - id: check-xml
17
+ - id: check-yaml
18
+ - id: debug-statements
19
+ - id: check-builtin-literals
20
+ - id: check-case-conflict
21
+ - id: check-docstring-first
22
+ - id: detect-private-key
23
+
24
+ # Run the Ruff linter.
25
+ - repo: https://github.com/astral-sh/ruff-pre-commit
26
+ rev: v0.12.8
27
+ hooks:
28
+ # Linter
29
+ - id: ruff
30
+ args: [--fix, --exit-non-zero-on-fix]
31
+ exclude: ^tests/artifacts/
32
+ # Formatter
33
+ - id: ruff-format
34
+ exclude: ^tests/artifacts/
35
+
36
+ # sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date
37
+ ci:
38
+ autoupdate_schedule: weekly
39
+ skip: []
40
+ submodules: false