opex-manifest-generator 1.3.3__tar.gz → 1.3.5__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 (43) hide show
  1. opex_manifest_generator-1.3.5/.github/workflows/build portable.yml +217 -0
  2. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/.github/workflows/codeql.yml +35 -6
  3. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/.github/workflows/pypi-publish.yml +8 -1
  4. opex_manifest_generator-1.3.5/.github/workflows/python-tests.yml +42 -0
  5. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/PKG-INFO +3 -1
  6. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/cli.py +134 -43
  7. opex_manifest_generator-1.3.5/opex_manifest_generator/common.py +91 -0
  8. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/hash.py +30 -14
  9. opex_manifest_generator-1.3.5/opex_manifest_generator/opex_manifest.py +1004 -0
  10. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/PKG-INFO +3 -1
  11. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/SOURCES.txt +5 -1
  12. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/requires.txt +3 -0
  13. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/pyproject.toml +8 -2
  14. opex_manifest_generator-1.3.5/pytest.ini +19 -0
  15. opex_manifest_generator-1.3.5/tests/test_opex_manifest.py +316 -0
  16. opex_manifest_generator-1.3.3/opex_manifest_generator/common.py +0 -79
  17. opex_manifest_generator-1.3.3/opex_manifest_generator/opex_manifest.py +0 -782
  18. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/.gitignore +0 -0
  19. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/LICENSE.md +0 -0
  20. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/README.md +0 -0
  21. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/assets/Column Headers.png +0 -0
  22. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/assets/FullName Column.png +0 -0
  23. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/assets/Hash Headers.png +0 -0
  24. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/assets/Identifiers Headers.png +0 -0
  25. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/assets/XML Headers.png +0 -0
  26. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/__init__.py +0 -0
  27. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/metadata/DublinCore Template.xml +0 -0
  28. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/metadata/EAD Template.xml +0 -0
  29. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/metadata/GDPR Template.xml +0 -0
  30. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/metadata/MODS Template.xml +0 -0
  31. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator/options/options.properties +0 -0
  32. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/dependency_links.txt +0 -0
  33. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/entry_points.txt +0 -0
  34. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/opex_manifest_generator.egg-info/top_level.txt +0 -0
  35. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/Sample File 1.jpg.opex +0 -0
  36. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/Sample File 2.gif.opex +0 -0
  37. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/Sample Folder Manifest.opex +0 -0
  38. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/opex_manifest_generator_AutoClass.xlsx +0 -0
  39. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/spreads/dctemplate.xlsx +0 -0
  40. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/spreads/eadtemplate.xlsx +0 -0
  41. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/spreads/gdprtemplate.xlsx +0 -0
  42. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/samples/spreads/modstemplate.xlsx +0 -0
  43. {opex_manifest_generator-1.3.3 → opex_manifest_generator-1.3.5}/setup.cfg +0 -0
