Compare commits
	
		
			4 Commits
		
	
	
		
			main
			...
			build123d-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d4217405e1 | |||
| 0dcd1cb5ff | |||
| e63a5da6a2 | |||
| 82d914c30c | 
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,3 +1,8 @@
 | 
			
		||||
build/
 | 
			
		||||
venv/
 | 
			
		||||
*.egg-info/
 | 
			
		||||
.tox/
 | 
			
		||||
 | 
			
		||||
*.pyc
 | 
			
		||||
*.sw*
 | 
			
		||||
.coverage
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
[build-system]
 | 
			
		||||
requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2"]
 | 
			
		||||
build-backend = "setuptools.build_meta"
 | 
			
		||||
 | 
			
		||||
[project]
 | 
			
		||||
name = "buildable-stick-system"
 | 
			
		||||
description = "Files for 3D printing an arcade stick."
 | 
			
		||||
readme = "README.md"
 | 
			
		||||
license = {text = "GPL-3.0-or-later"}
 | 
			
		||||
authors = [
 | 
			
		||||
    {name = "Brian S. Stephan", email = "bss@incorporeal.org"},
 | 
			
		||||
]
 | 
			
		||||
requires-python = "<3.12,>=3.9"
 | 
			
		||||
dependencies = ["build123d"]
 | 
			
		||||
dynamic = ["version"]
 | 
			
		||||
