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.
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/DEVELOPMENT.md +4 -4
- ipguard_api-0.1.1/PKG-INFO +51 -0
- ipguard_api-0.1.1/README.md +35 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/pyproject.toml +1 -1
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/uv.lock +1 -1
- ipguard_api-0.1.0b6/PKG-INFO +0 -47
- ipguard_api-0.1.0b6/README.md +0 -31
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/.gitignore +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/.python-version +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/LICENSE +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/build-constraints.txt +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/conftest.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/docs/USAGE.md +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/scripts/packaging_policy.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/scripts/release_metadata.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/__init__.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/client.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/errors.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/models.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/protocol.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/py.typed +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/transport.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/src/ipguard_api/validation.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_cloud.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_contract.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_network_guard.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_packaging.py +0 -0
- {ipguard_api-0.1.0b6 → ipguard_api-0.1.1}/tests/test_protocol.py +0 -0
- {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
|
-
|
|
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
|
-
|
|
38
|
+
To publish a release:
|
|
39
39
|
|
|
40
|
-
1. Set the intended version in [pyproject.toml](pyproject.toml).
|
|
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.
|
|
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.
|
ipguard_api-0.1.0b6/PKG-INFO
DELETED
|
@@ -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.
|
ipguard_api-0.1.0b6/README.md
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|