@@ -0,0 +1,217 @@
1
+ name: Build Portable Executables with Nuitka
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ - 'test-*'
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ build-windows:
14
+ name: Build Windows Portable
15
+ runs-on: windows-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v4
21
+ with:
22
+ python-version: '3.11'
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ choco install llvm -y
27
+ python -m pip install --upgrade pip
28
+ pip install nuitka ordered-set zstandard odf
29
+ pip install -e .
30
+
31
+ - name: Build Windows executable with Nuitka
32
+ env:
33
+ NUITKA_CACHE_DIR: ${{ runner.temp }}/nuitka_cache
34
+ run: |
35
+ $tag = "${{ github.ref_name }}"
36
+ $version = [regex]::Match($tag, '\d+\.\d+\.\d+').Value
37
+ if ($version -eq "") { $version = "1.0.0" }
38
+ python -m nuitka `
39
+ --onefile `
40
+ -o opex_generate `
41
+ --output-dir=build `
42
+ --include-package=odf `
43
+ --include-package=pandas `
44
+ --include-package=opex_manifest_generator `
45
+ --include-data-dir=opex_manifest_generator/options=options `
46
+ --windows-console-mode=attach `
47
+ --company-name="Opex Manifest Generator" `
48
+ --product-name="Opex Manifest Generator" `
49
+ --file-version="$version" `
50
+ --product-version="$version" `
51
+ --copyright="Copyright $(Get-Date -Format yyyy)" `
52
+ --assume-yes-for-downloads `
53
+ --quiet `
54
+ --clang `
55
+ --mingw64 `
56
+ opex_manifest_generator/cli.py
57
+
58
+ - name: Create Windows artifact archive
59
+ run: |
60
+ $version = "${{ github.ref_name }}" -replace "^v", ""
61
+ Compress-Archive -Path build/opex_generate.exe -DestinationPath "opex_generate_windows_$version.zip"
62
+
63
+ - name: Upload Windows artifact
64
+ uses: actions/upload-artifact@v4
65
+ with:
66
+ name: opex_generate-windows
67
+ path: opex_generate_windows_*.zip
68
+
69
+ - name: Upload to release
70
+ uses: softprops/action-gh-release@v1
71
+ with:
72
+ draft: true
73
+ files: opex_generate_windows_*.zip
74
+ env:
75
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76
+
77
+ build-linux:
78
+ name: Build Linux Portable
79
+ runs-on: ubuntu-latest
80
+ steps:
81
+ - uses: actions/checkout@v4
82
+
83
+ - name: Set up Python
84
+ uses: actions/setup-python@v4
85
+ with:
86
+ python-version: '3.11'
87
+
88
+ - name: Install system dependencies
89
+ run: |
90
+ sudo apt-get update
91
+ sudo apt-get install -y patchelf clang
92
+
93
+ - name: Install Python dependencies
94
+ run: |
95
+ python -m pip install --upgrade pip
96
+ pip install nuitka ordered-set zstandard odf
97
+ pip install -e .
98
+
99
+ - name: Build Linux executable with Nuitka
100
+ run: |
101
+ python -m nuitka \
102
+ --onefile \
103
+ -o opex_generate \
104
+ --output-dir=build \
105
+ --include-package=odf \
106
+ --include-package=pandas \
107
+ --include-package=opex_manifest_generator \
108
+ --include-data-dir=opex_manifest_generator/options=options \
109
+ --assume-yes-for-downloads \
110
+ --quiet \
111
+ --clang \
112
+ opex_manifest_generator/cli.py
113
+
114
+ - name: Create Linux artifact archive
115
+ run: |
116
+ version="${{ github.ref_name }}"
117
+ version="${version#v}"
118
+ version="${version#test-}"
119
+ if [ -z "$version" ] || [ "$version" = "master" ]; then
120
+ version="1.0.0"
121
+ fi
122
+ tar -czf "opex_generate_linux_${version}.tar.gz" -C build opex_generate
123
+
124
+ - name: Upload Linux artifact
125
+ uses: actions/upload-artifact@v4
126
+ with:
127
+ name: opex_generate-linux
128
+ path: opex_generate_linux_*.tar.gz
129
+
130
+ - name: Upload to release
131
+ uses: softprops/action-gh-release@v1
132
+ with:
133
+ draft: true
134
+ files: opex_generate_linux_*.tar.gz
135
+ env:
136
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
137
+
138
+ build-macos:
139
+ name: Build macOS Portable
140
+ runs-on: macos-latest
141
+ steps:
142
+ - uses: actions/checkout@v4
143
+
144
+ - name: Set up Python
145
+ uses: actions/setup-python@v4
146
+ with:
147
+ python-version: '3.11'
148
+
149
+ - name: Install Python dependencies
150
+ run: |
151
+ python -m pip install --upgrade pip
152
+ pip install nuitka ordered-set zstandard odf
153
+ pip install -e .
154
+
155
+ - name: Build macOS executable with Nuitka
156
+ run: |
157
+ python -m nuitka \
158
+ --onefile \
159
+ -o opex_generate \
160
+ --output-dir=build \
161
+ --include-package=odf \
162
+ --include-package=pandas \
163
+ --include-package=opex_manifest_generator \
164
+ --include-data-dir=opex_manifest_generator/options=options \
165
+ --macos-create-app-bundle \
166
+ --assume-yes-for-downloads \
167
+ --quiet \
168
+ --clang \
169
+ opex_manifest_generator/cli.py
170
+
171
+ - name: Create macOS artifact archive
172
+ run: |
173
+ version="${{ github.ref_name }}"
174
+ version="${version#v}"
175
+ version="${version#test-}"
176
+ if [ -z "$version" ] || [ "$version" = "master" ]; then
177
+ version="1.0.0"
178
+ fi
179
+ tar -czf "opex_generate_macos_${version}.tar.gz" -C build opex_generate
180
+
181
+ - name: Upload macOS artifact
182
+ uses: actions/upload-artifact@v4
183
+ with:
184
+ name: opex_generate-macos
185
+ path: opex_generate_macos_*.tar.gz
186
+
187
+ - name: Upload to release
188
+ uses: softprops/action-gh-release@v1
189
+ with:
190
+ draft: true
191
+ files: opex_generate_macos_*.tar.gz
192
+ env:
193
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
194
+
195
+ create-release-notes:
196
+ name: Create Release Notes
197
+ runs-on: ubuntu-latest
198
+ needs: [build-windows, build-linux, build-macos]
199
+ if: startsWith(github.ref, 'refs/tags/')
200
+ steps:
201
+ - uses: actions/checkout@v4
202
+
203
+ - name: Generate Release Notes
204
+ run: |
205
+ echo "## Portable Executables" > release_notes.md
206
+ echo "" >> release_notes.md
207
+ echo "### Downloads" >> release_notes.md
208
+ echo "- **Windows**: \`opex_generate_windows_\`" >> release_notes.md
209
+ echo "- **Linux**: \`opex_generate_linux_\`" >> release_notes.md
210
+ echo "- **macOS**: \`opex_generate_macos_\`" >> release_notes.md
211
+ echo "" >> release_notes.md
212
+ echo "These are standalone executables that do not require Python to be installed." >> release_notes.md
213
+ echo "" >> release_notes.md
214
+ echo "### Usage" >> release_notes.md
215
+ echo "\`\`\`bash" >> release_notes.md
216
+ echo "./opex_generate /path/to/root -p PREFIX -o /path/to/output" >> release_notes.md
217
+ echo "\`\`\`" >> release_notes.md
@@ -13,10 +13,25 @@ name: "CodeQL"
13
13
 
