pyngb 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 (99) hide show
  1. pyngb-0.0.1/.github/dependabot.yml +12 -0
  2. pyngb-0.0.1/.github/workflows/ci-cd.yml +240 -0
  3. pyngb-0.0.1/.gitignore +179 -0
  4. pyngb-0.0.1/.pre-commit-config.yaml +90 -0
  5. pyngb-0.0.1/.python-version +1 -0
  6. pyngb-0.0.1/.vscode/settings.json +7 -0
  7. pyngb-0.0.1/CODE_OF_CONDUCT.md +76 -0
  8. pyngb-0.0.1/LICENSE.txt +9 -0
  9. pyngb-0.0.1/NOTICE +18 -0
  10. pyngb-0.0.1/PKG-INFO +515 -0
  11. pyngb-0.0.1/README.md +450 -0
  12. pyngb-0.0.1/ROADMAP.md +260 -0
  13. pyngb-0.0.1/SECURITY.md +27 -0
  14. pyngb-0.0.1/docs/.nojekyll +0 -0
  15. pyngb-0.0.1/docs/Makefile +20 -0
  16. pyngb-0.0.1/docs/api/batch-processing.md +13 -0
  17. pyngb-0.0.1/docs/api/configuration.md +9 -0
  18. pyngb-0.0.1/docs/api/core-functions.md +13 -0
  19. pyngb-0.0.1/docs/api/data-validation.md +9 -0
  20. pyngb-0.0.1/docs/api/exceptions.md +11 -0
  21. pyngb-0.0.1/docs/api/utilities.md +5 -0
  22. pyngb-0.0.1/docs/api.md +535 -0
  23. pyngb-0.0.1/docs/api.rst +58 -0
  24. pyngb-0.0.1/docs/conf.py +91 -0
  25. pyngb-0.0.1/docs/development/architecture.md +8 -0
  26. pyngb-0.0.1/docs/development/performance.md +6 -0
  27. pyngb-0.0.1/docs/development/testing.md +7 -0
  28. pyngb-0.0.1/docs/development.md +604 -0
  29. pyngb-0.0.1/docs/development.rst +136 -0
  30. pyngb-0.0.1/docs/index.md +188 -0
  31. pyngb-0.0.1/docs/index.rst +50 -0
  32. pyngb-0.0.1/docs/installation.md +502 -0
  33. pyngb-0.0.1/docs/installation.rst +34 -0
  34. pyngb-0.0.1/docs/javascripts/extra.js +4 -0
  35. pyngb-0.0.1/docs/quickstart.md +234 -0
  36. pyngb-0.0.1/docs/quickstart.rst +103 -0
  37. pyngb-0.0.1/docs/stylesheets/extra.css +7 -0
  38. pyngb-0.0.1/docs/troubleshooting.md +592 -0
  39. pyngb-0.0.1/docs/user-guide/basic-usage.md +21 -0
  40. pyngb-0.0.1/docs/user-guide/batch-processing.md +23 -0
  41. pyngb-0.0.1/docs/user-guide/command-line.md +18 -0
  42. pyngb-0.0.1/docs/user-guide/data-analysis.md +54 -0
  43. pyngb-0.0.1/examples/README.md +112 -0
  44. pyngb-0.0.1/examples/basic_parsing.py +205 -0
  45. pyngb-0.0.1/examples/batch_processing.py +362 -0
  46. pyngb-0.0.1/examples/batch_processing_example.py +93 -0
  47. pyngb-0.0.1/examples/process_all_test_files.py +62 -0
  48. pyngb-0.0.1/mkdocs.yml +137 -0
  49. pyngb-0.0.1/pyproject.toml +271 -0
  50. pyngb-0.0.1/scripts/README.md +62 -0
  51. pyngb-0.0.1/scripts/benchmarks.py +169 -0
  52. pyngb-0.0.1/scripts/discover_patterns.py +365 -0
  53. pyngb-0.0.1/scripts/dump_masses.py +25 -0
  54. pyngb-0.0.1/scripts/inspect_stream1_metadata.py +171 -0
  55. pyngb-0.0.1/scripts/process_all_test_files.py +61 -0
  56. pyngb-0.0.1/scripts/run_tests.py +246 -0
  57. pyngb-0.0.1/src/pyngb/__init__.py +55 -0
  58. pyngb-0.0.1/src/pyngb/__main__.py +11 -0
  59. pyngb-0.0.1/src/pyngb/api/__init__.py +7 -0
  60. pyngb-0.0.1/src/pyngb/api/loaders.py +267 -0
  61. pyngb-0.0.1/src/pyngb/batch.py +580 -0
  62. pyngb-0.0.1/src/pyngb/binary/__init__.py +14 -0
  63. pyngb-0.0.1/src/pyngb/binary/handlers.py +179 -0
  64. pyngb-0.0.1/src/pyngb/binary/parser.py +305 -0
  65. pyngb-0.0.1/src/pyngb/constants.py +249 -0
  66. pyngb-0.0.1/src/pyngb/core/__init__.py +7 -0
  67. pyngb-0.0.1/src/pyngb/core/parser.py +168 -0
  68. pyngb-0.0.1/src/pyngb/exceptions.py +31 -0
  69. pyngb-0.0.1/src/pyngb/extractors/__init__.py +8 -0
  70. pyngb-0.0.1/src/pyngb/extractors/metadata.py +772 -0
  71. pyngb-0.0.1/src/pyngb/extractors/streams.py +169 -0
  72. pyngb-0.0.1/src/pyngb/py.typed +0 -0
  73. pyngb-0.0.1/src/pyngb/util.py +134 -0
  74. pyngb-0.0.1/src/pyngb/validation.py +741 -0
  75. pyngb-0.0.1/tests/README.md +155 -0
  76. pyngb-0.0.1/tests/conftest.py +147 -0
  77. pyngb-0.0.1/tests/test_api.py +315 -0
  78. pyngb-0.0.1/tests/test_batch.py +716 -0
  79. pyngb-0.0.1/tests/test_binary_handlers.py +212 -0
  80. pyngb-0.0.1/tests/test_binary_parser.py +211 -0
  81. pyngb-0.0.1/tests/test_cli.py +103 -0
  82. pyngb-0.0.1/tests/test_cli_execution.py +309 -0
  83. pyngb-0.0.1/tests/test_cli_metadata.py +277 -0
  84. pyngb-0.0.1/tests/test_constants.py +189 -0
  85. pyngb-0.0.1/tests/test_crucible_fallback.py +13 -0
  86. pyngb-0.0.1/tests/test_exceptions.py +77 -0
  87. pyngb-0.0.1/tests/test_files/DF_FILED_STA_21O2_10K_220222_R1.ngb-ss3 +0 -0
  88. pyngb-0.0.1/tests/test_files/Douglas_Fir_STA_Baseline_10K_250813_R15.ngb-bs3 +0 -0
  89. pyngb-0.0.1/tests/test_files/RO_FILED_STA_N2_10K_250129_R29.ngb-ss3 +0 -0
  90. pyngb-0.0.1/tests/test_files/Red_Oak_STA_10K_250731_R7.ngb-ss3 +0 -0
  91. pyngb-0.0.1/tests/test_integration.py +725 -0
  92. pyngb-0.0.1/tests/test_reference_crucible_mass.py +15 -0
  93. pyngb-0.0.1/tests/test_reference_mass.py +14 -0
  94. pyngb-0.0.1/tests/test_stress_and_edge_cases.py +617 -0
  95. pyngb-0.0.1/tests/test_temperature_program.py +388 -0
  96. pyngb-0.0.1/tests/test_util.py +628 -0
  97. pyngb-0.0.1/tests/test_validation.py +492 -0
  98. pyngb-0.0.1/tests/test_workflows.py +528 -0
  99. pyngb-0.0.1/uv.lock +2442 -0
