Nest the two library packages under a single import namespace so they can ship as one distribution: protocol/ -> smartthings_local/protocol/ ocf/ -> smartthings_local/ocf/ (git mv, history preserved) - Rewrite all imports protocol.* -> smartthings_local.protocol.*, ocf.* -> smartthings_local.ocf.* across the ocf modules, mqtt_demo/ (bridge, descriptor, samples), and tests. - Add pyproject.toml: dist name `smartthings-local`, hatch-vcs versioning from v* tags, wheel ships only smartthings_local/. - Add .github/workflows/publish.yml: build + PyPI Trusted Publishing on v* tags (OIDC, no stored token). - Force-include protocol/ocf_root_ca.pem via [tool.hatch.build] artifacts: it is tracked but matches .gitignore's *.pem, so hatchling's VCS file selection would drop it — and dtls_session.py loads it at runtime. - Update mqtt_demo Dockerfile COPY and deploy.sh tar allowlist to the single smartthings_local/ package. - .gitignore: build artifacts (_version.py, dist/, *.egg-info/). Validated: pytest tests/ (11 passed), python -m build produces sdist + wheel with the pem bundled, fresh pip install resolves all nested imports with the pem readable from site-packages.
41 lines
554 B
Plaintext
41 lines
554 B
Plaintext
# Secrets and per-instance config — never commit
|
|
.env
|
|
.DS_Store
|
|
|
|
# Certificates and keys — per-instance, never push
|
|
certs/
|
|
*.pem
|
|
*.crt
|
|
*.p12
|
|
*.pfx
|
|
*.key
|
|
token.txt
|
|
|
|
# Python artifacts
|
|
__pycache__/
|
|
*.pyc
|
|
.venv/
|
|
venv/
|
|
|
|
# Packaging / build artifacts
|
|
/smartthings_local/_version.py
|
|
/dist/
|
|
*.egg-info/
|
|
|
|
# Bridge runtime
|
|
bridge.log
|
|
course_mapper.log
|
|
|
|
# Capture / dump files
|
|
*.pcap
|
|
*.har
|
|
*.mitm
|
|
capture/
|
|
flows/
|
|
|
|
# Local-only research tools (not part of the bridge runtime)
|
|
local-tools/
|
|
|
|
# Claude Code per-project state (permissions allowlist, etc.)
|
|
.claude/
|