tzafon 2.0.0__tar.gz → 2.0.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.

Potentially problematic release.


This version of tzafon might be problematic. Click here for more details.

Files changed (86) hide show
  1. tzafon-2.0.1/.release-please-manifest.json +3 -0
  2. {tzafon-2.0.0 → tzafon-2.0.1}/CHANGELOG.md +4 -0
  3. {tzafon-2.0.0 → tzafon-2.0.1}/PKG-INFO +33 -37
  4. {tzafon-2.0.0 → tzafon-2.0.1}/README.md +32 -36
  5. {tzafon-2.0.0 → tzafon-2.0.1}/pyproject.toml +1 -1
  6. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_version.py +1 -1
  7. tzafon-2.0.0/.release-please-manifest.json +0 -3
  8. {tzafon-2.0.0 → tzafon-2.0.1}/.gitignore +0 -0
  9. {tzafon-2.0.0 → tzafon-2.0.1}/BATCH_API.md +0 -0
  10. {tzafon-2.0.0 → tzafon-2.0.1}/CONTRIBUTING.md +0 -0
  11. {tzafon-2.0.0 → tzafon-2.0.1}/LICENSE +0 -0
  12. {tzafon-2.0.0 → tzafon-2.0.1}/SECURITY.md +0 -0
  13. {tzafon-2.0.0 → tzafon-2.0.1}/WRAPPER.md +0 -0
  14. {tzafon-2.0.0 → tzafon-2.0.1}/WRAPPER_FUNCTIONALITY.md +0 -0
  15. {tzafon-2.0.0 → tzafon-2.0.1}/api.md +0 -0
  16. {tzafon-2.0.0 → tzafon-2.0.1}/bin/check-release-environment +0 -0
  17. {tzafon-2.0.0 → tzafon-2.0.1}/bin/publish-pypi +0 -0
  18. {tzafon-2.0.0 → tzafon-2.0.1}/examples/.keep +0 -0
  19. {tzafon-2.0.0 → tzafon-2.0.1}/examples/batch_example.py +0 -0
  20. {tzafon-2.0.0 → tzafon-2.0.1}/examples/batch_example_simple.py +0 -0
  21. {tzafon-2.0.0 → tzafon-2.0.1}/examples/clean_api_example.py +0 -0
  22. {tzafon-2.0.0 → tzafon-2.0.1}/noxfile.py +0 -0
  23. {tzafon-2.0.0 → tzafon-2.0.1}/release-please-config.json +0 -0
  24. {tzafon-2.0.0 → tzafon-2.0.1}/requirements-dev.lock +0 -0
  25. {tzafon-2.0.0 → tzafon-2.0.1}/requirements.lock +0 -0
  26. {tzafon-2.0.0 → tzafon-2.0.1}/src/computer/lib/.keep +0 -0
  27. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/__init__.py +0 -0
  28. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_base_client.py +0 -0
  29. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_client.py +0 -0
  30. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_compat.py +0 -0
  31. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_constants.py +0 -0
  32. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_exceptions.py +0 -0
  33. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_files.py +0 -0
  34. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_models.py +0 -0
  35. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_qs.py +0 -0
  36. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_resource.py +0 -0
  37. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_response.py +0 -0
  38. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_streaming.py +0 -0
  39. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_types.py +0 -0
  40. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/__init__.py +0 -0
  41. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_compat.py +0 -0
  42. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_datetime_parse.py +0 -0
  43. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_logs.py +0 -0
  44. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_proxy.py +0 -0
  45. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_reflection.py +0 -0
  46. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_resources_proxy.py +0 -0
  47. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_streams.py +0 -0
  48. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_sync.py +0 -0
  49. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_transform.py +0 -0
  50. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_typing.py +0 -0
  51. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/_utils/_utils.py +0 -0
  52. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/batch_wrapper.py +0 -0
  53. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/client_extensions.py +0 -0
  54. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/py.typed +0 -0
  55. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/resources/__init__.py +0 -0
  56. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/resources/computers.py +0 -0
  57. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/__init__.py +0 -0
  58. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/action_result.py +0 -0
  59. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_create_params.py +0 -0
  60. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_execute_action_params.py +0 -0
  61. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_execute_batch_params.py +0 -0
  62. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_execute_batch_response.py +0 -0
  63. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_keep_alive_response.py +0 -0
  64. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_list_response.py +0 -0
  65. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_navigate_params.py +0 -0
  66. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/types/computer_response.py +0 -0
  67. {tzafon-2.0.0 → tzafon-2.0.1}/src/tzafon/wrapper.py +0 -0
  68. {tzafon-2.0.0 → tzafon-2.0.1}/tests/__init__.py +0 -0
  69. {tzafon-2.0.0 → tzafon-2.0.1}/tests/api_resources/__init__.py +0 -0
  70. {tzafon-2.0.0 → tzafon-2.0.1}/tests/api_resources/test_computers.py +0 -0
  71. {tzafon-2.0.0 → tzafon-2.0.1}/tests/conftest.py +0 -0
  72. {tzafon-2.0.0 → tzafon-2.0.1}/tests/sample_file.txt +0 -0
  73. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_client.py +0 -0
  74. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_deepcopy.py +0 -0
  75. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_extract_files.py +0 -0
  76. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_files.py +0 -0
  77. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_models.py +0 -0
  78. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_qs.py +0 -0
  79. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_required_args.py +0 -0
  80. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_response.py +0 -0
  81. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_streaming.py +0 -0
  82. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_transform.py +0 -0
  83. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_utils/test_datetime_parse.py +0 -0
  84. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_utils/test_proxy.py +0 -0
  85. {tzafon-2.0.0 → tzafon-2.0.1}/tests/test_utils/test_typing.py +0 -0
  86. {tzafon-2.0.0 → tzafon-2.0.1}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.0.1"