14
14
  on:
15
15
  push:
16
- branches: [ master ]
16
+ tags:
17
+ - 'v*'
18
+ # avoid running on doc-only / asset-only changes
19
+ paths-ignore:
20
+ - 'README.md'
21
+ - 'docs/**'
22
+ - 'assets/**'
23
+ - '.github/**'
17
24
  pull_request:
18
25
  # The branches below must be a subset of the branches above
19
- branches: [ master ]
26
+ branches: [ master]
27
+ # avoid running on doc-only / asset-only changes
28
+ paths-ignore:
29
+ - 'README.md'
30
+ - 'docs/**'
31
+ - 'assets/**'
32
+ - '.github/**'
33
+ # allow manual runs
34
+ workflow_dispatch: {}
20
35
  schedule:
21
36
  - cron: '20 10 * * 6'
22
37
 
@@ -24,6 +39,9 @@ jobs:
24
39
  analyze:
25
40
  name: Analyze
26
41
  runs-on: ubuntu-latest
42
+ concurrency:
43
+ group: codeql-scan-${{ github.ref }}
44
+ cancel-in-progress: true
27
45
  permissions:
28
46
  actions: read
29
47
  contents: read
@@ -39,11 +57,22 @@ jobs:
39
57
 
40
58
  steps:
41
59
  - name: Checkout repository
42
- uses: actions/checkout@v2
60
+ uses: actions/checkout@v4
61
+
62
+ - name: Set up Python (improves CodeQL context for Python projects)
63
+ uses: actions/setup-python@v4
64
+ with:
65
+ python-version: '3.x'
66
+ cache: 'pip'
67
+
68
+ - name: Install dev dependencies (optional)
69
+ run: |
70
+ python -m pip install --upgrade pip
71
+ if [ -f pyproject.toml ]; then pip install -e '.[dev]' || true; fi
43
72
 
44
73
  # Initializes the CodeQL tools for scanning.
45
74
  - name: Initialize CodeQL
46
- uses: github/codeql-action/init@v2
75
+ uses: github/codeql-action/init@v4
47
76
  with:
48
77
  languages: ${{ matrix.language }}
49
78
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -54,7 +83,7 @@ jobs:
54
83
  # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
55
84
  # If this step fails, then you should remove it and run the build manually (see below)
56
85
  - name: Autobuild
57
- uses: github/codeql-action/autobuild@v2
86
+ uses: github/codeql-action/autobuild@v4
58
87
 
59
88
  # ℹ️ Command-line programs to run using the OS shell.
60
89
  # 📚 https://git.io/JvXDl
@@ -68,4 +97,4 @@ jobs:
68
97
  # make release
69
98
 
70
99
  - name: Perform CodeQL Analysis
71
- uses: github/codeql-action/analyze@v2
100
+ uses: github/codeql-action/analyze@v4
@@ -1,6 +1,13 @@
1
1
  name: Publish Python distribution to PyPI
2
2
 
3
- on: push
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ pull_request:
8
+ # The branches below must be a subset of the branches above
9
+ branches: [ master]
10
+
4
11
 
5
12
  jobs:
6
13
  build:
@@ -0,0 +1,42 @@
1
+ name: Run Tests
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ - 'test-*'
8
+ paths-ignore:
9
+ - 'README.md'
10
+ - 'docs/**'
11
+ - 'assets/**'
12
+ - '.github/**'
13
+ pull_request:
14
+ branches: [ master]
15
+ paths-ignore:
16
+ - 'README.md'
17
+ - 'docs/**'
18
+ - 'assets/**'
19
+ - '.github/**'
20
+ jobs:
21
+ build:
22
+ runs-on: ubuntu-latest
23
+ strategy:
24
+ matrix:
25
+ python-version: ['3.10', '3.11', '3.12', '3.13']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+
30
+ - name: Set up Python ${{ matrix.python-version }}
31
+ uses: actions/setup-python@v4
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Install dependencies
36
+ run: |
37
+ python -m pip install --upgrade pip
38
+ python -m pip install -e ".[dev,addex]"
39
+
40
+ - name: Run tests
41
+ run: |
42
+ python -m pytest -v
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opex_manifest_generator
3
- Version: 1.3.3
3
+ Version: 1.3.5
4
4
  Summary: An Opex Manifest Generator tool for use with OPEX Files, as designed by Preservica
5
5
  Author-email: Christopher Prince <c.pj.prince@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -18,6 +18,8 @@ Requires-Dist: openpyxl
18
18
  Requires-Dist: lxml
19
19
  Provides-Extra: addex
20
20
  Requires-Dist: odfpy; extra == "addex"
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=7.0; extra == "dev"
21
23
  Dynamic: license-file
22
24
 
23
25
  # Opex Manifest Generator Tool