ipguard-api 0.1.0b6__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/DEVELOPMENT.md +4 -4
  2. ipguard_api-0.1.1/PKG-INFO +51 -0
  3. ipguard_api-0.1.1/README.md +35 -0
  4. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/pyproject.toml +1 -1
  5. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/uv.lock +1 -1
  6. ipguard_api-0.1.0b6/PKG-INFO +0 -47
  7. ipguard_api-0.1.0b6/README.md +0 -31
  8. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/.gitignore +0 -0
  9. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/.python-version +0 -0
  10. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/LICENSE +0 -0
  11. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/build-constraints.txt +0 -0
  12. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/conftest.py +0 -0
  13. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/docs/USAGE.md +0 -0
  14. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/scripts/packaging_policy.py +0 -0
  15. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/scripts/release_metadata.py +0 -0
  16. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/__init__.py +0 -0
  17. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/client.py +0 -0
  18. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/errors.py +0 -0
  19. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/models.py +0 -0
  20. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/protocol.py +0 -0
  21. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/py.typed +0 -0
  22. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/transport.py +0 -0
  23. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/validation.py +0 -0
  24. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_cloud.py +0 -0
  25. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_contract.py +0 -0
  26. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_network_guard.py +0 -0
  27. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_packaging.py +0 -0
  28. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_protocol.py +0 -0
  29. {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/uv.toml +0 -0
@@ -33,13 +33,13 @@ The explicit Hatch `only-include` lists in [pyproject.toml](pyproject.toml) are
33
33
 
34
34
  The SDK repository is [KennyTangHK/ipguard-api](https://github.com/KennyTangHK/ipguard-api). Its default branch is `master`. Ordinary CI checks run on pushes to `master` and on pull requests.
35
35
 
36
- Before the first release, configure PyPI Trusted Publishing for the `ipguard-api` project. Use repository owner `KennyTangHK`, repository name `ipguard-api`, workflow filename `publish.yml`, and GitHub environment `pypi`. Configure the matching GitHub environment and its release approval and tag rules as appropriate. See [PyPI publisher setup](https://docs.pypi.org/trusted-publishers/adding-a-publisher/) or [creating a new PyPI project](https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/). Confirm package-name availability and publisher ownership in the target account.
36
+ The package is available on [PyPI](https://pypi.org/project/ipguard-api/). Releases use Trusted Publishing from `KennyTangHK/ipguard-api`, workflow `publish.yml`, and GitHub environment `pypi`. If the repository, workflow filename, or environment changes, update the [PyPI trusted publisher](https://docs.pypi.org/trusted-publishers/adding-a-publisher/) before the next release.
37
37
 
38
- When you have explicit authorization to release SDK changes:
38
+ To publish a release:
39
39
 
40
- 1. Set the intended version in [pyproject.toml](pyproject.toml). Run `uv lock` and the local checks. Use `X.Y.ZbN` for beta releases or `X.Y.Z` for stable releases. Review the lockfile change. A package version change must not silently upgrade external dependencies.
40
+ 1. Set the intended `X.Y.Z` version in [pyproject.toml](pyproject.toml). Keep the beta notice and Beta development-status classifier while the project is in beta. Run `uv lock` and the local checks. Review the lockfile change. A package version change must not silently upgrade external dependencies.
41
41
  2. Commit and push the reviewed changes to `master` in the independent SDK repository.
42
- 3. Push the matching `vX.Y.ZbN` or `vX.Y.Z` tag. The tag must match the committed package version exactly. Do not move or reuse a published tag or version.
42
+ 3. Push the matching `vX.Y.Z` tag. The tag must match the committed package version exactly. Do not move or reuse a published tag or version.
43
43
 
44
44
  The [publication workflow](.github/workflows/publish.yml) calls the checks workflow for the tagged commit. It downloads the three checked assets from that run. It then validates the event, tag, clean checkout, tested commit, remote tag, archive payloads, and hashes again. It stages only the two validated distribution archives for upload.
45
45
 
@@ -0,0 +1,51 @@
1
+ Metadata-Version: 2.5
2
+ Name: ipguard-api
3
+ Version: 0.1.1
4
+ Summary: Typed asynchronous client for the IPGUARD cloud service
5
+ Project-URL: Repository, https://github.com/KennyTangHK/ipguard-api
6
+ Project-URL: Issues, https://github.com/KennyTangHK/ipguard-api/issues
7
+ Project-URL: Documentation, https://github.com/KennyTangHK/ipguard-api/blob/master/docs/USAGE.md
8
+ License-Expression: Apache-2.0
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Programming Language :: Python :: 3.14
12
+ Classifier: Typing :: Typed
13
+ Requires-Python: <3.15,>=3.14.2
14
+ Requires-Dist: pyzmq<28,>=27.2.0
15
+ Description-Content-Type: text/markdown
16
+
17
+ # ipguard-api
18
+
19
+ An asynchronous Python client for the IPGUARD cloud service. Connect an existing account, discover door relays, receive incoming-call notifications, and send door-release commands.
20
+
21
+ **Beta software.** This software is not a stable release.
22
+
23
+ This is an independent community project. It is not affiliated with, sponsored by, or endorsed by IPGUARD, NACD, or Noralsy.
24
+
25
+ Use this software lawfully. Use it only with your own authorized account and with buildings or doors that you have permission to access and control. Do not use it for unauthorized access or abuse.
26
+
27
+ **Use at your own risk.** To the extent permitted by applicable law, the software is provided without warranty. Its authors and contributors accept no responsibility or liability for its use. The warranty and liability limits in the [Apache-2.0 license](LICENSE) apply.
28
+
29
+ ## Installation
30
+
31
+ Install from [PyPI](https://pypi.org/project/ipguard-api/):
32
+
33
+ ```sh
34
+ python -m pip install ipguard-api
35
+ ```
36
+
37
+ See the [API guide](docs/USAGE.md) for account setup and examples.
38
+
39
+ ## Limitations
40
+
41
+ **Video calling and camera streaming are not supported.** The client does not answer calls or provide audio conversation, Bluetooth access, SIP calling, or manual call controls.
42
+
43
+ Incoming-call notifications are passive by default. Set `auto_hangup=True` to make one immediate hangup attempt after a notification. This is intended to trigger carrier-call fallback sooner. The provider and account configuration determine the actual routing and timing.
44
+
45
+ Enrollment uses unencrypted TCP, including retrieval of the server public key. The authenticated connection then uses ZeroMQ CURVE. A door-release acknowledgement does not confirm that the physical door opened. See [transport and logging](docs/USAGE.md#transport-and-logging) for details. Tests use synthetic accounts and do not establish current provider acceptance or physical door outcomes.
46
+
47
+ ## Development
48
+
49
+ See the [development guide](DEVELOPMENT.md) for local setup, tests, and releases.
50
+
51
+ For Home Assistant, use [hass-ipguard](https://github.com/KennyTangHK/hass-ipguard). This Python library can also be used independently.
@@ -0,0 +1,35 @@
1
+ # ipguard-api
2
+
3
+ An asynchronous Python client for the IPGUARD cloud service. Connect an existing account, discover door relays, receive incoming-call notifications, and send door-release commands.
4
+
5
+ **Beta software.** This software is not a stable release.
6
+
7
+ This is an independent community project. It is not affiliated with, sponsored by, or endorsed by IPGUARD, NACD, or Noralsy.
8
+
9
+ Use this software lawfully. Use it only with your own authorized account and with buildings or doors that you have permission to access and control. Do not use it for unauthorized access or abuse.
10
+
11
+ **Use at your own risk.** To the extent permitted by applicable law, the software is provided without warranty. Its authors and contributors accept no responsibility or liability for its use. The warranty and liability limits in the [Apache-2.0 license](LICENSE) apply.
12
+
13
+ ## Installation
14
+
15
+ Install from [PyPI](https://pypi.org/project/ipguard-api/):
16
+
17
+ ```sh
18
+ python -m pip install ipguard-api
19
+ ```
20
+
21
+ See the [API guide](docs/USAGE.md) for account setup and examples.
22
+
23
+ ## Limitations
24
+
25
+ **Video calling and camera streaming are not supported.** The client does not answer calls or provide audio conversation, Bluetooth access, SIP calling, or manual call controls.
26
+
27
+ Incoming-call notifications are passive by default. Set `auto_hangup=True` to make one immediate hangup attempt after a notification. This is intended to trigger carrier-call fallback sooner. The provider and account configuration determine the actual routing and timing.
28
+
29
+ Enrollment uses unencrypted TCP, including retrieval of the server public key. The authenticated connection then uses ZeroMQ CURVE. A door-release acknowledgement does not confirm that the physical door opened. See [transport and logging](docs/USAGE.md#transport-and-logging) for details. Tests use synthetic accounts and do not establish current provider acceptance or physical door outcomes.
30
+
31
+ ## Development
32
+
33
+ See the [development guide](DEVELOPMENT.md) for local setup, tests, and releases.
34
+
35
+ For Home Assistant, use [hass-ipguard](https://github.com/KennyTangHK/hass-ipguard). This Python library can also be used independently.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ipguard-api"
7
- version = "0.1.0b6"
7
+ version = "0.1.1"
8
8
  description = "Typed asynchronous client for the IPGUARD cloud service"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.14.2,<3.15"
@@ -136,7 +136,7 @@ wheels = [
136
136
 
137
137
  [[package]]
138
138
  name = "ipguard-api"
139
- version = "0.1.0b6"
139
+ version = "0.1.1"
140
140
  source = { editable = "." }
141
141
  dependencies = [
142
142
  { name = "pyzmq" },
@@ -1,47 +0,0 @@
1
- Metadata-Version: 2.5
2
- Name: ipguard-api
3
- Version: 0.1.0b6
4
- Summary: Typed asynchronous client for the IPGUARD cloud service
5
- Project-URL: Repository, https://github.com/KennyTangHK/ipguard-api
6
- Project-URL: Issues, https://github.com/KennyTangHK/ipguard-api/issues
7
- Project-URL: Documentation, https://github.com/KennyTangHK/ipguard-api/blob/master/docs/USAGE.md
8
- License-Expression: Apache-2.0
9
- License-File: LICENSE
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Programming Language :: Python :: 3.14
12
- Classifier: Typing :: Typed
13
- Requires-Python: <3.15,>=3.14.2
14
- Requires-Dist: pyzmq<28,>=27.2.0
15
- Description-Content-Type: text/markdown
16
-
17
- # ipguard-api
18
-
19
- Source repository: [KennyTangHK/ipguard-api](https://github.com/KennyTangHK/ipguard-api). The default branch is `master`.
20
-
21
- **Beta software.** This software is not a stable release.
22
-
23
- This is an independent community project. It is not affiliated with, sponsored by, or endorsed by IPGUARD, NACD, or Noralsy.
24
-
25
- Use this software lawfully. Use it only with your own authorized account and with buildings or doors that you have permission to access and control. Do not use it for unauthorized access or abuse.
26
-
27
- **Use at your own risk.** To the extent permitted by applicable law, the software is provided without warranty. Its authors and contributors accept no responsibility or liability for its use. The warranty and liability limits in the [Apache-2.0 license](LICENSE) apply.
28
-
29
- `ipguard-api` is a typed asynchronous Python library for an authorized IPGUARD cloud account. It supports phone and email enrollment, ZeroMQ CURVE connections, relay discovery, incoming-call callbacks, and explicit remote release commands. It does not depend on Home Assistant.
30
-
31
- **Video calling and camera streaming are not supported.** By default, incoming calls give passive notifications. The library does not retain media offers or answer calls. To attempt one immediate hangup after the notification, set `auto_hangup=True` for the client. This attempt is intended to trigger carrier-call fallback sooner. The provider and account configuration determine the actual routing and timing.
32
-
33
- For enrollment, saved sessions, event subscriptions, and command errors, see [API usage](docs/USAGE.md). For tests and release builds, see [Development](DEVELOPMENT.md).
34
-
35
- The [package metadata](pyproject.toml) defines the Python and dependency requirements. The [lockfile](uv.lock) records the resolved dependencies. The PyPI package is `ipguard-api`; the import package is `ipguard_api`. The separate Home Assistant integration is at [hass-ipguard](https://github.com/KennyTangHK/hass-ipguard).
36
-
37
- The [protocol implementation](src/ipguard_api/protocol.py) defines the protocol behavior. The [handset profile](src/ipguard_api/models.py) defines the client metadata values. Direct enrollment uses unencrypted TCP to retrieve the server public key. The authenticated channel then uses CURVE. A board acknowledgement does not show the physical state of a door. Bluetooth, SIP, pickup, and media transport and decoding are outside the scope of this library. Local fixtures test client behavior with synthetic accounts. They do not show current provider acceptance or physical door outcomes.
38
-
39
- ## Installation
40
-
41
- After a release is published to PyPI, install the package:
42
-
43
- ```sh
44
- python -m pip install --pre ipguard-api
45
- ```
46
-
47
- The `--pre` option permits beta releases. To install this checkout, use `python -m pip install .`. For a locked test environment, see the [development guide](DEVELOPMENT.md). Installation and import do not enroll an account or open a connection.
@@ -1,31 +0,0 @@
1
- # ipguard-api
2
-
3
- Source repository: [KennyTangHK/ipguard-api](https://github.com/KennyTangHK/ipguard-api). The default branch is `master`.
4
-
5
- **Beta software.** This software is not a stable release.
6
-
7
- This is an independent community project. It is not affiliated with, sponsored by, or endorsed by IPGUARD, NACD, or Noralsy.
8
-
9
- Use this software lawfully. Use it only with your own authorized account and with buildings or doors that you have permission to access and control. Do not use it for unauthorized access or abuse.
10
-
11
- **Use at your own risk.** To the extent permitted by applicable law, the software is provided without warranty. Its authors and contributors accept no responsibility or liability for its use. The warranty and liability limits in the [Apache-2.0 license](LICENSE) apply.
12
-
13
- `ipguard-api` is a typed asynchronous Python library for an authorized IPGUARD cloud account. It supports phone and email enrollment, ZeroMQ CURVE connections, relay discovery, incoming-call callbacks, and explicit remote release commands. It does not depend on Home Assistant.
14
-
15
- **Video calling and camera streaming are not supported.** By default, incoming calls give passive notifications. The library does not retain media offers or answer calls. To attempt one immediate hangup after the notification, set `auto_hangup=True` for the client. This attempt is intended to trigger carrier-call fallback sooner. The provider and account configuration determine the actual routing and timing.
16
-
17
- For enrollment, saved sessions, event subscriptions, and command errors, see [API usage](docs/USAGE.md). For tests and release builds, see [Development](DEVELOPMENT.md).
18
-
19
- The [package metadata](pyproject.toml) defines the Python and dependency requirements. The [lockfile](uv.lock) records the resolved dependencies. The PyPI package is `ipguard-api`; the import package is `ipguard_api`. The separate Home Assistant integration is at [hass-ipguard](https://github.com/KennyTangHK/hass-ipguard).
20
-
21
- The [protocol implementation](src/ipguard_api/protocol.py) defines the protocol behavior. The [handset profile](src/ipguard_api/models.py) defines the client metadata values. Direct enrollment uses unencrypted TCP to retrieve the server public key. The authenticated channel then uses CURVE. A board acknowledgement does not show the physical state of a door. Bluetooth, SIP, pickup, and media transport and decoding are outside the scope of this library. Local fixtures test client behavior with synthetic accounts. They do not show current provider acceptance or physical door outcomes.
22
-
23
- ## Installation
24
-
25
- After a release is published to PyPI, install the package:
26
-
27
- ```sh
28
- python -m pip install --pre ipguard-api
29
- ```
30
-
31
- The `--pre` option permits beta releases. To install this checkout, use `python -m pip install .`. For a locked test environment, see the [development guide](DEVELOPMENT.md). Installation and import do not enroll an account or open a connection.
File without changes
File without changes
File without changes
File without changes
File without changes