3
+ }
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.1 (2025-10-21)
4
+
5
+ Full Changelog: [v2.0.0...v2.0.1](https://github.com/tzafon/computer-python/compare/v2.0.0...v2.0.1)
6
+
3
7
  ## 2.0.0 (2025-10-20)
4
8
 
5
9
  Full Changelog: [v1.4.0...v2.0.0](https://github.com/tzafon/computer-python/compare/v1.4.0...v2.0.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: tzafon
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: The official Python library for the computer API
5
5
  Project-URL: Homepage, https://github.com/tzafon/computer-python
6
6
  Project-URL: Repository, https://github.com/tzafon/computer-python
@@ -33,20 +33,22 @@ Requires-Dist: aiohttp; extra == 'aiohttp'
33
33
  Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
34
34
  Description-Content-Type: text/markdown
35
35
 
36
- # Computer Python API library
36
+ # Tzafon Python SDK
37
37
 
38
38
  <!-- prettier-ignore -->
39
39
  [![PyPI version](https://img.shields.io/pypi/v/tzafon.svg?label=pypi%20(stable))](https://pypi.org/project/tzafon/)
40
40
 
41
- The Computer Python library provides convenient access to the Computer REST API from any Python 3.8+
42
- application. The library includes type definitions for all request params and response fields,
43
- and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
41
+ The Tzafon Python SDK provides programmatic control of Chromium browsers and Linux desktop environments. Automate web interactions with simple method calls - navigate, click, type, and capture screenshots.
44
42
 
45
- It is generated with [Stainless](https://www.stainless.com/).
43
+ **Key Features:**
44
+ - Browser and desktop automation
45
+ - Synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx)
46
+ - Type-safe API with full type definitions
47
+ - Context manager support for automatic cleanup
46
48
 
47
49
  ## Documentation
48
50
 
49
- The REST API documentation can be found on [docs.tzafon.ai](http://docs.tzafon.ai). The full API of this library can be found in [api.md](https://github.com/tzafon/computer-python/tree/main/api.md).
51
+ The REST API documentation can be found at [docs.tzafon.ai](https://docs.tzafon.ai). The full API of this library can be found in [api.md](https://github.com/tzafon/computer-python/tree/main/api.md).
50
52
 
51
53
  ## Installation
52
54
 
@@ -57,53 +59,47 @@ pip install tzafon
57
59
 
58
60
  ## Usage
59
61
 
60
- The full API of this library can be found in [api.md](https://github.com/tzafon/computer-python/tree/main/api.md).
61
-
62
62
  ```python
63
- import os
64
63
  from tzafon import Computer
65
64
 
66
- client = Computer(
67
- api_key=os.environ.get("TZAFON_API_KEY"), # This is the default and can be omitted
68
- )
65
+ client = Computer() # Reads TZAFON_API_KEY from environment
69
66
 
70
- computer_response = client.computers.create(
71
- kind="browser",
72
- )
73
- print(computer_response.id)
67
+ # Create and control a browser instance
68
+ with client.create(kind="browser") as computer:
69
+ computer.navigate("https://google.com")
70
+ computer.type("Tzafon AI")
71
+ computer.click(100, 200)
72
+ screenshot = computer.screenshot()
73
+ ```
74
+
75
+ The client automatically reads `TZAFON_API_KEY` from your environment. You can also pass it explicitly:
76
+
77
+ ```python
78
+ client = Computer(api_key="your-api-key")
74
79
  ```
75
80
 
76
- While you can provide an `api_key` keyword argument,
77
- we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
78
- to add `TZAFON_API_KEY="My API Key"` to your `.env` file
79
- so that your API Key is not stored in source control.
81
+ We recommend using [python-dotenv](https://pypi.org/project/python-dotenv/) to manage your API key in a `.env` file.
80
82
 
81
- ## Async usage
83
+ ## Async Usage
82
84
 
83
- Simply import `AsyncComputer` instead of `Computer` and use `await` with each API call:
85
+ Import `AsyncComputer` and use `await` with each action:
84
86
 
85
87
  ```python
86
- import os
87
88
  import asyncio
88
89
  from tzafon import AsyncComputer
89
90
 
90
- client = AsyncComputer(
91
- api_key=os.environ.get("TZAFON_API_KEY"), # This is the default and can be omitted
92
- )
93
-
94
-
95
- async def main() -> None:
96
- computer_response = await client.computers.create(
97
- kind="browser",
98
- )
99
- print(computer_response.id)
100
-
91
+ async def main():
92
+ client = AsyncComputer()
93
+
94
+ async with client.create(kind="browser") as computer:
95
+ await computer.navigate("https://google.com")
96
+ await computer.type("Tzafon AI")
97
+ await computer.click(100, 200)
98
+ screenshot = await computer.screenshot()
101
99
 
102
100
  asyncio.run(main())
103
101
  ```
104
102
 
105
- Functionality between the synchronous and asynchronous clients is otherwise identical.
106
-
107
103
  ### With aiohttp
108
104
 
109
105
  By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
@@ -1,17 +1,19 @@
1
- # Computer Python API library
1
+ # Tzafon Python SDK
2
2
 
3
3
  <!-- prettier-ignore -->
4
4
  [![PyPI version](https://img.shields.io/pypi/v/tzafon.svg?label=pypi%20(stable))](https://pypi.org/project/tzafon/)
5
5
 
6
- The Computer Python library provides convenient access to the Computer REST API from any Python 3.8+
7
- application. The library includes type definitions for all request params and response fields,
8
- and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
6
+ The Tzafon Python SDK provides programmatic control of Chromium browsers and Linux desktop environments. Automate web interactions with simple method calls - navigate, click, type, and capture screenshots.
9
7
 
10
- It is generated with [Stainless](https://www.stainless.com/).
8
+ **Key Features:**
9
+ - Browser and desktop automation
10
+ - Synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx)
11
+ - Type-safe API with full type definitions
12
+ - Context manager support for automatic cleanup
11
13
 
12
14
  ## Documentation
13
15
 
14
- The REST API documentation can be found on [docs.tzafon.ai](http://docs.tzafon.ai). The full API of this library can be found in [api.md](api.md).
16
+ The REST API documentation can be found at [docs.tzafon.ai](https://docs.tzafon.ai). The full API of this library can be found in [api.md](api.md).
15
17
 
16
18
  ## Installation
17
19
 
@@ -22,53 +24,47 @@ pip install tzafon
22
24
 
23
25
  ## Usage
24
26
 
25
- The full API of this library can be found in [api.md](api.md).
26
-
27
27
  ```python
28
- import os
29
28
  from tzafon import Computer
30
29
 
31
- client = Computer(
32
- api_key=os.environ.get("TZAFON_API_KEY"), # This is the default and can be omitted
33
- )
30
+ client = Computer() # Reads TZAFON_API_KEY from environment
34
31
 
35
- computer_response = client.computers.create(
36
- kind="browser",
37
- )
38
- print(computer_response.id)
32
+ # Create and control a browser instance
33
+ with client.create(kind="browser") as computer:
34
+ computer.navigate("https://google.com")
35
+ computer.type("Tzafon AI")
36
+ computer.click(100, 200)
37
+ screenshot = computer.screenshot()
38
+ ```
39
+
40
+ The client automatically reads `TZAFON_API_KEY` from your environment. You can also pass it explicitly:
41
+
42
+ ```python
43
+ client = Computer(api_key="your-api-key")
39
44
  ```
40
45
 
41
- While you can provide an `api_key` keyword argument,
42
- we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
43
- to add `TZAFON_API_KEY="My API Key"` to your `.env` file
44
- so that your API Key is not stored in source control.
46
+ We recommend using [python-dotenv](https://pypi.org/project/python-dotenv/) to manage your API key in a `.env` file.
45
47
 
46
- ## Async usage
48
+ ## Async Usage
47
49
 
48
- Simply import `AsyncComputer` instead of `Computer` and use `await` with each API call:
50
+ Import `AsyncComputer` and use `await` with each action:
49
51
 
50
52
  ```python
51
- import os
52
53
  import asyncio
53
54
  from tzafon import AsyncComputer
54
55
 
55
- client = AsyncComputer(
56
- api_key=os.environ.get("TZAFON_API_KEY"), # This is the default and can be omitted
57
- )
58
-
59
-
60
- async def main() -> None:
61
- computer_response = await client.computers.create(
62
- kind="browser",
63
- )
64
- print(computer_response.id)
65
-
56
+ async def main():
57
+ client = AsyncComputer()
58
+
59
+ async with client.create(kind="browser") as computer:
60
+ await computer.navigate("https://google.com")
61
+ await computer.type("Tzafon AI")
62
+ await computer.click(100, 200)
63
+ screenshot = await computer.screenshot()
66
64
 
67
65
  asyncio.run(main())
68
66
  ```
69
67
 
70
- Functionality between the synchronous and asynchronous clients is otherwise identical.
71
-
72
68
  ### With aiohttp
73
69
 
74
70
  By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tzafon"
3
- version = "2.0.0"
3
+ version = "2.0.1"
4
4
  description = "The official Python library for the computer API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "tzafon"
4
- __version__ = "2.0.0" # x-release-please-version
4
+ __version__ = "2.0.1" # x-release-please-version
@@ -1,3 +0,0 @@
1
- {
2
- ".": "2.0.0"
3
- }
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
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