azimut 0.1.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 (91) hide show
  1. azimut-0.1.0/.github/workflows/ci.yml +35 -0
  2. azimut-0.1.0/.github/workflows/release.yml +115 -0
  3. azimut-0.1.0/.gitignore +84 -0
  4. azimut-0.1.0/LICENSE +661 -0
  5. azimut-0.1.0/PKG-INFO +125 -0
  6. azimut-0.1.0/README.md +96 -0
  7. azimut-0.1.0/docs/ONTOLOGY.md +138 -0
  8. azimut-0.1.0/docs/SPEC.md +334 -0
  9. azimut-0.1.0/frontend/index.html +13 -0
  10. azimut-0.1.0/frontend/package-lock.json +1554 -0
  11. azimut-0.1.0/frontend/package.json +24 -0
  12. azimut-0.1.0/frontend/public/favicon.svg +68 -0
  13. azimut-0.1.0/frontend/src/App.svelte +173 -0
  14. azimut-0.1.0/frontend/src/app.css +358 -0
  15. azimut-0.1.0/frontend/src/components/CaseSidebar.svelte +1085 -0
  16. azimut-0.1.0/frontend/src/components/CaseSwitcher.svelte +447 -0
  17. azimut-0.1.0/frontend/src/components/ConfirmDialog.svelte +140 -0
  18. azimut-0.1.0/frontend/src/components/Icon.svelte +76 -0
  19. azimut-0.1.0/frontend/src/components/Logo.svelte +76 -0
  20. azimut-0.1.0/frontend/src/components/Modal.svelte +62 -0
  21. azimut-0.1.0/frontend/src/components/Toasts.svelte +55 -0
  22. azimut-0.1.0/frontend/src/lib/api.js +40 -0
  23. azimut-0.1.0/frontend/src/lib/composer.js +399 -0
  24. azimut-0.1.0/frontend/src/lib/composer.test.js +418 -0
  25. azimut-0.1.0/frontend/src/lib/inspect.js +250 -0
  26. azimut-0.1.0/frontend/src/lib/state.svelte.js +150 -0
  27. azimut-0.1.0/frontend/src/main.js +10 -0
  28. azimut-0.1.0/frontend/src/tools/Inspector.svelte +983 -0
  29. azimut-0.1.0/frontend/src/tools/MediaLibrary.svelte +942 -0
  30. azimut-0.1.0/frontend/src/tools/PostComposer.svelte +944 -0
  31. azimut-0.1.0/frontend/src/tools/ProofComposer.svelte +1793 -0
  32. azimut-0.1.0/frontend/src/tools/Satellite.svelte +1308 -0
  33. azimut-0.1.0/frontend/src/tools/inspect/AdjustSliders.svelte +82 -0
  34. azimut-0.1.0/frontend/src/tools/inspect/CollageCanvas.svelte +319 -0
  35. azimut-0.1.0/frontend/src/tools/inspect/CollageMenu.svelte +297 -0
  36. azimut-0.1.0/frontend/src/tools/inspect/CollagePreview.svelte +79 -0
  37. azimut-0.1.0/frontend/src/tools/inspect/FrameMenu.svelte +326 -0
  38. azimut-0.1.0/frontend/src/tools/inspect/PieceCropModal.svelte +130 -0
  39. azimut-0.1.0/frontend/src/tools/inspect/SaveGallery.svelte +171 -0
  40. azimut-0.1.0/frontend/src/tools/inspect/SaveMenu.svelte +85 -0
  41. azimut-0.1.0/frontend/src/tools/inspect/SelectionMenu.svelte +221 -0
  42. azimut-0.1.0/frontend/vite.config.js +17 -0
  43. azimut-0.1.0/packaging/azimut.spec +46 -0
  44. azimut-0.1.0/packaging/entry.py +10 -0
  45. azimut-0.1.0/pyproject.toml +53 -0
  46. azimut-0.1.0/src/azimut/__init__.py +3 -0
  47. azimut-0.1.0/src/azimut/__main__.py +3 -0
  48. azimut-0.1.0/src/azimut/api/__init__.py +0 -0
  49. azimut-0.1.0/src/azimut/api/cases.py +237 -0
  50. azimut-0.1.0/src/azimut/api/drafts.py +129 -0
  51. azimut-0.1.0/src/azimut/api/files.py +27 -0
  52. azimut-0.1.0/src/azimut/api/inspect.py +409 -0
  53. azimut-0.1.0/src/azimut/api/media.py +101 -0
  54. azimut-0.1.0/src/azimut/api/proofs.py +134 -0
  55. azimut-0.1.0/src/azimut/api/satellite.py +201 -0
  56. azimut-0.1.0/src/azimut/cli.py +38 -0
  57. azimut-0.1.0/src/azimut/config.py +69 -0
  58. azimut-0.1.0/src/azimut/engine/__init__.py +0 -0
  59. azimut-0.1.0/src/azimut/engine/geo.py +122 -0
  60. azimut-0.1.0/src/azimut/engine/inspect.py +742 -0
  61. azimut-0.1.0/src/azimut/engine/media.py +318 -0
  62. azimut-0.1.0/src/azimut/engine/satellite.py +73 -0
  63. azimut-0.1.0/src/azimut/engine/tiles.py +320 -0
  64. azimut-0.1.0/src/azimut/jobs.py +44 -0
  65. azimut-0.1.0/src/azimut/server.py +58 -0
  66. azimut-0.1.0/src/azimut/static/assets/index-BkJajQDU.css +1 -0
  67. azimut-0.1.0/src/azimut/static/assets/index-rbVNFUtr.js +30 -0
  68. azimut-0.1.0/src/azimut/static/assets/leaflet-rotate-hAaDqhcJ.js +1 -0
  69. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-400-normal-BnNz-3Mf.woff +0 -0
  70. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-400-normal-DcSlRu53.woff2 +0 -0
  71. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-600-normal-DNQhW0y0.woff +0 -0
  72. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-600-normal-DW9ldEDP.woff2 +0 -0
  73. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-700-normal-b_KP-pae.woff +0 -0
  74. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-700-normal-l0hKEjh4.woff2 +0 -0
  75. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-400-normal-B1qoybeA.woff2 +0 -0
  76. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-400-normal-ngSbnDVv.woff +0 -0
  77. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-600-normal-B2S5WIA4.woff2 +0 -0
  78. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-600-normal-DywhiVWf.woff +0 -0
  79. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-700-normal-BSlCClLu.woff2 +0 -0
  80. azimut-0.1.0/src/azimut/static/assets/oxanium-latin-ext-700-normal-CPlnVieJ.woff +0 -0
  81. azimut-0.1.0/src/azimut/static/favicon.svg +68 -0
  82. azimut-0.1.0/src/azimut/static/index.html +14 -0
  83. azimut-0.1.0/src/azimut/workspace.py +343 -0
  84. azimut-0.1.0/tests/conftest.py +16 -0
  85. azimut-0.1.0/tests/test_cases_api.py +307 -0
  86. azimut-0.1.0/tests/test_drafts_api.py +83 -0
  87. azimut-0.1.0/tests/test_inspect_api.py +542 -0
  88. azimut-0.1.0/tests/test_media_api.py +218 -0
  89. azimut-0.1.0/tests/test_proofs_api.py +91 -0
  90. azimut-0.1.0/tests/test_satellite_api.py +258 -0
  91. azimut-0.1.0/tests/test_tiles.py +164 -0
