pnpq 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 (68) hide show
  1. pnpq-0.1.0/.editorconfig +24 -0
  2. pnpq-0.1.0/.gitattributes +2 -0
  3. pnpq-0.1.0/.github/workflows/check.yml +34 -0
  4. pnpq-0.1.0/.github/workflows/publish.yml +52 -0
  5. pnpq-0.1.0/.github/workflows/publish_sphinx.yml +54 -0
  6. pnpq-0.1.0/.gitignore +333 -0
  7. pnpq-0.1.0/.python-version +1 -0
  8. pnpq-0.1.0/.vscode/extensions.json +9 -0
  9. pnpq-0.1.0/.vscode/launch.json +16 -0
  10. pnpq-0.1.0/.vscode/settings.json +11 -0
  11. pnpq-0.1.0/CITATION.cff +28 -0
  12. pnpq-0.1.0/CODE_OF_CONDUCT.md +3 -0
  13. pnpq-0.1.0/CONTRIBUTING.md +51 -0
  14. pnpq-0.1.0/LICENSE.md +31 -0
  15. pnpq-0.1.0/PKG-INFO +89 -0
  16. pnpq-0.1.0/README.md +55 -0
  17. pnpq-0.1.0/bin/check.bash +74 -0
  18. pnpq-0.1.0/bin/install-dependencies.bash +35 -0
  19. pnpq-0.1.0/bin/release.bash +133 -0
  20. pnpq-0.1.0/example.py +32 -0
  21. pnpq-0.1.0/hardware_tests/__init__.py +0 -0
  22. pnpq-0.1.0/hardware_tests/conftest.py +35 -0
  23. pnpq-0.1.0/hardware_tests/test_optical_switch_osw1310e.py +34 -0
  24. pnpq-0.1.0/hardware_tests/test_polarization_controller_thorlabs_mpc.py +190 -0
  25. pnpq-0.1.0/hardware_tests/test_thorlabs_k10cr1.py +125 -0
  26. pnpq-0.1.0/hardware_tests/test_thorlabs_kbd101.py +27 -0
  27. pnpq-0.1.0/pyproject.toml +94 -0
  28. pnpq-0.1.0/sphinx/source/_static/.keep +0 -0
  29. pnpq-0.1.0/sphinx/source/_templates/.keep +0 -0
  30. pnpq-0.1.0/sphinx/source/conf.py +39 -0
  31. pnpq-0.1.0/sphinx/source/getting-started.rst +57 -0
  32. pnpq-0.1.0/sphinx/source/index.rst +44 -0
  33. pnpq-0.1.0/src/pnpq/__init__.py +1 -0
  34. pnpq-0.1.0/src/pnpq/apt/__init__.py +0 -0
  35. pnpq-0.1.0/src/pnpq/apt/connection.py +582 -0
  36. pnpq-0.1.0/src/pnpq/apt/protocol.py +1534 -0
  37. pnpq-0.1.0/src/pnpq/devices/__init__.py +0 -0
  38. pnpq-0.1.0/src/pnpq/devices/odl_ozoptics_650ml.py +222 -0
  39. pnpq-0.1.0/src/pnpq/devices/odl_thorlabs_kbd101.py +641 -0
  40. pnpq-0.1.0/src/pnpq/devices/odl_thorlabs_kbd101_stub.py +200 -0
  41. pnpq-0.1.0/src/pnpq/devices/polarization_controller_thorlabs_mpc.py +432 -0
  42. pnpq-0.1.0/src/pnpq/devices/polarization_controller_thorlabs_mpc_stub.py +168 -0
  43. pnpq-0.1.0/src/pnpq/devices/switch_thorlabs_osw_e.py +204 -0
  44. pnpq-0.1.0/src/pnpq/devices/switch_thorlabs_osw_e_stub.py +49 -0
  45. pnpq-0.1.0/src/pnpq/devices/utils.py +57 -0
  46. pnpq-0.1.0/src/pnpq/devices/waveplate_thorlabs_k10cr1.py +621 -0
  47. pnpq-0.1.0/src/pnpq/devices/waveplate_thorlabs_k10cr1_stub.py +194 -0
  48. pnpq-0.1.0/src/pnpq/errors.py +65 -0
  49. pnpq-0.1.0/src/pnpq/events.py +28 -0
  50. pnpq-0.1.0/src/pnpq/py.typed +0 -0
  51. pnpq-0.1.0/src/pnpq/stub_util.py +43 -0
  52. pnpq-0.1.0/src/pnpq/units.py +338 -0
  53. pnpq-0.1.0/tests/__init__.py +0 -0
  54. pnpq-0.1.0/tests/apt/__init__.py +0 -0
  55. pnpq-0.1.0/tests/apt/test_protocol.py +1017 -0
  56. pnpq-0.1.0/tests/conftest.py +35 -0
  57. pnpq-0.1.0/tests/logs.py +48 -0
  58. pnpq-0.1.0/tests/test_devices_utils.py +9 -0
  59. pnpq-0.1.0/tests/test_odl_ozoptics_650ml.py +8 -0
  60. pnpq-0.1.0/tests/test_pint_units.py +348 -0
  61. pnpq-0.1.0/tests/test_polarization_controller_thorlabs_mpc.py +251 -0
  62. pnpq-0.1.0/tests/test_polarization_controller_thorlabs_mpc_stub.py +236 -0
  63. pnpq-0.1.0/tests/test_switch_thorlabs_osw_e.py +9 -0
  64. pnpq-0.1.0/tests/test_switch_thorlabs_osw_e_stub.py +32 -0
  65. pnpq-0.1.0/tests/test_thorlabs_k10cr1_stub.py +240 -0
  66. pnpq-0.1.0/tests/test_thorlabs_kbd101_stub.py +236 -0
  67. pnpq-0.1.0/tests/test_waveplate_thorlabs_k10cr1.py +425 -0
  68. pnpq-0.1.0/uv.lock +818 -0
