fleet-python 0.2.108__tar.gz → 0.2.109__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 (122) hide show
  1. {fleet_python-0.2.108/fleet_python.egg-info → fleet_python-0.2.109}/PKG-INFO +1 -1
  2. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/__init__.py +1 -1
  3. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/__init__.py +1 -1
  4. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/base.py +1 -1
  5. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/sqlite.py +9 -4
  6. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/base.py +1 -1
  7. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/sqlite.py +12 -7
  8. {fleet_python-0.2.108 → fleet_python-0.2.109/fleet_python.egg-info}/PKG-INFO +1 -1
  9. {fleet_python-0.2.108 → fleet_python-0.2.109}/pyproject.toml +1 -1
  10. {fleet_python-0.2.108 → fleet_python-0.2.109}/LICENSE +0 -0
  11. {fleet_python-0.2.108 → fleet_python-0.2.109}/README.md +0 -0
  12. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/diff_example.py +0 -0
  13. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/dsl_example.py +0 -0
  14. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example.py +0 -0
  15. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/exampleResume.py +0 -0
  16. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_account.py +0 -0
  17. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_action_log.py +0 -0
  18. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_client.py +0 -0
  19. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_mcp_anthropic.py +0 -0
  20. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_mcp_openai.py +0 -0
  21. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_sync.py +0 -0
  22. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_task.py +0 -0
  23. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_tasks.py +0 -0
  24. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/example_verifier.py +0 -0
  25. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/export_tasks.py +0 -0
  26. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/export_tasks_filtered.py +0 -0
  27. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/fetch_tasks.py +0 -0
  28. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/gemini_example.py +0 -0
  29. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/import_tasks.py +0 -0
  30. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/iterate_verifiers.py +0 -0
  31. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/json_tasks_example.py +0 -0
  32. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/nova_act_example.py +0 -0
  33. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/openai_example.py +0 -0
  34. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/openai_simple_example.py +0 -0
  35. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/query_builder_example.py +0 -0
  36. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/quickstart.py +0 -0
  37. {fleet_python-0.2.108 → fleet_python-0.2.109}/examples/test_cdp_logging.py +0 -0
  38. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/client.py +0 -0
  39. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/env/__init__.py +0 -0
  40. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/env/client.py +0 -0
  41. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/exceptions.py +0 -0
  42. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/global_client.py +0 -0
  43. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/instance/__init__.py +0 -0
  44. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/instance/base.py +0 -0
  45. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/instance/client.py +0 -0
  46. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/models.py +0 -0
  47. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/__init__.py +0 -0
  48. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/api.py +0 -0
  49. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/base.py +0 -0
  50. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/browser.py +0 -0
  51. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/filesystem.py +0 -0
  52. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/resources/mcp.py +0 -0
  53. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/tasks.py +0 -0
  54. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/verifiers/__init__.py +0 -0
  55. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/verifiers/bundler.py +0 -0
  56. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/_async/verifiers/verifier.py +0 -0
  57. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/__init__.py +0 -0
  58. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/Dockerfile +0 -0
  59. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/__init__.py +0 -0
  60. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/agent.py +0 -0
  61. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/mcp/main.py +0 -0
  62. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/mcp_server/__init__.py +0 -0
  63. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/mcp_server/main.py +0 -0
  64. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/mcp_server/tools.py +0 -0
  65. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/requirements.txt +0 -0
  66. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/gemini_cua/start.sh +0 -0
  67. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/orchestrator.py +0 -0
  68. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/types.py +0 -0
  69. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/agent/utils.py +0 -0
  70. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/cli.py +0 -0
  71. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/client.py +0 -0
  72. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/config.py +0 -0
  73. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/env/__init__.py +0 -0
  74. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/env/client.py +0 -0
  75. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/eval/__init__.py +0 -0
  76. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/eval/uploader.py +0 -0
  77. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/exceptions.py +0 -0
  78. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/global_client.py +0 -0
  79. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/instance/__init__.py +0 -0
  80. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/instance/base.py +0 -0
  81. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/instance/client.py +0 -0
  82. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/instance/models.py +0 -0
  83. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/models.py +0 -0
  84. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/proxy/__init__.py +0 -0
  85. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/proxy/proxy.py +0 -0
  86. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/proxy/whitelist.py +0 -0
  87. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/__init__.py +0 -0
  88. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/api.py +0 -0
  89. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/base.py +0 -0
  90. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/browser.py +0 -0
  91. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/filesystem.py +0 -0
  92. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/resources/mcp.py +0 -0
  93. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/tasks.py +0 -0
  94. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/types.py +0 -0
  95. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/utils/__init__.py +0 -0
  96. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/utils/http_logging.py +0 -0
  97. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/utils/logging.py +0 -0
  98. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/utils/playwright.py +0 -0
  99. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/__init__.py +0 -0
  100. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/bundler.py +0 -0
  101. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/code.py +0 -0
  102. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/db.py +0 -0
  103. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/decorator.py +0 -0
  104. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/parse.py +0 -0
  105. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/sql_differ.py +0 -0
  106. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet/verifiers/verifier.py +0 -0
  107. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet_python.egg-info/SOURCES.txt +0 -0
  108. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet_python.egg-info/dependency_links.txt +0 -0
  109. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet_python.egg-info/entry_points.txt +0 -0
  110. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet_python.egg-info/requires.txt +0 -0
  111. {fleet_python-0.2.108 → fleet_python-0.2.109}/fleet_python.egg-info/top_level.txt +0 -0
  112. {fleet_python-0.2.108 → fleet_python-0.2.109}/scripts/fix_sync_imports.py +0 -0
  113. {fleet_python-0.2.108 → fleet_python-0.2.109}/scripts/unasync.py +0 -0
  114. {fleet_python-0.2.108 → fleet_python-0.2.109}/setup.cfg +0 -0
  115. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/__init__.py +0 -0
  116. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_app_method.py +0 -0
  117. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_expect_exactly.py +0 -0
  118. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_expect_only.py +0 -0
  119. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_instance_dispatch.py +0 -0
  120. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_sqlite_resource_dual_mode.py +0 -0
  121. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_sqlite_shared_memory_behavior.py +0 -0
  122. {fleet_python-0.2.108 → fleet_python-0.2.109}/tests/test_verifier_from_string.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fleet-python