@@ -0,0 +1,35 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ backend:
10
+ name: Backend tests
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.12"
17
+ - run: pip install -e ".[dev]"
18
+ - run: pytest -q
19
+
20
+ frontend:
21
+ name: Frontend tests + build
22
+ runs-on: ubuntu-latest
23
+ defaults:
24
+ run:
25
+ working-directory: frontend
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: "20"
31
+ cache: npm
32
+ cache-dependency-path: frontend/package-lock.json
33
+ - run: npm ci
34
+ - run: npx vitest run
35
+ - run: npm run build
@@ -0,0 +1,115 @@
1
+ name: Release
2
+
3
+ # Cut a release by pushing a semver tag, e.g. git tag v0.1.0 && git push origin v0.1.0
4
+ on:
5
+ push:
6
+ tags: ["v*"]
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: write # create the GitHub release + upload assets
11
+ id-token: write # PyPI Trusted Publishing (OIDC) — no token secret needed
12
+
13
+ jobs:
14
+ dist:
15
+ name: Build wheel + sdist
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-node@v4
20
+ with:
21
+ node-version: "20"
22
+ - uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+ - name: Build frontend into the package
26
+ working-directory: frontend
27
+ run: npm ci && npm run build
28
+ - name: Build sdist + wheel
29
+ run: pipx run build
30
+ - name: Sanity-check the wheel bundles the UI
31
+ run: |
32
+ python - <<'PY'
33
+ import glob, zipfile
34
+ whl = sorted(glob.glob("dist/*.whl"))[-1]
35
+ n = [x for x in zipfile.ZipFile(whl).namelist() if x.startswith("azimut/static/")]
36
+ assert n, "wheel is missing azimut/static/** — did the frontend build run?"
37
+ print(f"{whl}: {len(n)} static files bundled")
38
+ PY
39
+ - uses: actions/upload-artifact@v4
40
+ with:
41
+ name: dist
42
+ path: dist/*
43
+
44
+ binaries:
45
+ name: Binary (${{ matrix.os }})
46
+ runs-on: ${{ matrix.os }}
47
+ strategy:
48
+ fail-fast: false
49
+ matrix:
50
+ include:
51
+ - os: ubuntu-latest
52
+ asset: azimut-linux-x86_64
53
+ - os: windows-latest
54
+ asset: azimut-windows-x86_64.exe
55
+ - os: macos-latest
56
+ asset: azimut-macos-arm64
57
+ steps:
58
+ - uses: actions/checkout@v4
59
+ - uses: actions/setup-node@v4
60
+ with:
61
+ node-version: "20"
62
+ - uses: actions/setup-python@v5
63
+ with:
64
+ python-version: "3.12"
65
+ - name: Build frontend into the package
66
+ working-directory: frontend
67
+ run: npm ci && npm run build
68
+ - name: Install package + PyInstaller
69
+ run: |
70
+ pip install .
71
+ pip install pyinstaller
72
+ - name: Build single-file binary
73
+ run: pyinstaller packaging/azimut.spec --distpath dist-bin --workpath build-bin
74
+ - name: Smoke-test the binary
75
+ shell: bash
76
+ run: |
77
+ BIN=dist-bin/azimut
78
+ [ "${{ runner.os }}" = "Windows" ] && BIN=dist-bin/azimut.exe
79
+ "$BIN" --version
80
+ - name: Name the asset per-OS
81
+ shell: bash
82
+ run: |
83
+ if [ "${{ runner.os }}" = "Windows" ]; then
84
+ mv dist-bin/azimut.exe "dist-bin/${{ matrix.asset }}"
85
+ else
86
+ mv dist-bin/azimut "dist-bin/${{ matrix.asset }}"
87
+ fi
88
+ - uses: actions/upload-artifact@v4
89
+ with:
90
+ name: ${{ matrix.asset }}
91
+ path: dist-bin/${{ matrix.asset }}
92
+
93
+ release:
94
+ name: GitHub release + PyPI publish
95
+ needs: [dist, binaries]
96
+ runs-on: ubuntu-latest
97
+ if: startsWith(github.ref, 'refs/tags/v')
98
+ steps:
99
+ - uses: actions/download-artifact@v4
100
+ with:
101
+ path: artifacts
102
+ - name: Gather release assets (binaries + wheel/sdist)
103
+ run: |
104
+ mkdir -p upload
105
+ find artifacts -type f -exec cp {} upload/ \;
106
+ ls -l upload
107
+ - name: Create GitHub release
108
+ uses: softprops/action-gh-release@v2
109
+ with:
110
+ files: upload/*
111
+ generate_release_notes: true
112
+ - name: Publish to PyPI (Trusted Publishing)
113
+ uses: pypa/gh-action-pypi-publish@release/v1
114
+ with:
115
+ packages-dir: artifacts/dist
@@ -0,0 +1,84 @@
1
+ # Environment / secrets
2
+ .env
3
+ .env.*
4
+ !.env.example
5
+ *.pem
6
+ *.key
7
+ secrets/
8
+
9
+ # Python
10
+ __pycache__/
11
+ *.py[cod]
12
+ *$py.class
13
+ *.egg-info/
14
+ .eggs/
15
+ .venv/
16
+ venv/
17
+ env/
18
+ .Python
19
+ build/
20
+ dist/
21
+ *.whl
22
+ .pytest_cache/
23
+ .mypy_cache/
24
+ .ruff_cache/
25
+ .tox/
26
+ pip-log.txt
27
+
28
+ # Node / JS
29
+ node_modules/
30
+ npm-debug.log*
31
+ yarn-debug.log*
32
+ yarn-error.log*
33
+ pnpm-debug.log*
34
+ .pnpm-store/
35
+ dist/
36
+ build/
37
+ .next/
38
+ .nuxt/
39
+ .turbo/
40
+ .parcel-cache/
41
+
42
+ # Editors / IDE
43
+ .vscode/
44
+ !.vscode/extensions.json
45
+ .idea/
46
+ *.swp
47
+ *.swo
48
+ *~
49
+ .DS_Store
50
+ Thumbs.db
51
+
52
+ # Workspace / OS
53
+ *.code-workspace
54
+ .cache/
55
+ .tmp/
56
+ tmp/
57
+ *.log
58
+ logs/
59
+
60
+ # Data / local artifacts
61
+ *.sqlite3
62
+ *.db
63
+ data/
64
+ *.csv
65
+ !docs/**/*.csv
66
+
67
+ # Docker
68
+ *.pid
69
+ .docker/
70
+
71
+ # Misc
72
+ *.bak
73
+ *.orig
74
+
75
+ # Azimut build artifacts (frontend builds into the Python package)
76
+ src/azimut/static/
77
+
78
+ # Local tooling / assistant configs
79
+ CLAUDE.md
80
+ .claude/
81
+
82
+ # PyInstaller local output
83
+ dist-bin/
84
+ build-bin/