classifiers = [
 | 
			
		||||
    # TODO
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[project.urls]
 | 
			
		||||
# TODO
 | 
			
		||||
 | 
			
		||||
[project.optional-dependencies]
 | 
			
		||||
dev = ["bandit", "flake8", "flake8-blind-except", "flake8-builtins", "flake8-docstrings",
 | 
			
		||||
       "flake8-executable", "flake8-fixme", "flake8-isort", "flake8-logging-format", "flake8-mutable",
 | 
			
		||||
       "flake8-pyproject", "mypy", "pip-tools", "pytest", "pytest-asyncio", "pytest-cov", "reuse",
 | 
			
		||||
       "setuptools-scm", "tox", "twine"]
 | 
			
		||||
gui = ["cadquery>=2.2", "CQ-Editor@git+https://github.com/jdegenstein/jmwright-CQ-Editor"]
 | 
			
		||||
 | 
			
		||||
[project.scripts]
 | 
			
		||||
# TODO
 | 
			
		||||
 | 
			
		||||
[tool.flake8]
 | 
			
		||||
enable-extensions = "G,M"
 | 
			
		||||
exclude = [".tox/", "venv/", "_version.py", "tests/test-files/"]
 | 
			
		||||
extend-ignore = "T101"
 | 
			
		||||
max-complexity = 10
 | 
			
		||||
max-line-length = 120
 | 
			
		||||
 | 
			
		||||
[tool.isort]
 | 
			
		||||
line_length = 120
 | 
			
		||||
 | 
			
		||||
[tool.mypy]
 | 
			
		||||
ignore_missing_imports = true
 | 
			
		||||
 | 
			
		||||
[tool.pytest]
 | 
			
		||||
python_files = ["*_tests.py", "tests.py", "test_*.py"]
 | 
			
		||||
 | 
			
		||||
[tool.setuptools]
 | 
			
		||||
# TODO
 | 
			
		||||
 | 
			
		||||
[tool.setuptools_scm]
 | 
			
		||||
# TODO
 | 
			
		||||
							
								
								
									
										644
									
								
								requirements/requirements-dev-and-gui.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										644
									
								
								requirements/requirements-dev-and-gui.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,644 @@
 | 
			
		||||
#
 | 
			
		||||
# This file is autogenerated by pip-compile with Python 3.11
 | 
			
		||||
# by the following command:
 | 
			
		||||
#
 | 
			
		||||
#    pip-compile --extra=dev --extra=gui --output-file=requirements/requirements-dev-and-gui.txt
 | 
			
		||||
#
 | 
			
		||||
alabaster==0.7.16
 | 
			
		||||
    # via sphinx
 | 
			
		||||
anytree==2.12.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
arrow==1.3.0
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
astroid==3.2.2
 | 
			
		||||
    # via pylint
 | 
			
		||||
asttokens==2.4.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
atomicwrites==1.4.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
attrs==23.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   referencing
 | 
			
		||||
autopep8==2.0.4
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
babel==2.15.0
 | 
			
		||||
    # via sphinx
 | 
			
		||||
backports-tarfile==1.2.0
 | 
			
		||||
    # via jaraco-context
 | 
			
		||||
bandit==1.7.9
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
beautifulsoup4==4.12.3
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
binaryornot==0.4.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   reuse
 | 
			
		||||
black==24.4.2
 | 
			
		||||
    # via python-lsp-black
 | 
			
		||||
bleach==6.1.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
boolean-py==4.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   license-expression
 | 
			
		||||
    #   reuse
 | 
			
		||||
build==1.2.1
 | 
			
		||||
    # via pip-tools
 | 
			
		||||
build123d==0.4.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cachetools==5.3.3
 | 
			
		||||
    # via tox
 | 
			
		||||
cadquery==2.4.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cadquery-ocp==7.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cadquery
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
casadi==3.6.5
 | 
			
		||||
    # via cadquery
 | 
			
		||||
certifi==2024.6.2
 | 
			
		||||
    # via requests
 | 
			
		||||
cffi==1.16.0
 | 
			
		||||
    # via cryptography
 | 
			
		||||
chardet==5.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   binaryornot
 | 
			
		||||
    #   python-debian
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   tox
 | 
			
		||||
charset-normalizer==3.3.2
 | 
			
		||||
    # via requests
 | 
			
		||||
click==8.1.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   pip-tools
 | 
			
		||||
cloudpickle==3.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
colorama==0.4.6
 | 
			
		||||
    # via tox
 | 
			
		||||
comm==0.2.2
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
cookiecutter==2.6.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
coverage[toml]==7.5.4
 | 
			
		||||
    # via pytest-cov
 | 
			
		||||
cq-editor @ git+https://github.com/jdegenstein/jmwright-CQ-Editor
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cryptography==42.0.8
 | 
			
		||||
    # via secretstorage
 | 
			
		||||
debugpy==1.8.2
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
decorator==5.1.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
defusedxml==0.7.1
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
diff-match-patch==20230430
 | 
			
		||||
    # via
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   three-merge
 | 
			
		||||
dill==0.3.8
 | 
			
		||||
    # via pylint
 | 
			
		||||
distlib==0.3.8
 | 
			
		||||
    # via virtualenv
 | 
			
		||||
docstring-to-markdown==0.15
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
docutils==0.21.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   readme-renderer
 | 
			
		||||
    #   sphinx
 | 
			
		||||
executing==2.0.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
ezdxf==1.3.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cadquery
 | 
			
		||||
fastjsonschema==2.20.0
 | 
			
		||||
    # via nbformat
 | 
			
		||||
filelock==3.15.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   tox
 | 
			
		||||
    #   virtualenv
 | 
			
		||||
flake8==7.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   buildable-stick-system (pyproject.toml)
 | 
			
		||||
    #   flake8-builtins
 | 
			
		||||
    #   flake8-docstrings
 | 
			
		||||
    #   flake8-executable
 | 
			
		||||
    #   flake8-isort
 | 
			
		||||
    #   flake8-mutable
 | 
			
		||||
    #   flake8-pyproject
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
flake8-blind-except==0.2.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-builtins==2.5.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-docstrings==1.7.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-executable==2.1.3
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-fixme==1.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-isort==6.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-logging-format==2024.24.12
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-mutable==1.2.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-pyproject==1.2.3
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
fonttools==4.53.0
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
idna==3.7
 | 
			
		||||
    # via requests
 | 
			
		||||
imagesize==1.4.1
 | 
			
		||||
    # via sphinx
 | 
			
		||||
importlib-metadata==8.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   twine
 | 
			
		||||
    #   yapf
 | 
			
		||||
inflection==0.5.1
 | 
			
		||||
    # via qstylizer
 | 
			
		||||
iniconfig==2.0.0
 | 
			
		||||
    # via pytest
 | 
			
		||||
intervaltree==3.1.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
ipykernel==6.29.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
ipython==8.26.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
isort==5.13.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8-isort
 | 
			
		||||
    #   pylint
 | 
			
		||||
jaraco-classes==3.4.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-context==5.3.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-functools==4.0.1
 | 
			
		||||
    # via keyring
 | 
			
		||||
jedi==0.19.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
    #   spyder
 | 
			
		||||
jeepney==0.8.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   secretstorage
 | 
			
		||||
jellyfish==1.0.4
 | 
			
		||||
    # via spyder
 | 
			
		||||
jinja2==3.1.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   reuse
 | 
			
		||||
    #   sphinx
 | 
			
		||||
jsonschema==4.22.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   spyder
 | 
			
		||||
jsonschema-specifications==2023.12.1
 | 
			
		||||
    # via jsonschema
 | 
			
		||||
jupyter-client==8.6.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
jupyter-core==5.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
jupyterlab-pygments==0.3.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
keyring==25.2.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   twine
 | 
			
		||||
license-expression==30.3.0
 | 
			
		||||
    # via reuse
 | 
			
		||||
logbook==1.7.0.post0
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
markdown-it-py==3.0.0
 | 
			
		||||
    # via rich
 | 
			
		||||
markupsafe==2.1.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   jinja2
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
matplotlib-inline==0.1.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   ipython
 | 
			
		||||
mccabe==0.7.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   pylint
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
mdurl==0.1.2
 | 
			
		||||
    # via markdown-it-py
 | 
			
		||||
mistune==3.0.2
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
more-itertools==10.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   jaraco-classes
 | 
			
		||||
    #   jaraco-functools
 | 
			
		||||
multimethod==1.9.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
mypy==1.10.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
mypy-extensions==1.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   mypy
 | 
			
		||||
nbclient==0.10.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
nbconvert==7.16.4
 | 
			
		||||
    # via spyder
 | 
			
		||||
nbformat==5.10.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
nest-asyncio==1.6.0
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
nh3==0.2.17
 | 
			
		||||
    # via readme-renderer
 | 
			
		||||
nlopt==2.7.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
nptyping==2.0.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
numpy==1.26.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   casadi
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   nlopt
 | 
			
		||||
    #   nptyping
 | 
			
		||||
    #   numpy-stl
 | 
			
		||||
    #   pyqtgraph
 | 
			
		||||
    #   scipy
 | 
			
		||||
    #   svgpathtools
 | 
			
		||||
numpy-stl==3.1.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
numpydoc==1.7.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
ocpsvg==0.2.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
packaging==24.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   build
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   pyproject-api
 | 
			
		||||
    #   pytest
 | 
			
		||||
    #   pytoolconfig
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   qtpy
 | 
			
		||||
    #   setuptools-scm
 | 
			
		||||
    #   sphinx
 | 
			
		||||
    #   tox
 | 
			
		||||
pandocfilters==1.5.1
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
parso==0.8.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   jedi
 | 
			
		||||
    #   spyder
 | 
			
		||||
path==16.14.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   cadquery
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
pathspec==0.12.1
 | 
			
		||||
    # via black
 | 
			
		||||
pbr==6.0.0
 | 
			
		||||
    # via stevedore
 | 
			
		||||
pexpect==4.9.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   spyder
 | 
			
		||||
pickleshare==0.7.5
 | 
			
		||||
    # via spyder
 | 
			
		||||
pip-tools==7.4.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
pkginfo==1.10.0
 | 
			
		||||
    # via twine
 | 
			
		||||
platformdirs==4.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   jupyter-core
 | 
			
		||||
    #   pylint
 | 
			
		||||
    #   pytoolconfig
 | 
			
		||||
    #   tox
 | 
			
		||||
    #   virtualenv
 | 
			
		||||
    #   yapf
 | 
			
		||||
pluggy==1.5.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pytest
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
    #   tox
 | 
			
		||||
prompt-toolkit==3.0.47
 | 
			
		||||
    # via ipython
 | 
			
		||||
psutil==6.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   spyder
 | 
			
		||||
ptyprocess==0.7.0
 | 
			
		||||
    # via pexpect
 | 
			
		||||
pure-eval==0.2.2
 | 
			
		||||
    # via stack-data
 | 
			
		||||
py-lib3mf==2.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
pycodestyle==2.11.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   autopep8
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
pycparser==2.22
 | 
			
		||||
    # via cffi
 | 
			
		||||
pydocstyle==6.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8-docstrings
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
pyflakes==3.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
pygments==2.18.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   readme-renderer
 | 
			
		||||
    #   rich
 | 
			
		||||
    #   sphinx
 | 
			
		||||
    #   spyder
 | 
			
		||||
pylint==3.2.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
    #   spyder
 | 
			
		||||
pylint-venv==3.0.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyls-spyder==0.4.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyparsing==3.1.2
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
pyproject-api==1.7.1
 | 
			
		||||
    # via tox
 | 
			
		||||
pyproject-hooks==1.1.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   build
 | 
			
		||||
    #   pip-tools
 | 
			
		||||
pyqt5==5.15.10
 | 
			
		||||
    # via
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   pyqtwebengine
 | 
			
		||||
    #   spyder
 | 
			
		||||
pyqt5-qt5==5.15.14
 | 
			
		||||
    # via pyqt5
 | 
			
		||||
pyqt5-sip==12.13.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pyqt5
 | 
			
		||||
    #   pyqtwebengine
 | 
			
		||||
pyqtgraph==0.13.7
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
pyqtwebengine==5.15.6
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyqtwebengine-qt5==5.15.14
 | 
			
		||||
    # via pyqtwebengine
 | 
			
		||||
pytest==8.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   buildable-stick-system (pyproject.toml)
 | 
			
		||||
    #   pytest-asyncio
 | 
			
		||||
    #   pytest-cov
 | 
			
		||||
pytest-asyncio==0.23.7
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
pytest-cov==5.0.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
python-dateutil==2.9.0.post0
 | 
			
		||||
    # via
 | 
			
		||||
    #   arrow
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
python-debian==0.1.49
 | 
			
		||||
    # via reuse
 | 
			
		||||
python-lsp-black==2.0.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
python-lsp-jsonrpc==1.1.2
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
python-lsp-server[all]==1.11.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pyls-spyder
 | 
			
		||||
    #   python-lsp-black
 | 
			
		||||
    #   spyder
 | 
			
		||||
python-slugify==8.0.4
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
python-utils==3.8.2
 | 
			
		||||
    # via numpy-stl
 | 
			
		||||
pytoolconfig[global]==1.3.1
 | 
			
		||||
    # via rope
 | 
			
		||||
pyxdg==0.28
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyyaml==6.0.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   bandit
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
pyzmq==26.0.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
qdarkstyle==3.2.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
qstylizer==0.2.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtawesome==1.3.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtconsole==5.5.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtpy==2.4.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   qdarkstyle
 | 
			
		||||
    #   qtawesome
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder
 | 
			
		||||
readme-renderer==43.0
 | 
			
		||||
    # via twine
 | 
			
		||||
referencing==0.35.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   jsonschema-specifications
 | 
			
		||||
requests==2.32.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   requests-toolbelt
 | 
			
		||||
    #   sphinx
 | 
			
		||||
    #   twine
 | 
			
		||||
requests-toolbelt==1.0.0
 | 
			
		||||
    # via twine
 | 
			
		||||
reuse==3.0.2
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
rfc3986==2.0.0
 | 
			
		||||
    # via twine
 | 
			
		||||
rich==13.7.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   bandit
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   twine
 | 
			
		||||
rope==1.13.0
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
rpds-py==0.18.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   referencing
 | 
			
		||||
rtree==1.2.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
scipy==1.14.0
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
secretstorage==3.3.3
 | 
			
		||||
    # via keyring
 | 
			
		||||
setuptools-scm==8.1.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
six==1.16.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   anytree
 | 
			
		||||
    #   asttokens
 | 
			
		||||
    #   bleach
 | 
			
		||||
    #   python-dateutil
 | 
			
		||||
snowballstemmer==2.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pydocstyle
 | 
			
		||||
    #   sphinx
 | 
			
		||||
sortedcontainers==2.4.0
 | 
			
		||||
    # via intervaltree
 | 
			
		||||
soupsieve==2.5
 | 
			
		||||
    # via beautifulsoup4
 | 
			
		||||
sphinx==7.3.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   numpydoc
 | 
			
		||||
    #   spyder
 | 
			
		||||
sphinxcontrib-applehelp==1.0.8
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-devhelp==1.0.6
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-htmlhelp==2.0.5
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-jsmath==1.0.1
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-qthelp==1.0.7
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-serializinghtml==1.1.10
 | 
			
		||||
    # via sphinx
 | 
			
		||||
spyder==5.5.5
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
spyder-kernels==2.5.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
stack-data==0.6.3
 | 
			
		||||
    # via ipython
 | 
			
		||||
stevedore==5.2.0
 | 
			
		||||
    # via bandit
 | 
			
		||||
svgelements==1.9.6
 | 
			
		||||
    # via ocpsvg
 | 
			
		||||
svgpathtools==1.6.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
svgwrite==1.4.3
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
tabulate==0.9.0
 | 
			
		||||
    # via numpydoc
 | 
			
		||||
text-unidecode==1.3
 | 
			
		||||
    # via python-slugify
 | 
			
		||||
textdistance==4.6.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
three-merge==0.1.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
tinycss2==1.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   qstylizer
 | 
			
		||||
tomli==2.0.1
 | 
			
		||||
    # via yapf
 | 
			
		||||
tomlkit==0.12.5
 | 
			
		||||
    # via pylint
 | 
			
		||||
tornado==6.4.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
tox==4.15.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
traitlets==5.14.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   comm
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   jupyter-core
 | 
			
		||||
    #   matplotlib-inline
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
trianglesolver==1.2
 | 
			
		||||
    # via build123d
 | 
			
		||||
twine==5.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
types-python-dateutil==2.9.0.20240316
 | 
			
		||||
    # via arrow
 | 
			
		||||
typing-extensions==4.12.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   mypy
 | 
			
		||||
    #   python-utils
 | 
			
		||||
typish==1.9.3
 | 
			
		||||
    # via cadquery
 | 
			
		||||
ujson==5.10.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   python-lsp-jsonrpc
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
urllib3==2.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   requests
 | 
			
		||||
    #   twine
 | 
			
		||||
virtualenv==20.26.3
 | 
			
		||||
    # via tox
 | 
			
		||||
watchdog==4.0.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
wcwidth==0.2.13
 | 
			
		||||
    # via prompt-toolkit
 | 
			
		||||
webencodings==0.5.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   bleach
 | 
			
		||||
    #   tinycss2
 | 
			
		||||
whatthepatch==1.0.5
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
wheel==0.43.0
 | 
			
		||||
    # via pip-tools
 | 
			
		||||
wurlitzer==3.1.1
 | 
			
		||||
    # via spyder-kernels
 | 
			
		||||
yapf==0.40.2
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
zipp==3.19.2
 | 
			
		||||
    # via importlib-metadata
 | 
			
		||||
 | 
			
		||||
# The following packages are considered to be unsafe in a requirements file:
 | 
			
		||||
# pip
 | 
			
		||||
# setuptools
 | 
			
		||||
							
								
								
									
										295
									
								
								requirements/requirements-dev.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										295
									
								
								requirements/requirements-dev.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,295 @@
 | 
			
		||||
#
 | 
			
		||||
# This file is autogenerated by pip-compile with Python 3.11
 | 
			
		||||
# by the following command:
 | 
			
		||||
#
 | 
			
		||||
#    pip-compile --extra=dev --output-file=requirements/requirements-dev.txt
 | 
			
		||||
#
 | 
			
		||||
anytree==2.12.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
asttokens==2.4.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
backports-tarfile==1.2.0
 | 
			
		||||
    # via jaraco-context
 | 
			
		||||
bandit==1.7.9
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
binaryornot==0.4.4
 | 
			
		||||
    # via reuse
 | 
			
		||||
boolean-py==4.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   license-expression
 | 
			
		||||
    #   reuse
 | 
			
		||||
build==1.2.1
 | 
			
		||||
    # via pip-tools
 | 
			
		||||
build123d==0.5.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cachetools==5.3.3
 | 
			
		||||
    # via tox
 | 
			
		||||
cadquery-ocp==7.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
certifi==2024.6.2
 | 
			
		||||
    # via requests
 | 
			
		||||
cffi==1.16.0
 | 
			
		||||
    # via cryptography
 | 
			
		||||
chardet==5.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   binaryornot
 | 
			
		||||
    #   python-debian
 | 
			
		||||
    #   tox
 | 
			
		||||
charset-normalizer==3.3.2
 | 
			
		||||
    # via requests
 | 
			
		||||
click==8.1.7
 | 
			
		||||
    # via pip-tools
 | 
			
		||||
colorama==0.4.6
 | 
			
		||||
    # via tox
 | 
			
		||||
coverage[toml]==7.5.4
 | 
			
		||||
    # via pytest-cov
 | 
			
		||||
cryptography==42.0.8
 | 
			
		||||
    # via secretstorage
 | 
			
		||||
decorator==5.1.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
distlib==0.3.8
 | 
			
		||||
    # via virtualenv
 | 
			
		||||
docutils==0.21.2
 | 
			
		||||
    # via readme-renderer
 | 
			
		||||
executing==2.0.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
ezdxf==1.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
filelock==3.15.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   tox
 | 
			
		||||
    #   virtualenv
 | 
			
		||||
flake8==7.1.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   buildable-stick-system (pyproject.toml)
 | 
			
		||||
    #   flake8-builtins
 | 
			
		||||
    #   flake8-docstrings
 | 
			
		||||
    #   flake8-executable
 | 
			
		||||
    #   flake8-isort
 | 
			
		||||
    #   flake8-mutable
 | 
			
		||||
    #   flake8-pyproject
 | 
			
		||||
flake8-blind-except==0.2.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-builtins==2.5.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-docstrings==1.7.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-executable==2.1.3
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-fixme==1.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-isort==6.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-logging-format==2024.24.12
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-mutable==1.2.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
flake8-pyproject==1.2.3
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
fonttools==4.53.0
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
idna==3.7
 | 
			
		||||
    # via requests
 | 
			
		||||
importlib-metadata==8.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   twine
 | 
			
		||||
iniconfig==2.0.0
 | 
			
		||||
    # via pytest
 | 
			
		||||
ipython==8.26.0
 | 
			
		||||
    # via build123d
 | 
			
		||||
isort==5.13.2
 | 
			
		||||
    # via flake8-isort
 | 
			
		||||
jaraco-classes==3.4.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-context==5.3.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-functools==4.0.1
 | 
			
		||||
    # via keyring
 | 
			
		||||
jedi==0.19.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
jeepney==0.8.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   secretstorage
 | 
			
		||||
jinja2==3.1.4
 | 
			
		||||
    # via reuse
 | 
			
		||||
keyring==25.2.1
 | 
			
		||||
    # via twine
 | 
			
		||||
license-expression==30.3.0
 | 
			
		||||
    # via reuse
 | 
			
		||||
markdown-it-py==3.0.0
 | 
			
		||||
    # via rich
 | 
			
		||||
markupsafe==2.1.5
 | 
			
		||||
    # via jinja2
 | 
			
		||||
matplotlib-inline==0.1.7
 | 
			
		||||
    # via ipython
 | 
			
		||||
mccabe==0.7.0
 | 
			
		||||
    # via flake8
 | 
			
		||||
mdurl==0.1.2
 | 
			
		||||
    # via markdown-it-py
 | 
			
		||||
more-itertools==10.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   jaraco-classes
 | 
			
		||||
    #   jaraco-functools
 | 
			
		||||
mypy==1.10.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
mypy-extensions==1.0.0
 | 
			
		||||
    # via mypy
 | 
			
		||||
nh3==0.2.17
 | 
			
		||||
    # via readme-renderer
 | 
			
		||||
numpy==1.26.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   numpy-stl
 | 
			
		||||
    #   scipy
 | 
			
		||||
    #   svgpathtools
 | 
			
		||||
numpy-stl==3.1.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
ocpsvg==0.2.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
packaging==24.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build
 | 
			
		||||
    #   pyproject-api
 | 
			
		||||
    #   pytest
 | 
			
		||||
    #   setuptools-scm
 | 
			
		||||
    #   tox
 | 
			
		||||
parso==0.8.4
 | 
			
		||||
    # via jedi
 | 
			
		||||
pbr==6.0.0
 | 
			
		||||
    # via stevedore
 | 
			
		||||
pexpect==4.9.0
 | 
			
		||||
    # via ipython
 | 
			
		||||
pip-tools==7.4.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
pkginfo==1.10.0
 | 
			
		||||
    # via twine
 | 
			
		||||
platformdirs==4.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   tox
 | 
			
		||||
    #   virtualenv
 | 
			
		||||
pluggy==1.5.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pytest
 | 
			
		||||
    #   tox
 | 
			
		||||
prompt-toolkit==3.0.47
 | 
			
		||||
    # via ipython
 | 
			
		||||
ptyprocess==0.7.0
 | 
			
		||||
    # via pexpect
 | 
			
		||||
pure-eval==0.2.2
 | 
			
		||||
    # via stack-data
 | 
			
		||||
py-lib3mf==2.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
pycodestyle==2.12.0
 | 
			
		||||
    # via flake8
 | 
			
		||||
pycparser==2.22
 | 
			
		||||
    # via cffi
 | 
			
		||||
pydocstyle==6.3.0
 | 
			
		||||
    # via flake8-docstrings
 | 
			
		||||
pyflakes==3.2.0
 | 
			
		||||
    # via flake8
 | 
			
		||||
pygments==2.18.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   readme-renderer
 | 
			
		||||
    #   rich
 | 
			
		||||
pyparsing==3.1.2
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
pyproject-api==1.7.1
 | 
			
		||||
    # via tox
 | 
			
		||||
pyproject-hooks==1.1.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   build
 | 
			
		||||
    #   pip-tools
 | 
			
		||||
pytest==8.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   buildable-stick-system (pyproject.toml)
 | 
			
		||||
    #   pytest-asyncio
 | 
			
		||||
    #   pytest-cov
 | 
			
		||||
pytest-asyncio==0.23.7
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
pytest-cov==5.0.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
python-debian==0.1.49
 | 
			
		||||
    # via reuse
 | 
			
		||||
python-utils==3.8.2
 | 
			
		||||
    # via numpy-stl
 | 
			
		||||
pyyaml==6.0.1
 | 
			
		||||
    # via bandit
 | 
			
		||||
readme-renderer==43.0
 | 
			
		||||
    # via twine
 | 
			
		||||
requests==2.32.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   requests-toolbelt
 | 
			
		||||
    #   twine
 | 
			
		||||
requests-toolbelt==1.0.0
 | 
			
		||||
    # via twine
 | 
			
		||||
reuse==3.0.2
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
rfc3986==2.0.0
 | 
			
		||||
    # via twine
 | 
			
		||||
rich==13.7.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   bandit
 | 
			
		||||
    #   twine
 | 
			
		||||
scipy==1.14.0
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
secretstorage==3.3.3
 | 
			
		||||
    # via keyring
 | 
			
		||||
setuptools-scm==8.1.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
six==1.16.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   anytree
 | 
			
		||||
    #   asttokens
 | 
			
		||||
snowballstemmer==2.2.0
 | 
			
		||||
    # via pydocstyle
 | 
			
		||||
stack-data==0.6.3
 | 
			
		||||
    # via ipython
 | 
			
		||||
stevedore==5.2.0
 | 
			
		||||
    # via bandit
 | 
			
		||||
svgelements==1.9.6
 | 
			
		||||
    # via ocpsvg
 | 
			
		||||
svgpathtools==1.6.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
svgwrite==1.4.3
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
tox==4.15.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
traitlets==5.14.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   matplotlib-inline
 | 
			
		||||
trianglesolver==1.2
 | 
			
		||||
    # via build123d
 | 
			
		||||
twine==5.1.1
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
typing-extensions==4.12.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   mypy
 | 
			
		||||
    #   python-utils
 | 
			
		||||
urllib3==2.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   requests
 | 
			
		||||
    #   twine
 | 
			
		||||
virtualenv==20.26.3
 | 
			
		||||
    # via tox
 | 
			
		||||
wcwidth==0.2.13
 | 
			
		||||
    # via prompt-toolkit
 | 
			
		||||
wheel==0.43.0
 | 
			
		||||
    # via pip-tools
 | 
			
		||||
zipp==3.19.2
 | 
			
		||||
    # via importlib-metadata
 | 
			
		||||
 | 
			
		||||
# The following packages are considered to be unsafe in a requirements file:
 | 
			
		||||
# pip
 | 
			
		||||
# setuptools
 | 
			
		||||
							
								
								
									
										508
									
								
								requirements/requirements-gui.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										508
									
								
								requirements/requirements-gui.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,508 @@
 | 
			
		||||
#
 | 
			
		||||
# This file is autogenerated by pip-compile with Python 3.11
 | 
			
		||||
# by the following command:
 | 
			
		||||
#
 | 
			
		||||
#    pip-compile --extra=gui --output-file=requirements/requirements-gui.txt
 | 
			
		||||
#
 | 
			
		||||
alabaster==0.7.16
 | 
			
		||||
    # via sphinx
 | 
			
		||||
anytree==2.12.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
arrow==1.3.0
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
astroid==3.2.2
 | 
			
		||||
    # via pylint
 | 
			
		||||
asttokens==2.4.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
atomicwrites==1.4.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
attrs==23.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   referencing
 | 
			
		||||
autopep8==2.0.4
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
babel==2.15.0
 | 
			
		||||
    # via sphinx
 | 
			
		||||
backports-tarfile==1.2.0
 | 
			
		||||
    # via jaraco-context
 | 
			
		||||
beautifulsoup4==4.12.3
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
binaryornot==0.4.4
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
black==24.4.2
 | 
			
		||||
    # via python-lsp-black
 | 
			
		||||
bleach==6.1.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
build123d==0.5.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cadquery==2.4.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cadquery-ocp==7.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cadquery
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
casadi==3.6.5
 | 
			
		||||
    # via cadquery
 | 
			
		||||
certifi==2024.6.2
 | 
			
		||||
    # via requests
 | 
			
		||||
cffi==1.16.0
 | 
			
		||||
    # via cryptography
 | 
			
		||||
chardet==5.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   binaryornot
 | 
			
		||||
    #   spyder
 | 
			
		||||
charset-normalizer==3.3.2
 | 
			
		||||
    # via requests
 | 
			
		||||
click==8.1.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
cloudpickle==3.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
comm==0.2.2
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
cookiecutter==2.6.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
cq-editor @ git+https://github.com/jdegenstein/jmwright-CQ-Editor
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cryptography==42.0.8
 | 
			
		||||
    # via secretstorage
 | 
			
		||||
debugpy==1.8.2
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
decorator==5.1.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
defusedxml==0.7.1
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
diff-match-patch==20230430
 | 
			
		||||
    # via
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   three-merge
 | 
			
		||||
dill==0.3.8
 | 
			
		||||
    # via pylint
 | 
			
		||||
docstring-to-markdown==0.15
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
docutils==0.21.2
 | 
			
		||||
    # via sphinx
 | 
			
		||||
executing==2.0.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
ezdxf==1.3.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cadquery
 | 
			
		||||
fastjsonschema==2.20.0
 | 
			
		||||
    # via nbformat
 | 
			
		||||
flake8==7.0.0
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
fonttools==4.53.0
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
idna==3.7
 | 
			
		||||
    # via requests
 | 
			
		||||
imagesize==1.4.1
 | 
			
		||||
    # via sphinx
 | 
			
		||||
importlib-metadata==8.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   yapf
 | 
			
		||||
inflection==0.5.1
 | 
			
		||||
    # via qstylizer
 | 
			
		||||
intervaltree==3.1.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
ipykernel==6.29.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
ipython==8.26.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
isort==5.13.2
 | 
			
		||||
    # via pylint
 | 
			
		||||
jaraco-classes==3.4.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-context==5.3.0
 | 
			
		||||
    # via keyring
 | 
			
		||||
jaraco-functools==4.0.1
 | 
			
		||||
    # via keyring
 | 
			
		||||
jedi==0.19.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
    #   spyder
 | 
			
		||||
jeepney==0.8.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   keyring
 | 
			
		||||
    #   secretstorage
 | 
			
		||||
jellyfish==1.0.4
 | 
			
		||||
    # via spyder
 | 
			
		||||
jinja2==3.1.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   sphinx
 | 
			
		||||
jsonschema==4.22.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   spyder
 | 
			
		||||
jsonschema-specifications==2023.12.1
 | 
			
		||||
    # via jsonschema
 | 
			
		||||
jupyter-client==8.6.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
jupyter-core==5.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
jupyterlab-pygments==0.3.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
keyring==25.2.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
logbook==1.7.0.post0
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
markdown-it-py==3.0.0
 | 
			
		||||
    # via rich
 | 
			
		||||
markupsafe==2.1.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   jinja2
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
matplotlib-inline==0.1.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   ipython
 | 
			
		||||
mccabe==0.7.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   pylint
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
mdurl==0.1.2
 | 
			
		||||
    # via markdown-it-py
 | 
			
		||||
mistune==3.0.2
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
more-itertools==10.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   jaraco-classes
 | 
			
		||||
    #   jaraco-functools
 | 
			
		||||
multimethod==1.9.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
mypy-extensions==1.0.0
 | 
			
		||||
    # via black
 | 
			
		||||
nbclient==0.10.0
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
nbconvert==7.16.4
 | 
			
		||||
    # via spyder
 | 
			
		||||
nbformat==5.10.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
nest-asyncio==1.6.0
 | 
			
		||||
    # via ipykernel
 | 
			
		||||
nlopt==2.7.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
nptyping==2.0.1
 | 
			
		||||
    # via cadquery
 | 
			
		||||
numpy==1.26.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   casadi
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   nlopt
 | 
			
		||||
    #   nptyping
 | 
			
		||||
    #   numpy-stl
 | 
			
		||||
    #   pyqtgraph
 | 
			
		||||
    #   scipy
 | 
			
		||||
    #   svgpathtools
 | 
			
		||||
numpy-stl==3.1.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
numpydoc==1.7.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
ocpsvg==0.2.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
packaging==24.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   pytoolconfig
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   qtpy
 | 
			
		||||
    #   sphinx
 | 
			
		||||
pandocfilters==1.5.1
 | 
			
		||||
    # via nbconvert
 | 
			
		||||
parso==0.8.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   jedi
 | 
			
		||||
    #   spyder
 | 
			
		||||
path==16.14.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   cadquery
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
pathspec==0.12.1
 | 
			
		||||
    # via black
 | 
			
		||||
pexpect==4.9.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   spyder
 | 
			
		||||
pickleshare==0.7.5
 | 
			
		||||
    # via spyder
 | 
			
		||||
platformdirs==4.2.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   black
 | 
			
		||||
    #   jupyter-core
 | 
			
		||||
    #   pylint
 | 
			
		||||
    #   pytoolconfig
 | 
			
		||||
    #   yapf
 | 
			
		||||
pluggy==1.5.0
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
prompt-toolkit==3.0.47
 | 
			
		||||
    # via ipython
 | 
			
		||||
psutil==6.0.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   spyder
 | 
			
		||||
ptyprocess==0.7.0
 | 
			
		||||
    # via pexpect
 | 
			
		||||
pure-eval==0.2.2
 | 
			
		||||
    # via stack-data
 | 
			
		||||
py-lib3mf==2.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
pycodestyle==2.11.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   autopep8
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
pycparser==2.22
 | 
			
		||||
    # via cffi
 | 
			
		||||
pydocstyle==6.3.0
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
pyflakes==3.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   flake8
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
pygments==2.18.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   rich
 | 
			
		||||
    #   sphinx
 | 
			
		||||
    #   spyder
 | 
			
		||||
pylint==3.2.5
 | 
			
		||||
    # via
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
    #   spyder
 | 
			
		||||
pylint-venv==3.0.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyls-spyder==0.4.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyparsing==3.1.2
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
pyqt5==5.15.10
 | 
			
		||||
    # via
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   pyqtwebengine
 | 
			
		||||
    #   spyder
 | 
			
		||||
pyqt5-qt5==5.15.14
 | 
			
		||||
    # via pyqt5
 | 
			
		||||
pyqt5-sip==12.13.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pyqt5
 | 
			
		||||
    #   pyqtwebengine
 | 
			
		||||
pyqtgraph==0.13.7
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
pyqtwebengine==5.15.6
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyqtwebengine-qt5==5.15.14
 | 
			
		||||
    # via pyqtwebengine
 | 
			
		||||
python-dateutil==2.9.0.post0
 | 
			
		||||
    # via
 | 
			
		||||
    #   arrow
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
python-lsp-black==2.0.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
python-lsp-jsonrpc==1.1.2
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
python-lsp-server[all]==1.11.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pyls-spyder
 | 
			
		||||
    #   python-lsp-black
 | 
			
		||||
    #   spyder
 | 
			
		||||
python-slugify==8.0.4
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
python-utils==3.8.2
 | 
			
		||||
    # via numpy-stl
 | 
			
		||||
pytoolconfig[global]==1.3.1
 | 
			
		||||
    # via rope
 | 
			
		||||
pyxdg==0.28
 | 
			
		||||
    # via spyder
 | 
			
		||||
pyyaml==6.0.1
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
pyzmq==26.0.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder
 | 
			
		||||
    #   spyder-kernels
 | 
			
		||||
qdarkstyle==3.2.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
qstylizer==0.2.3
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtawesome==1.3.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtconsole==5.5.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
qtpy==2.4.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   qdarkstyle
 | 
			
		||||
    #   qtawesome
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
    #   spyder
 | 
			
		||||
referencing==0.35.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   jsonschema-specifications
 | 
			
		||||
requests==2.32.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   cookiecutter
 | 
			
		||||
    #   cq-editor
 | 
			
		||||
    #   sphinx
 | 
			
		||||
rich==13.7.1
 | 
			
		||||
    # via cookiecutter
 | 
			
		||||
rope==1.13.0
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
rpds-py==0.18.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   jsonschema
 | 
			
		||||
    #   referencing
 | 
			
		||||
rtree==1.2.0
 | 
			
		||||
    # via spyder
 | 
			
		||||
scipy==1.14.0
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
secretstorage==3.3.3
 | 
			
		||||
    # via keyring
 | 
			
		||||
six==1.16.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   anytree
 | 
			
		||||
    #   asttokens
 | 
			
		||||
    #   bleach
 | 
			
		||||
    #   python-dateutil
 | 
			
		||||
snowballstemmer==2.2.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   pydocstyle
 | 
			
		||||
    #   sphinx
 | 
			
		||||
sortedcontainers==2.4.0
 | 
			
		||||
    # via intervaltree
 | 
			
		||||
soupsieve==2.5
 | 
			
		||||
    # via beautifulsoup4
 | 
			
		||||
sphinx==7.3.7
 | 
			
		||||
    # via
 | 
			
		||||
    #   numpydoc
 | 
			
		||||
    #   spyder
 | 
			
		||||
sphinxcontrib-applehelp==1.0.8
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-devhelp==1.0.6
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-htmlhelp==2.0.5
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-jsmath==1.0.1
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-qthelp==1.0.7
 | 
			
		||||
    # via sphinx
 | 
			
		||||
sphinxcontrib-serializinghtml==1.1.10
 | 
			
		||||
    # via sphinx
 | 
			
		||||
spyder==5.5.5
 | 
			
		||||
    # via cq-editor
 | 
			
		||||
spyder-kernels==2.5.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
stack-data==0.6.3
 | 
			
		||||
    # via ipython
 | 
			
		||||
svgelements==1.9.6
 | 
			
		||||
    # via ocpsvg
 | 
			
		||||
svgpathtools==1.6.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
svgwrite==1.4.3
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
tabulate==0.9.0
 | 
			
		||||
    # via numpydoc
 | 
			
		||||
text-unidecode==1.3
 | 
			
		||||
    # via python-slugify
 | 
			
		||||
textdistance==4.6.2
 | 
			
		||||
    # via spyder
 | 
			
		||||
three-merge==0.1.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
tinycss2==1.3.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   qstylizer
 | 
			
		||||
tomli==2.0.1
 | 
			
		||||
    # via yapf
 | 
			
		||||
tomlkit==0.12.5
 | 
			
		||||
    # via pylint
 | 
			
		||||
tornado==6.4.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
traitlets==5.14.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   comm
 | 
			
		||||
    #   ipykernel
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   jupyter-client
 | 
			
		||||
    #   jupyter-core
 | 
			
		||||
    #   matplotlib-inline
 | 
			
		||||
    #   nbclient
 | 
			
		||||
    #   nbconvert
 | 
			
		||||
    #   nbformat
 | 
			
		||||
    #   qtconsole
 | 
			
		||||
trianglesolver==1.2
 | 
			
		||||
    # via build123d
 | 
			
		||||
types-python-dateutil==2.9.0.20240316
 | 
			
		||||
    # via arrow
 | 
			
		||||
typing-extensions==4.12.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   python-utils
 | 
			
		||||
typish==1.9.3
 | 
			
		||||
    # via cadquery
 | 
			
		||||
ujson==5.10.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   python-lsp-jsonrpc
 | 
			
		||||
    #   python-lsp-server
 | 
			
		||||
urllib3==2.2.2
 | 
			
		||||
    # via requests
 | 
			
		||||
watchdog==4.0.1
 | 
			
		||||
    # via spyder
 | 
			
		||||
wcwidth==0.2.13
 | 
			
		||||
    # via prompt-toolkit
 | 
			
		||||
webencodings==0.5.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   bleach
 | 
			
		||||
    #   tinycss2
 | 
			
		||||
whatthepatch==1.0.5
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
wurlitzer==3.1.1
 | 
			
		||||
    # via spyder-kernels
 | 
			
		||||
yapf==0.40.2
 | 
			
		||||
    # via python-lsp-server
 | 
			
		||||
zipp==3.19.2
 | 
			
		||||
    # via importlib-metadata
 | 
			
		||||
 | 
			
		||||
# The following packages are considered to be unsafe in a requirements file:
 | 
			
		||||
# setuptools
 | 
			
		||||
							
								
								
									
										89
									
								
								requirements/requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								requirements/requirements.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
			
		||||
#
 | 
			
		||||
# This file is autogenerated by pip-compile with Python 3.11
 | 
			
		||||
# by the following command:
 | 
			
		||||
#
 | 
			
		||||
#    pip-compile --output-file=requirements/requirements.txt
 | 
			
		||||
#
 | 
			
		||||
anytree==2.12.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
asttokens==2.4.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
build123d==0.5.0
 | 
			
		||||
    # via buildable-stick-system (pyproject.toml)
 | 
			
		||||
cadquery-ocp==7.7.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
decorator==5.1.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
executing==2.0.1
 | 
			
		||||
    # via stack-data
 | 
			
		||||
ezdxf==1.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
fonttools==4.53.0
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
ipython==8.26.0
 | 
			
		||||
    # via build123d
 | 
			
		||||
jedi==0.19.1
 | 
			
		||||
    # via ipython
 | 
			
		||||
matplotlib-inline==0.1.7
 | 
			
		||||
    # via ipython
 | 
			
		||||
numpy==1.26.4
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   numpy-stl
 | 
			
		||||
    #   scipy
 | 
			
		||||
    #   svgpathtools
 | 
			
		||||
numpy-stl==3.1.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
ocpsvg==0.2.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
parso==0.8.4
 | 
			
		||||
    # via jedi
 | 
			
		||||
pexpect==4.9.0
 | 
			
		||||
    # via ipython
 | 
			
		||||
prompt-toolkit==3.0.47
 | 
			
		||||
    # via ipython
 | 
			
		||||
ptyprocess==0.7.0
 | 
			
		||||
    # via pexpect
 | 
			
		||||
pure-eval==0.2.2
 | 
			
		||||
    # via stack-data
 | 
			
		||||
py-lib3mf==2.3.1
 | 
			
		||||
    # via build123d
 | 
			
		||||
pygments==2.18.0
 | 
			
		||||
    # via ipython
 | 
			
		||||
pyparsing==3.1.2
 | 
			
		||||
    # via ezdxf
 | 
			
		||||
python-utils==3.8.2
 | 
			
		||||
    # via numpy-stl
 | 
			
		||||
scipy==1.14.0
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
six==1.16.0
 | 
			
		||||
    # via
 | 
			
		||||
    #   anytree
 | 
			
		||||
    #   asttokens
 | 
			
		||||
stack-data==0.6.3
 | 
			
		||||
    # via ipython
 | 
			
		||||
svgelements==1.9.6
 | 
			
		||||
    # via ocpsvg
 | 
			
		||||
svgpathtools==1.6.1
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ocpsvg
 | 
			
		||||
svgwrite==1.4.3
 | 
			
		||||
    # via svgpathtools
 | 
			
		||||
traitlets==5.14.3
 | 
			
		||||
    # via
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   matplotlib-inline
 | 
			
		||||
trianglesolver==1.2
 | 
			
		||||
    # via build123d
 | 
			
		||||
typing-extensions==4.12.2
 | 
			
		||||
    # via
 | 
			
		||||
    #   build123d
 | 
			
		||||
    #   ezdxf
 | 
			
		||||
    #   ipython
 | 
			
		||||
    #   python-utils
 | 
			
		||||
wcwidth==0.2.13
 | 
			
		||||
    # via prompt-toolkit
 | 
			
		||||
							
								
								
									
										1
									
								
								src/bss/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/bss/__init__.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
"""The Buildable Stick System, code to generate arcade stick components."""
 | 
			
		||||
							
								
								
									
										68
									
								
								src/bss/core.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/bss/core.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,68 @@
 | 
			
		||||
"""Shared parameters and foundational objects.
 | 
			
		||||
 | 
			
		||||
Reminder that the default unit is millimeters.
 | 
			
		||||
 | 
			
		||||
SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
 | 
			
		||||
SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
"""
 | 
			
		||||
import build123d as bd
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# measurements for holes and connectors
 | 
			
		||||
####################
 | 
			
		||||
HOLE_TOLERANCE = 0.15
 | 
			
		||||
 | 
			
		||||
M4_BOLT_RADIUS = 2 + HOLE_TOLERANCE
 | 
			
		||||
M4_BOLT_COUNTERSINK_RADIUS = M4_BOLT_RADIUS + 2
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# basic dimensions necessary for proper object composition
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# these are for ONE frame box, not the overall case, which may be composed
 | 
			
		||||
# of multiple frames
 | 
			
		||||
FRAME_X = 233
 | 
			
		||||
FRAME_Y = 208
 | 
			
		||||
FRAME_Z = 57
 | 
			
		||||
 | 
			
		||||
# the "wall" is the space inside the frame that is reserved to make a lip for panels
 | 
			
		||||
FRAME_WALL = 4
 | 
			
		||||
 | 
			
		||||
# panel dimensions for either an inset panel or the inner tray of an overhang panel
 | 
			
		||||
PANEL_X = FRAME_X - (FRAME_WALL * 2)
 | 
			
		||||
PANEL_Y = FRAME_Y - (FRAME_WALL * 2)
 | 
			
		||||
PANEL_Z = 5
 | 
			
		||||
 | 
			
		||||
# the center point of where the standoff and bolts connecting a panel to a frame go,
 | 
			
		||||
# relative to a centered object
 | 
			
		||||
PANEL_TO_FRAME_POINT_OFFSET = 10
 | 
			
		||||
PANEL_TO_FRAME_POINT_X = (PANEL_X/2) - PANEL_TO_FRAME_POINT_OFFSET
 | 
			
		||||
PANEL_TO_FRAME_POINT_Y = (PANEL_Y/2) - PANEL_TO_FRAME_POINT_OFFSET
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# commonly used button dimensions
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
BUTTON_30MM_RADIUS = 15 + HOLE_TOLERANCE
 | 
			
		||||
BUTTON_24MM_RADIUS = 12 + HOLE_TOLERANCE
 | 
			
		||||
 | 
			
		||||
# carve out space for snap-ins
 | 
			
		||||
# judgng by https://www.slagcoin.com/joystick/attributes_brands.html 2.5mm is good for everything
 | 
			
		||||
BUTTON_SNAP_IN_THICKNESS = 2.5
 | 
			
		||||
 | 
			
		||||
# make sure the carve out space is also enough for screw-in nuts
 | 
			
		||||
# slagcoin has screw-in nut diameter at 36mm for 30mm buttons, 29.5 for 24mm buttons
 | 
			
		||||
# radius + value below should leave space for the nut and for fingers to grab the nut
 | 
			
		||||
BUTTON_30MM_RADIUS_CONNECTOR_SPACE = 6
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# arcade stick parts that are relevant in a number of contexts
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CutoutButtonHole(bd.CounterBoreHole):
 | 
			
		||||
    """Use an inverted counter bore hole as the button hole with the extra thin space for snap-ins."""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, radius, **kwargs):
 | 
			
		||||
        """Initialize the inverted counter bore hole with the right thinness for e.g. a panel to take snap-ins."""
 | 
			
		||||
        super().__init__(radius, radius+BUTTON_30MM_RADIUS_CONNECTOR_SPACE, BUTTON_SNAP_IN_THICKNESS, **kwargs)
 | 
			
		||||
							
								
								
									
										31
									
								
								src/bss/layouts.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/bss/layouts.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
			
		||||