3
- Version: 0.2.108
3
+ Version: 0.2.109
4
4
  Summary: Python SDK for Fleet environments
5
5
  Author-email: Fleet AI <nic@fleet.so>
6
6
  License: Apache-2.0
@@ -73,7 +73,7 @@ from . import env
73
73
  from . import global_client as _global_client
74
74
  from ._async import global_client as _async_global_client
75
75
 
76
- __version__ = "0.2.108"
76
+ __version__ = "0.2.109"
77
77
 
78
78
  __all__ = [
79
79
  # Core classes
@@ -44,7 +44,7 @@ from ..types import VerifierFunction
44
44
  from .. import env
45
45
  from . import global_client as _async_global_client
46
46
 
47
- __version__ = "0.2.108"
47
+ __version__ = "0.2.109"
48
48
 
49
49
  __all__ = [
50
50
  # Core classes
@@ -26,7 +26,7 @@ from .exceptions import (
26
26
  try:
27
27
  from .. import __version__
28
28
  except ImportError:
29
- __version__ = "0.2.108"
29
+ __version__ = "0.2.109"
30
30
 
31
31
  logger = logging.getLogger(__name__)
32
32
 
@@ -99,10 +99,11 @@ class AsyncDatabaseSnapshot:
99
99
  self,
100
100
  other: "AsyncDatabaseSnapshot",
101
101
  ignore_config: Optional[IgnoreConfig] = None,
102
+ use_structured_diff: bool = False,
102
103
  ) -> "AsyncSnapshotDiff":
103
104
  """Compare this snapshot with another."""
104
105
  # No need to fetch all data upfront - diff will fetch on demand
105
- return AsyncSnapshotDiff(self, other, ignore_config)
106
+ return AsyncSnapshotDiff(self, other, ignore_config, use_structured_diff=use_structured_diff)
106
107
 
107
108
 
108
109
  class AsyncSnapshotQueryBuilder:
@@ -275,10 +276,12 @@ class AsyncSnapshotDiff:
275
276
  before: AsyncDatabaseSnapshot,
276
277
  after: AsyncDatabaseSnapshot,
277
278
  ignore_config: Optional[IgnoreConfig] = None,
279
+ use_structured_diff: bool = False,
278
280
  ):
279
281
  self.before = before
280
282
  self.after = after
281
283
  self.ignore_config = ignore_config or IgnoreConfig()
284
+ self.use_structured_diff = use_structured_diff
282
285
  self._cached: Optional[Dict[str, Any]] = None
283
286
  self._targeted_mode = False # Flag to use targeted queries
284
287
 
@@ -1766,8 +1769,7 @@ class AsyncSnapshotDiff:
1766
1769
  return await self._expect_no_changes()
1767
1770
 
1768
1771
  resource = self.after.resource
1769
- # Disabled: structured diff endpoint not yet available
1770
- if False and resource.client is not None and resource._mode == "http":
1772
+ if self.use_structured_diff and resource.client is not None and resource._mode == "http":
1771
1773
  api_diff = None
1772
1774
  try:
1773
1775
  payload = {}
@@ -2478,12 +2480,15 @@ class AsyncSQLiteResource(Resource):
2478
2480
  self,
2479
2481
  other: "AsyncSQLiteResource",
2480
2482
  ignore_config: Optional[IgnoreConfig] = None,
2483
+ use_structured_diff: bool = False,
2481
2484
  ) -> AsyncSnapshotDiff:
2482
2485
  """Compare this database with another AsyncSQLiteResource.
2483
2486
 
2484
2487
  Args:
2485
2488
  other: Another AsyncSQLiteResource to compare against
2486
2489
  ignore_config: Optional configuration for ignoring specific tables/fields
2490
+ use_structured_diff: If True, use server-side structured diff API in expect_only_v2.
2491
+ Defaults to False (local diff only).
2487
2492
 
2488
2493
  Returns:
2489
2494
  AsyncSnapshotDiff: Object containing the differences between the two databases
@@ -2497,4 +2502,4 @@ class AsyncSQLiteResource(Resource):
2497
2502
  )
2498
2503
 
2499
2504
  # Return the diff between the snapshots
2500
- return await before_snapshot.diff(after_snapshot, ignore_config)
2505
+ return await before_snapshot.diff(after_snapshot, ignore_config, use_structured_diff=use_structured_diff)
@@ -27,7 +27,7 @@ from .exceptions import (
27
27
  try:
28
28
  from . import __version__
29
29
  except ImportError:
30
- __version__ = "0.2.108"
30
+ __version__ = "0.2.109"
31
31
 
32
32
  logger = logging.getLogger(__name__)
33
33
 
@@ -98,10 +98,11 @@ class SyncDatabaseSnapshot:
98
98
  self,
99
99
  other: "SyncDatabaseSnapshot",
100
100
  ignore_config: Optional[IgnoreConfig] = None,
101
+ use_structured_diff: bool = False,
101
102
  ) -> "SyncSnapshotDiff":
102
103
  """Compare this snapshot with another."""
103
104
  # No need to fetch all data upfront - diff will fetch on demand
104
- return SyncSnapshotDiff(self, other, ignore_config)
105
+ return SyncSnapshotDiff(self, other, ignore_config, use_structured_diff=use_structured_diff)
105
106
 
106
107
 
107
108
  class SyncSnapshotQueryBuilder:
@@ -274,10 +275,12 @@ class SyncSnapshotDiff:
274
275
  before: SyncDatabaseSnapshot,
275
276
  after: SyncDatabaseSnapshot,
276
277
  ignore_config: Optional[IgnoreConfig] = None,
278
+ use_structured_diff: bool = False,
277
279
  ):
278
280
  self.before = before
279
281
  self.after = after
280
282
  self.ignore_config = ignore_config or IgnoreConfig()
283
+ self.use_structured_diff = use_structured_diff
281
284
  self._cached: Optional[Dict[str, Any]] = None
282
285
  self._targeted_mode = False # Flag to use targeted queries
283
286
 
@@ -1814,8 +1817,7 @@ class SyncSnapshotDiff:
1814
1817
  return self._expect_no_changes()
1815
1818
 
1816
1819
  resource = self.after.resource
1817
- # Disabled: structured diff endpoint not yet available
1818
- if False and resource.client is not None and resource._mode == "http":
1820
+ if self.use_structured_diff and resource.client is not None and resource._mode == "http":
1819
1821
  api_diff = None
1820
1822
  try:
1821
1823
  payload = {}
@@ -2516,19 +2518,22 @@ class SQLiteResource(Resource):
2516
2518
  self,
2517
2519
  other: "SQLiteResource",
2518
2520
  ignore_config: Optional[IgnoreConfig] = None,
2521
+ use_structured_diff: bool = False,
2519
2522
  ) -> SyncSnapshotDiff:
2520
- """Compare this database with another AsyncSQLiteResource.
2523
+ """Compare this database with another SQLiteResource.
2521
2524
 
2522
2525
  Args:
2523
- other: Another AsyncSQLiteResource to compare against
2526
+ other: Another SQLiteResource to compare against
2524
2527
  ignore_config: Optional configuration for ignoring specific tables/fields
2528
+ use_structured_diff: If True, use server-side structured diff API in expect_only_v2.
2529
+ Defaults to False (local diff only).
2525
2530
 
2526
2531
  Returns:
2527
- AsyncSnapshotDiff: Object containing the differences between the two databases
2532
+ SyncSnapshotDiff: Object containing the differences between the two databases
2528
2533
  """
2529
2534
  # Create snapshots of both databases
2530
2535
  before_snapshot = self.snapshot(name=f"before_{datetime.utcnow().isoformat()}")
2531
2536
  after_snapshot = other.snapshot(name=f"after_{datetime.utcnow().isoformat()}")
2532
2537
 
2533
2538
  # Return the diff between the snapshots
2534
- return before_snapshot.diff(after_snapshot, ignore_config)
2539
+ return before_snapshot.diff(after_snapshot, ignore_config, use_structured_diff=use_structured_diff)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fleet-python
3
- Version: 0.2.108
3
+ Version: 0.2.109
4
4
  Summary: Python SDK for Fleet environments
5
5
  Author-email: Fleet AI <nic@fleet.so>
6
6
  License: Apache-2.0
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "fleet-python"
7
7
 
8
- version = "0.2.108"
8
+ version = "0.2.109"
9
9
  description = "Python SDK for Fleet environments"
10
10
  authors = [
11
11
  {name = "Fleet AI", email = "nic@fleet.so"},
File without changes
File without changes
File without changes