@@ -0,0 +1,12 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+
8
+ updates:
9
+ - package-ecosystem: "uv"
10
+ directory: "/"
11
+ schedule:
12
+ interval: "weekly"
@@ -0,0 +1,240 @@
1
+ name: CI/CD Pipeline
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ release:
9
+ types: [ published ]
10
+
11
+ jobs:
12
+ test:
13
+ permissions:
14
+ contents: read
15
+ name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
16
+ runs-on: ${{ matrix.os }}
17
+ strategy:
18
+ matrix:
19
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
20
+ os: [ubuntu-latest, windows-latest, macos-latest]
21
+ fail-fast: false
22
+
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - name: Set up Python ${{ matrix.python-version }}
27
+ uses: actions/setup-python@v4
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v2
33
+ with:
34
+ version: "latest"
35
+
36
+ - name: Install dependencies
37
+ run: |
38
+ uv sync --all-extras
39
+
40
+ - name: Run linting
41
+ run: |
42
+ uv run ruff check src/ tests/
43
+ uv run ruff format --check src/ tests/
44
+
45
+ - name: Run type checking
46
+ run: |
47
+ uv run mypy src/pyngb --ignore-missing-imports
48
+
49
+ - name: Run tests with coverage
50
+ run: |
51
+ uv run pytest --cov=pyngb --cov-report=xml --cov-report=term-missing
52
+
53
+ - name: Upload coverage to Codecov
54
+ if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
55
+ uses: codecov/codecov-action@v3
56
+ with:
57
+ file: ./coverage.xml
58
+ flags: unittests
59
+ name: codecov-umbrella
60
+
61
+ performance:
62
+ name: Performance Tests
63
+ runs-on: ubuntu-latest
64
+ needs: test
65
+ if: github.event_name == 'pull_request'
66
+ permissions:
67
+ contents: read
68
+
69
+ steps:
70
+ - uses: actions/checkout@v4
71
+
72
+ - name: Set up Python
73
+ uses: actions/setup-python@v4
74
+ with:
75
+ python-version: "3.11"
76
+
77
+ - name: Install dependencies
78
+ run: |
79
+ pip install uv
80
+ uv sync --all-extras
81
+ uv pip install pytest-benchmark psutil
82
+
83
+ - name: Run performance benchmarks
84
+ run: |
85
+ uv run python benchmarks.py --runs 3
86
+
87
+ security:
88
+ name: Security Scan
89
+ runs-on: ubuntu-latest
90
+ permissions:
91
+ contents: read
92
+
93
+ steps:
94
+ - uses: actions/checkout@v4
95
+
96
+ - name: Set up Python
97
+ uses: actions/setup-python@v4
98
+ with:
99
+ python-version: "3.11"
100
+
101
+ - name: Install uv
102
+ uses: astral-sh/setup-uv@v2
103
+ with:
104
+ version: "latest"
105
+
106
+ - name: Install dependencies
107
+ run: |
108
+ uv sync --all-extras
109
+
110
+ - name: Run Bandit Security Scan
111
+ run: |
112
+ uv run bandit -r src/ -f json -o bandit-report.json || true
113
+ uv run bandit -r src/ -f txt
114
+
115
+ - name: Run Safety Check
116
+ run: |
117
+ # Use the new scan command - cleaner output without deprecation warnings
118
+ uv run safety scan --output json --save-as json safety-report.json || true
119
+ uv run safety scan || echo "Safety scan completed with warnings"
120
+
121
+ docs:
122
+ name: Build Documentation
123
+ runs-on: ubuntu-latest
124
+ permissions:
125
+ contents: read
126
+
127
+ steps:
128
+ - uses: actions/checkout@v4
129
+
130
+ - name: Set up Python
131
+ uses: actions/setup-python@v4
132
+ with:
133
+ python-version: "3.11"
134
+
135
+ - name: Install documentation dependencies
136
+ run: |
137
+ pip install uv
138
+ uv sync --all-extras
139
+
140
+ - name: Build documentation
141
+ run: |
142
+ uv run mkdocs build
143
+ # Add .nojekyll file for GitHub Pages
144
+ touch site/.nojekyll
145
+
146
+ - name: Upload documentation artifacts
147
+ uses: actions/upload-artifact@v4
148
+ with:
149
+ name: documentation
150
+ path: site
151
+
152
+ deploy-docs:
153
+ name: Deploy Documentation
154
+ runs-on: ubuntu-latest
155
+ needs: [docs]
156
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
157
+
158
+ permissions:
159
+ contents: read
160
+ pages: write
161
+ id-token: write
162
+
163
+ environment:
164
+ name: github-pages
165
+ url: ${{ steps.deployment.outputs.page_url }}
166
+
167
+ steps:
168
+ - name: Download documentation artifacts
169
+ uses: actions/download-artifact@v4
170
+ with:
171
+ name: documentation
172
+ path: ./site
173
+
174
+ - name: Setup Pages
175
+ uses: actions/configure-pages@v4
176
+
177
+ - name: Upload to GitHub Pages
178
+ uses: actions/upload-pages-artifact@v3
179
+ with:
180
+ path: ./site
181
+
182
+ - name: Deploy to GitHub Pages
183
+ id: deployment
184
+ uses: actions/deploy-pages@v4
185
+
186
+ build:
187
+ name: Build Package
188
+ runs-on: ubuntu-latest
189
+ permissions:
190
+ contents: read
191
+ needs: [test, security]
192
+
193
+ steps:
194
+ - uses: actions/checkout@v4
195
+
196
+ - name: Set up Python
197
+ uses: actions/setup-python@v4
198
+ with:
199
+ python-version: "3.11"
200
+
201
+ - name: Install build dependencies
202
+ run: |
203
+ pip install uv
204
+ uv sync --extra build
205
+
206
+ - name: Build package
207
+ run: |
208
+ uv run python -m build
209
+
210
+ - name: Check package
211
+ run: |
212
+ uv run twine check dist/*
213
+
214
+ - name: Upload build artifacts
215
+ uses: actions/upload-artifact@v4
216
+ with:
217
+ name: dist
218
+ path: dist/
219
+
220
+ publish:
221
+ name: Publish to PyPI
222
+ runs-on: ubuntu-latest
223
+ permissions:
224
+ contents: read
225
+ needs: [test, build]
226
+ if: github.event_name == 'release' && github.event.action == 'published'
227
+
228
+ steps:
229
+ - uses: actions/checkout@v4
230
+
231
+ - name: Download build artifacts
232
+ uses: actions/download-artifact@v4
233
+ with:
234
+ name: dist
235
+ path: dist/
236
+
237
+ - name: Publish to PyPI
238
+ uses: pypa/gh-action-pypi-publish@v1.8.10
239
+ with:
240
+ password: ${{ secrets.PYPI_API_TOKEN }}
pyngb-0.0.1/.gitignore ADDED
@@ -0,0 +1,179 @@
1
+ # Created by https://www.toptal.com/developers/gitignore/api/python
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=python
3
+
4
+ ### Python ###
5
+ # Byte-compiled / optimized / DLL files
6
+ __pycache__/
7
+ *.py[cod]
8
+ *$py.class
9
+
10
+ # C extensions
11
+ *.so
12
+
13
+ # Distribution / packaging
14
+ .Python
15
+ build/
16
+ develop-eggs/
17
+ dist/
18
+ downloads/
19
+ eggs/
20
+ .eggs/
21
+ lib/
22
+ lib64/
23
+ parts/
24
+ sdist/
25
+ var/
26
+ wheels/
27
+ share/python-wheels/
28
+ *.egg-info/
29
+ .installed.cfg
30
+ *.egg
31
+ MANIFEST
32
+
33
+ # PyInstaller
34
+ # Usually these files are written by a python script from a template
35
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
36
+ *.manifest
37
+ *.spec
38
+
39
+ # Installer logs
40
+ pip-log.txt
41
+ pip-delete-this-directory.txt
42
+
43
+ # Unit test / coverage reports
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ *.py,cover
54
+ .hypothesis/
55
+ .pytest_cache/
56
+ cover/
57
+
58
+ # Translations
59
+ *.mo
60
+ *.pot
61
+
62
+ # Django stuff:
63
+ *.log
64
+ local_settings.py
65
+ db.sqlite3
66
+ db.sqlite3-journal
67
+
68
+ # Flask stuff:
69
+ instance/
70
+ .webassets-cache
71
+
72
+ # Scrapy stuff:
73
+ .scrapy
74
+
75
+ # Sphinx documentation
76
+ docs/_build/
77
+
78
+ # PyBuilder
79
+ .pybuilder/
80
+ target/
81
+
82
+ # Jupyter Notebook
83
+ .ipynb_checkpoints
84
+
85
+ # IPython
86
+ profile_default/
87
+ ipython_config.py
88
+
89
+ # pyenv
90
+ # For a library or package, you might want to ignore these files since the code is
91
+ # intended to run in multiple environments; otherwise, check them in:
92
+ # .python-version
93
+
94
+ # pipenv
95
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
96
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
97
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
98
+ # install all needed dependencies.
99
+ #Pipfile.lock
100
+
101
+ # poetry
102
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
103
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
104
+ # commonly ignored for libraries.
105
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
106
+ #poetry.lock
107
+
108
+ # pdm
109
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
110
+ #pdm.lock
111
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
112
+ # in version control.
113
+ # https://pdm.fming.dev/#use-with-ide
114
+ .pdm.toml
115
+
116
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
117
+ __pypackages__/
118
+
119
+ # Celery stuff
120
+ celerybeat-schedule
121
+ celerybeat.pid
122
+
123
+ # SageMath parsed files
124
+ *.sage.py
125
+
126
+ # Environments
127
+ .env
128
+ .venv
129
+ env/
130
+ venv/
131
+ ENV/
132
+ env.bak/
133
+ venv.bak/
134
+
135
+ # Spyder project settings
136
+ .spyderproject
137
+ .spyproject
138
+
139
+ # Rope project settings
140
+ .ropeproject
141
+
142
+ # mkdocs documentation
143
+ /site
144
+
145
+ # mypy
146
+ .mypy_cache/
147
+ .dmypy.json
148
+ dmypy.json
149
+
150
+ # Pyre type checker
151
+ .pyre/
152
+
153
+ # pytype static type analyzer
154
+ .pytype/
155
+
156
+ # Cython debug symbols
157
+ cython_debug/
158
+
159
+ # PyCharm
160
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
161
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
162
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
163
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
164
+ #.idea/
165
+
166
+ ### Python Patch ###
167
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
168
+ poetry.toml
169
+
170
+ # ruff
171
+ .ruff_cache/
172
+
173
+ # LSP config files
174
+ pyrightconfig.json
175
+
176
+ # End of https://www.toptal.com/developers/gitignore/api/python
177
+
178
+ # dev directories
179
+ output/
@@ -0,0 +1,90 @@
1
+ # Pre-commit hooks for pyngb
2
+ # See https://pre-commit.com for more information
3
+
4
+ repos:
5
+ # Linting and code quality
6
+ - repo: https://github.com/astral-sh/ruff-pre-commit
7
+ rev: v0.12.8
8
+ hooks:
9
+ - id: ruff
10
+ name: "Lint Python code with Ruff"
11
+ args: [--fix, --exit-non-zero-on-fix]
12
+ - id: ruff-format
13
+ name: "Format Python code with Ruff"
14
+
15
+ # Type checking
16
+ - repo: https://github.com/pre-commit/mirrors-mypy
17
+ rev: v1.17.1
18
+ hooks:
19
+ - id: mypy
20
+ name: "Type check with mypy"
21
+ additional_dependencies:
22
+ - types-setuptools
23
+ args: [--ignore-missing-imports]
24
+ files: ^src/pyngb/.*\.py$
25
+
26
+ # General file checks
27
+ - repo: https://github.com/pre-commit/pre-commit-hooks
28
+ rev: v6.0.0
29
+ hooks:
30
+ - id: trailing-whitespace
31
+ name: "Remove trailing whitespace"
32
+ - id: end-of-file-fixer
33
+ name: "Ensure files end with newline"
34
+ - id: check-yaml
35
+ name: "Check YAML syntax"
36
+ - id: check-toml
37
+ name: "Check TOML syntax"
38
+ - id: check-json
39
+ name: "Check JSON syntax"
40
+ - id: check-merge-conflict
41
+ name: "Check for merge conflict markers"
42
+ - id: check-added-large-files
43
+ name: "Check for large files"
44
+ args: [--maxkb=1000]
45
+ - id: check-case-conflict
46
+ name: "Check for case conflicts"
47
+ - id: mixed-line-ending
48
+ name: "Check line endings"
49
+ args: [--fix=lf]
50
+
51
+ # Security checks
52
+ - repo: https://github.com/PyCQA/bandit
53
+ rev: 1.8.6
54
+ hooks:
55
+ - id: bandit
56
+ name: "Security check with Bandit"
57
+ args: [-c, pyproject.toml]
58
+ additional_dependencies: ["bandit[toml]"]
59
+ exclude: tests/
60
+
61
+ # Docstring checks (temporarily disabled while focusing on core functionality)
62
+ # - repo: https://github.com/pycqa/pydocstyle
63
+ # rev: 6.3.0
64
+ # hooks:
65
+ # - id: pydocstyle
66
+ # name: "Check docstrings with pydocstyle"
67
+ # additional_dependencies: [toml]
68
+ # files: ^src/pyngb/.*\.py$
69
+ # args: [--convention=numpy]
70
+
71
+ # Spell checking
72
+ - repo: https://github.com/codespell-project/codespell
73
+ rev: v2.4.1
74
+ hooks:
75
+ - id: codespell
76
+ name: "Check spelling"
77
+ args: [--write-changes]
78
+ exclude: |
79
+ (?x)^(
80
+ .*\.lock|
81
+ .*\.ngb-ss3|
82
+ tests/test_files/.*
83
+ )$
84
+
85
+ # Configuration for specific hooks
86
+ default_install_hook_types: [pre-commit, pre-push]
87
+ default_stages: [pre-commit]
88
+
89
+ # Minimum pre-commit version
90
+ minimum_pre_commit_version: '3.0.0'
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,7 @@
1
+ {
2
+ "python.testing.pytestArgs": [
3
+ "tests"
4
+ ],
5
+ "python.testing.unittestEnabled": false,
6
+ "python.testing.pytestEnabled": true
7
+ }
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ - Using welcoming and inclusive language
18
+ - Being respectful of differing viewpoints and experiences
19
+ - Gracefully accepting constructive criticism
20
+ - Focusing on what is best for the community
21
+ - Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ - The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ - Trolling, insulting/derogatory comments, and personal or political attacks
28
+ - Public or private harassment
29
+ - Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ - Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at gbellamy@umd.edu. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-present GraysonBellamy <gbellamy@umd.edu>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pyngb-0.0.1/NOTICE ADDED
@@ -0,0 +1,18 @@
1
+ pyNGB - Unofficial NETZSCH NGB Parser
2
+ =====================================
3
+
4
+ Copyright (c) 2025 Grayson Bellamy
5
+
6
+ This project includes original code released under the MIT License (see LICENSE.txt).
7
+
8
+ Trademark Notice
9
+ ----------------
10
+ NETZSCH and related marks are trademarks of NETZSCH-Gerätebau GmbH. Their use in this project is purely nominative to describe compatibility with NGB (NETZSCH binary) file formats produced by NETZSCH instruments. This project is unaffiliated with, not endorsed by, and not approved by NETZSCH-Gerätebau GmbH.
11
+
12
+ No proprietary NETZSCH code, firmware, documentation text, or logos are included in this repository. If you are a representative of NETZSCH and have concerns about the way trademarks are referenced here, please open an issue in the repository or contact the author.
13
+
14
+ Attribution
15
+ -----------
16
+ Users of this project should not imply endorsement by NETZSCH when publishing derived works or scientific results.
17
+
18
+ For official NETZSCH software and support, please consult the manufacturer's website.