"""Button and other component layouts for use in panels.
 | 
			
		||||
 | 
			
		||||
SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
 | 
			
		||||
SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
"""
 | 
			
		||||
import build123d as bd
 | 
			
		||||
 | 
			
		||||
from bss import core
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# collected points and related data, to be used to construct a layout
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# 3x3, centered on top left (P1) button
 | 
			
		||||
SEGA_2P_SIX_BUTTON = {'radius': core.BUTTON_30MM_RADIUS,
 | 
			
		||||
                      'positions': [(0, 0), (30.5, 11 + 9), (30.5 + 36, 11 + 9),
 | 
			
		||||
                                    (0, -19 - 9 - 11), (30.5, -19), (30.5 + 36, -19)]}
 | 
			
		||||
 | 
			
		||||
####################
 | 
			
		||||
# Layouts are Locations with extra stuff to document what it is
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Layout(bd.Locations):
 | 
			
		||||
    """A set of button positions that can be adjusted relative to some parameters."""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, layout, *args, distance_scale=1.00, **kwargs):
 | 
			
		||||
        """Lay out the points for the buttons, etc. but can be scaled."""
 | 
			
		||||
        self.points = list(map(lambda x: (x[0] * distance_scale, x[1] * distance_scale), layout['positions']))
 | 
			
		||||
        self.button_radius = layout['radius']
 | 
			
		||||
        super().__init__(self.points, *args, **kwargs)
 | 
			
		||||
							
								
								
									
										45
									
								
								src/bss/panels.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/bss/panels.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