@@ -0,0 +1,24 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+ charset = utf-8
7
+ trim_trailing_whitespace = true
8
+ indent_style = space
9
+ indent_size = 2
10
+
11
+ [[shell]]
12
+ simplify = true
13
+
14
+ [*.py]
15
+ indent_size = 4
16
+
17
+ [*.rs]
18
+ indent_size = 4
19
+
20
+ [*.toml]
21
+ indent_size = 4
22
+
23
+ [Makefile]
24
+ indent_style = tab
@@ -0,0 +1,2 @@
1
+ # Disable autocrlf for all files in this repository
2
+ * -text
@@ -0,0 +1,34 @@
1
+ # Automatically run semantic checks, linters, and unit tests
2
+
3
+ name: Code Checks
4
+
5
+ on:
6
+ pull_request:
7
+ types: [opened, reopened, synchronize]
8
+
9
+ workflow_call:
10
+
11
+ jobs:
12
+ check-codes:
13
+ runs-on: ubuntu-24.04
14
+
15
+ steps:
16
+ - name: Checkout repository
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Install uv and enable caching
20
+ uses: astral-sh/setup-uv@v6
21
+ with:
22
+ enable-cache: true
23
+ version: "0.8.11"
24
+
25
+ - name: Set up Python with uv
26
+ run: uv python install
27
+
28
+ - name: Install other dependencies
29
+ run: |
30
+ ./bin/install-dependencies.bash
31
+
32
+ - name: Run check script
33
+ run: |
34
+ ./bin/check.bash
@@ -0,0 +1,52 @@
1
+ # Automatically prepare, build, and publish the package to PyPI
2
+
3
+ name: Publish PnPQ to PyPI
4
+
5
+ on:
6
+ push:
7
+ tags:
8
+ - 'v[0-9]+.[0-9]+.[0-9]+'
9
+
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ run-checks:
14
+ uses: ./.github/workflows/check.yml
15
+
16
+ draft-release:
17
+ runs-on: ubuntu-24.04
18
+ permissions:
19
+ contents: write
20
+
21
+ steps:
22
+ - name: Create GitHub Release (draft)
23
+ env:
24
+ GH_TOKEN: ${{ github.token }}
25
+ run: |
26
+ gh release create --draft --repo "${{ github.repository }}" "${{ github.ref_name }}"
27
+
28
+ publish-package:
29
+ needs: [run-checks, draft-release]
30
+ environment: pypi
31
+ runs-on: ubuntu-24.04
32
+ permissions:
33
+ id-token: write
34
+
35
+ steps:
36
+ - name: Checkout repository
37
+ uses: actions/checkout@v4
38
+
39
+ - name: Install uv and enable caching
40
+ uses: astral-sh/setup-uv@v6
41
+ with:
42
+ enable-cache: true
43
+ version: "0.8.11"
44
+
45
+ - name: Set up Python with uv
46
+ run: uv python install
47
+
48
+ - name: Build package
49
+ run: uv build
50
+
51
+ - name: Publish package to PyPI
52
+ run: uv publish
@@ -0,0 +1,54 @@
1
+ # Automatically publish documentation to GitHub Pages
2
+
3
+ name: Publish Sphinx Documentation
4
+
5
+ on:
6
+ push:
7
+ branches:
8
+ - main
9
+
10
+ jobs:
11
+ build-documentation:
12
+ runs-on: ubuntu-24.04
13
+
14
+ steps:
15
+ - name: Checkout repository
16
+ uses: actions/checkout@v5
17
+
18
+ - name: Install uv and enable caching
19
+ uses: astral-sh/setup-uv@v6
20
+ with:
21
+ enable-cache: true
22
+ version: "0.8.11"
23
+
24
+ - name: Set up Python with uv and sync dependencies
25
+ run: |
26
+ uv python install
27
+ uv sync
28
+
29
+ - name: Activate environment and build documentation
30
+ run: |
31
+ source .venv/bin/activate
32
+ sphinx-build -M html sphinx/source/ sphinx/build/ --fail-on-warning --fresh-env --write-all
33
+
34
+ - name: Upload documentation files as artifact
35
+ uses: actions/upload-pages-artifact@v3
36
+ with:
37
+ path: sphinx/build/html
38
+
39
+ deploy-documentation:
40
+ needs: build-documentation
41
+
42
+ permissions:
43
+ pages: write
44
+ id-token: write
45
+
46
+ environment:
47
+ name: github-pages
48
+ url: ${{ steps.deployment.outputs.page_url }}
49
+
50
+ runs-on: ubuntu-latest
51
+ steps:
52
+ - name: Deploy to GitHub Pages
53
+ id: deployment
54
+ uses: actions/deploy-pages@v4
pnpq-0.1.0/.gitignore ADDED
@@ -0,0 +1,333 @@
1
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
2
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ build/
15
+ develop-eggs/
16
+ dist/
17
+ downloads/
18
+ eggs/
19
+ .eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ share/python-wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+ MANIFEST
31
+
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ htmlcov/
44
+ .tox/
45
+ .nox/
46
+ .coverage
47
+ .coverage.*
48
+ .cache
49
+ nosetests.xml
50
+ coverage.xml
51
+ *.cover
52
+ *.py,cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+ .ruff_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
+ sphinx/build
78
+
79
+ # API documents are auto-generated
80
+ sphinx/source/api
81
+
82
+ # PyBuilder
83
+ .pybuilder/
84
+ target/
85
+
86
+ # Jupyter Notebook
87
+ .ipynb_checkpoints
88
+
89
+ # IPython
90
+ profile_default/
91
+ ipython_config.py
92
+
93
+ # pyenv
94
+ # For a library or package, you might want to ignore these files since the code is
95
+ # intended to run in multiple environments; otherwise, check them in:
96
+ # .python-version
97
+
98
+ # pipenv
99
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
100
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
101
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
102
+ # install all needed dependencies.
103
+ #Pipfile.lock
104
+
105
+ # poetry
106
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
107
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
108
+ # commonly ignored for libraries.
109
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
110
+ #poetry.lock
111
+
112
+ # pdm
113
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
114
+ #pdm.lock
115
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
116
+ # in version control.
117
+ # https://pdm.fming.dev/#use-with-ide
118
+ .pdm.toml
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyCharm
164
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
167
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
168
+ #.idea/
169
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
170
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/VisualStudioCode.gitignore
171
+
172
+ .vscode/*
173
+ !.vscode/settings.json
174
+ !.vscode/tasks.json
175
+ !.vscode/launch.json
176
+ !.vscode/extensions.json
177
+ !.vscode/*.code-snippets
178
+
179
+ # Local History for Visual Studio Code
180
+ .history/
181
+
182
+ # Built Visual Studio Code Extensions
183
+ *.vsix
184
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
185
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/macOS.gitignore
186
+
187
+ # General
188
+ .DS_Store
189
+ .AppleDouble
190
+ .LSOverride
191
+
192
+ # Icon must end with two \r
193
+ Icon?
194
+
195
+
196
+ # Thumbnails
197
+ ._*
198
+
199
+ # Files that might appear in the root of a volume
200
+ .DocumentRevisions-V100
201
+ .fseventsd
202
+ .Spotlight-V100
203
+ .TemporaryItems
204
+ .Trashes
205
+ .VolumeIcon.icns
206
+ .com.apple.timemachine.donotpresent
207
+
208
+ # Directories potentially created on remote AFP share
209
+ .AppleDB
210
+ .AppleDesktop
211
+ Network Trash Folder
212
+ Temporary Items
213
+ .apdisk
214
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
215
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Windows.gitignore
216
+
217
+ # Windows thumbnail cache files
218
+ Thumbs.db
219
+ Thumbs.db:encryptable
220
+ ehthumbs.db
221
+ ehthumbs_vista.db
222
+
223
+ # Dump file
224
+ *.stackdump
225
+
226
+ # Folder config file
227
+ [Dd]esktop.ini
228
+
229
+ # Recycle Bin used on file shares
230
+ $RECYCLE.BIN/
231
+
232
+ # Windows Installer files
233
+ *.cab
234
+ *.msi
235
+ *.msix
236
+ *.msm
237
+ *.msp
238
+
239
+ # Windows shortcuts
240
+ *.lnk
241
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
242
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Linux.gitignore
243
+
244
+ *~
245
+
246
+ # temporary files which can be created if a process still has a handle open of a deleted file
247
+ .fuse_hidden*
248
+
249
+ # KDE directory preferences
250
+ .directory
251
+
252
+ # Linux trash folder which might appear on any partition or disk
253
+ .Trash-*
254
+
255
+ # .nfs files are created when an open file is removed but is still being accessed
256
+ .nfs*
257
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
258
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Emacs.gitignore
259
+
260
+ # -*- mode: gitignore; -*-
261
+ *~
262
+ \#*\#
263
+ /.emacs.desktop
264
+ /.emacs.desktop.lock
265
+ *.elc
266
+ auto-save-list
267
+ tramp
268
+ .\#*
269
+
270
+ # Org-mode
271
+ .org-id-locations
272
+ *_archive
273
+
274
+ # flymake-mode
275
+ *_flymake.*
276
+
277
+ # eshell files
278
+ /eshell/history
279
+ /eshell/lastdir
280
+
281
+ # elpa packages
282
+ /elpa/
283
+
284
+ # reftex files
285
+ *.rel
286
+
287
+ # AUCTeX auto folder
288
+ /auto/
289
+
290
+ # cask packages
291
+ .cask/
292
+ dist/
293
+
294
+ # Flycheck
295
+ flycheck_*.el
296
+
297
+ # server auth directory
298
+ /server/
299
+
300
+ # projectiles files
301
+ .projectile
302
+
303
+ # directory configuration
304
+ .dir-locals.el
305
+
306
+ # network security
307
+ /network-security.data
308
+
309
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
310
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Vim.gitignore
311
+
312
+ # Swap
313
+ [._]*.s[a-v][a-z]
314
+ !*.svg # comment out if you don't need vector files
315
+ [._]*.sw[a-p]
316
+ [._]s[a-rt-v][a-z]
317
+ [._]ss[a-gi-z]
318
+ [._]sw[a-p]
319
+
320
+ # Session
321
+ Session.vim
322
+ Sessionx.vim
323
+
324
+ # Temporary
325
+ .netrwhist
326
+ *~
327
+ # Auto-generated tag files
328
+ tags
329
+ # Persistent undo
330
+ [._]*.un~
331
+
332
+ # Direnv
333
+ .envrc
@@ -0,0 +1 @@
1
+ 3.13.5
@@ -0,0 +1,9 @@
1
+ {
2
+ "recommendations": [
3
+ "ms-python.black-formatter",
4
+ "editorconfig.editorconfig",
5
+ "ms-python.vscode-pylance",
6
+ "ms-python.python",
7
+ "littlefoxteam.vscode-python-test-adapter"
8
+ ]
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "name": "pnpq example",
9
+ "type": "python",
10
+ "request": "launch",
11
+ "program": "${workspaceFolder}/example.py",
12
+ "console": "integratedTerminal",
13
+ "justMyCode": true
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "python.testing.pytestArgs": [
3
+ "src"
4
+ ],
5
+ "python.testing.unittestEnabled": false,
6
+ "python.testing.pytestEnabled": true,
7
+ "python.analysis.typeCheckingMode": "basic",
8
+ "[python]": {
9
+ "editor.defaultFormatter": "ms-python.black-formatter",
10
+ }
11
+ }
@@ -0,0 +1,28 @@
1
+ cff-version: 1.2.0
2
+ title: "PnPQ"
3
+ license: "BSD-3-Clause"
4
+ type: software
5
+ abstract: "Python library for laboratory devices often used in quantum networking and computing testbeds."
6
+ message: "If our software significantly contributed to your research, we ask that you cite it either with the concept DOI in this file, which represents all versions, or with the version-specific DOI matching the version you used."
7
+ authors:
8
+ - given-names: Amin
9
+ family-names: Taherkhani
10
+ orcid: "https://orcid.org/0000-0003-3044-6487"
11
+ - given-names: Andrew
12
+ family-names: Todd
13
+ orcid: "https://orcid.org/0009-0008-5423-3500"
14
+ - given-names: Lars
15
+ family-names: Matsumiya
16
+ orcid: "https://orcid.org/0009-0007-6640-7953"
17
+ - given-names: Tom
18
+ family-names: Shen
19
+ orcid: "https://orcid.org/0009-0000-1747-1050"
20
+ identifiers:
21
+ - type: doi
22
+ value: 10.5281/zenodo.16886214
23
+ keywords:
24
+ - optics
25
+ - ozoptics
26
+ - physics
27
+ - quantum
28
+ - thorlabs
@@ -0,0 +1,3 @@
1
+ # Code of Conduct
2
+
3
+ Please see the project code of conduct at [`CODE_OF_CONDUCT.md`](https://github.com/moonshot-nagayama-pj/public-documents/blob/main/CODE_OF_CONDUCT.md).
@@ -0,0 +1,51 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in contributing to our project. To make it as easy as possible to engage with our work, please read this short guide.
4
+
5
+ ## Preparing your environment
6
+
7
+ Please see [`development-environment.md`](https://github.com/moonshot-nagayama-pj/public-documents/blob/main/engineering/development-environment.md) for more information.
8
+
9
+ ## Development
10
+
11
+ We run unit tests on all pull requests using simulated hardware. Use `pytest` to run these unit tests.
12
+
13
+ For ad-hoc testing of real hardware, use `pytest hardware_tests`.
14
+
15
+ Before making a pull request, please be sure to run the script `bin/check.bash`. This will run our static analysis checks and unit tests, all of which must pass before a pull request will be accepted.
16
+
17
+ Ensure that pull requests have meaningful titles. The title will be used in the changelog.
18
+
19
+ ## Discussing and proposing changes
20
+
21
+ To make a trivial change, or a change that has already been agreed to in discussions outside of GitHub, please create a pull request.
22
+
23
+ If a change might need more discussion, please create a GitHub issue in this project before working on a pull request.
24
+
25
+ ## Licensing and attribution
26
+
27
+ By contributing your work to this repository, you agree to license it in perpetuity under the terms described in [`LICENSE.md`](LICENSE.md). You are also asserting that the work is your own, and that you have the right to license it to us.
28
+
29
+ If you wish to integrate our work into your own projects, please follow the attribution guidelines in `LICENSE.md`.
30
+
31
+ ## Code of conduct
32
+
33
+ In order to provide a safe and welcoming environment for all people to contribute to our project, we have adopted a code of conduct, which you can read in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
34
+
35
+ ## Versioning and backward compatibility
36
+
37
+ We use Semantic Versioning 2.0.0 for all of our projects.
38
+
39
+ ## Making a release
40
+
41
+ Follow the steps below in order to create and publish a release for PnPQ
42
+
43
+ 1. Decide to create a release.
44
+ 1. Run `./bin/release.bash` script and wait for it to finish.
45
+ 1. Wait for the release check script in GitHub Actions to finish.
46
+ 1. Edit and publish the draft in [Releases](https://github.com/moonshot-nagayama-pj/PnPQ/releases) (the generate release note function is sufficient for most cases).
47
+ 1. Approve the publish action.
48
+ 1. Create a PR to merge this branch (the script should open a new PR automatically).
49
+ 1. Wait for approval to merge the PR, and finish!
50
+
51
+ The release script is based on steps from [Pallets release procedure](https://palletsprojects.com/contributing/release).
pnpq-0.1.0/LICENSE.md ADDED
@@ -0,0 +1,31 @@
1
+ # Licenses
2
+
3
+ ## Source code
4
+
5
+ Source code in this repository is available under [the 3-Clause BSD License](https://opensource.org/license/BSD-3-clause).
6
+
7
+ > Copyright 2023-present https://github.com/moonshot-nagayama-pj/PnPQ contributors
8
+ >
9
+ > Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
10
+ >
11
+ > 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
12
+ >
13
+ > 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
14
+ >
15
+ > 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
16
+ >
17
+ > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18
+
19
+ ## Non-code content
20
+
21
+ Non-code content in this repository is available under the [Creative Commons Attribution 4.0 International license](https://creativecommons.org/licenses/by/4.0/).
22
+
23
+ ## Attribution
24
+
25
+ Non-trivial use of any content from this repository requires proper attribution to the authors. For non-source code content, the easiest way to do this is to link back to our repository in a way that makes sense in your comment. For example:
26
+
27
+ > This document contains work from the PnPQ documentation, available under the [Creative Commons Attribution 4.0 International license](https://creativecommons.org/licenses/by/4.0/) and [accessible from their GitHub repository](https://github.com/moonshot-nagayama-pj/PnPQ).
28
+
29
+ For source code, please follow the instructions in the license.
30
+
31
+ If this guidance is insufficient or unclear, please open a GitHub issue to ask for help.