"""The base panel from which all other panels inherit.
 | 
			
		||||
 | 
			
		||||
SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
 | 
			
		||||
SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
"""
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
import build123d as bd
 | 
			
		||||
 | 
			
		||||
from bss import core, layouts
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Panel(bd.BasePartObject):
 | 
			
		||||
    """A panel meant to be secured to the top or bottom of a base.
 | 
			
		||||
 | 
			
		||||
    This is a hard box by default as an inset panel will be flush with the frame.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        """Create our part."""
 | 
			
		||||
        with bd.BuildPart() as panel:
 | 
			
		||||
            bd.Box(core.PANEL_X, core.PANEL_Y, core.PANEL_Z)
 | 
			
		||||
            logger.info(panel.faces().sort_by(bd.Axis.Z))
 | 
			
		||||
            with bd.Locations(panel.faces().sort_by(bd.Axis.Z)[-1]):
 | 
			
		||||
                with bd.Locations((core.PANEL_TO_FRAME_POINT_X, core.PANEL_TO_FRAME_POINT_Y),
 | 
			
		||||
                                  (-core.PANEL_TO_FRAME_POINT_X, core.PANEL_TO_FRAME_POINT_Y),
 | 
			
		||||
                                  (-core.PANEL_TO_FRAME_POINT_X, -core.PANEL_TO_FRAME_POINT_Y),
 | 
			
		||||
                                  (core.PANEL_TO_FRAME_POINT_X, -core.PANEL_TO_FRAME_POINT_Y)):
 | 
			
		||||
                    bd.CounterSinkHole(core.M4_BOLT_RADIUS, core.M4_BOLT_COUNTERSINK_RADIUS)
 | 
			
		||||
        super().__init__(panel.part, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
with bd.BuildPart() as sega_2p_panel:
 | 
			
		||||
    panel = Panel()
 | 
			
		||||
    with layouts.Layout(layouts.SEGA_2P_SIX_BUTTON):
 | 
			
		||||
        with bd.Locations((5, 45)):
 | 
			
		||||
            with bd.Locations(panel.faces().sort_by(bd.Axis.Z)[0]):
 | 
			
		||||
                core.CutoutButtonHole(layouts.SEGA_2P_SIX_BUTTON['radius'])
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    show_object(sega_2p_panel)
 | 
			
		||||
except NameError:
 | 
			
		||||
    pass
 | 
			
		||||
							
								
								
									
										58
									
								
								tox.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								tox.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
# tox (https://tox.readthedocs.io/) is a tool for running tests
 | 
			
		||||
# in multiple virtualenvs. This configuration file will run the
 | 
			
		||||
# test suite on all supported python versions. To use it, "pip install tox"
 | 
			
		||||
# and then run "tox" from this directory.
 | 
			
		||||
 | 
			
		||||
[tox]
 | 
			
		||||
isolated_build = true
 | 
			
		||||
envlist = begin,py311,coverage,bandit,lint,reuse
 | 
			
		||||
 | 
			
		||||
[testenv]
 | 
			
		||||
allow_externals = pytest, coverage
 | 
			
		||||
 | 
			
		||||
deps =
 | 
			
		||||
    -rrequirements/requirements-dev.txt
 | 
			
		||||
 | 
			
		||||
[testenv:begin]
 | 
			
		||||
# clean up potential previous coverage runs
 | 
			
		||||
skip_install = true
 | 
			
		||||
commands = coverage erase
 | 
			
		||||
 | 
			
		||||
[testenv:py311]
 | 
			
		||||
# run pytest with coverage
 | 
			
		||||
commands =
 | 
			
		||||
    pytest --cov-append --cov={envsitepackagesdir}/bss/ --cov-branch
 | 
			
		||||
 | 
			
		||||
[testenv:coverage]
 | 
			
		||||
# report on coverage runs from above
 | 
			
		||||
skip_install = true
 | 
			
		||||
commands =
 | 
			
		||||
    coverage report --fail-under=90 --show-missing
 | 
			
		||||
 | 
			
		||||
[testenv:bandit]
 | 
			
		||||
commands =
 | 
			
		||||
    bandit ./src/bss/ -r
 | 
			
		||||
 | 
			
		||||
[testenv:lint]
 | 
			
		||||
# run style checks
 | 
			
		||||
commands =
 | 
			
		||||
    flake8
 | 
			
		||||
    mypy src/bss
 | 
			
		||||
    - flake8 --disable-noqa --ignore= --select=E,W,F,C,D,A,G,B,I,T,M,DUO
 | 
			
		||||
 | 
			
		||||
[testenv:reuse]
 | 
			
		||||
# check license documentation
 | 
			
		||||
commands =
 | 
			
		||||
    reuse lint
 | 
			
		||||
 | 
			
		||||
[coverage:paths]
 | 
			
		||||
source =
 | 
			
		||||
    ./
 | 
			
		||||
    .tox/**/site-packages/
 | 
			
		||||
 | 
			
		||||
[coverage:run]
 | 
			
		||||
branch = True
 | 
			
		||||
 | 
			
		||||
omit =
 | 
			
		||||
    **/_version.py
 | 
			
		||||
    **/proto_snapshot/*
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user