confluent-sql 0.4.1__tar.gz → 0.4.2__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 (50) hide show
  1. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/ARCHITECTURE.md +1 -1
  2. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/CHANGELOG.md +6 -0
  3. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/DBAPI_EXTENSIONS.md +0 -2
  4. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/PKG-INFO +2 -2
  5. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/README.md +1 -1
  6. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/STREAMING.md +0 -2
  7. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/pyproject.toml +1 -1
  8. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/connection.py +0 -16
  9. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/conftest.py +0 -1
  10. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_cursor_unit.py +0 -58
  11. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/.github/CODEOWNERS +0 -0
  12. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/.gitignore +0 -0
  13. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/.semaphore/publish_to_pypi.yml +0 -0
  14. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/.semaphore/semaphore.yml +0 -0
  15. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/CLAUDE.md +0 -0
  16. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/LICENSE.txt +0 -0
  17. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/Makefile +0 -0
  18. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/TYPES.md +0 -0
  19. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/examples/errors.py +0 -0
  20. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/examples/simple_append_only_streaming_query_example.py +0 -0
  21. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/examples/snapshot_mode_tuple_cursor_simple_example.py +0 -0
  22. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/service.yml +0 -0
  23. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/__init__.py +0 -0
  24. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/__version__.py +0 -0
  25. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/changelog_compressor.py +0 -0
  26. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/cursor.py +0 -0
  27. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/exceptions.py +0 -0
  28. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/execution_mode.py +0 -0
  29. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/polling.py +0 -0
  30. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/result_readers.py +0 -0
  31. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/retry.py +0 -0
  32. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/statement.py +0 -0
  33. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/src/confluent_sql/types.py +0 -0
  34. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/__init__.py +0 -0
  35. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/conftest.py +0 -0
  36. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/integration/conftest.py +0 -0
  37. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/integration/test_connection.py +0 -0
  38. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/integration/test_cursor.py +0 -0
  39. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/integration/test_fetch.py +0 -0
  40. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_changelog_compressor_unit.py +0 -0
  41. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_changelog_unit.py +0 -0
  42. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_connection_unit.py +0 -0
  43. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_connection_unit_properties.py +0 -0
  44. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_execution_mode_unit.py +0 -0
  45. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_polling_unit.py +0 -0
  46. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_result_readers_unit.py +0 -0
  47. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_retry_unit.py +0 -0
  48. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_statement_unit.py +0 -0
  49. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/tests/unit/test_types_unit.py +0 -0
  50. {confluent_sql-0.4.1 → confluent_sql-0.4.2}/uv.lock +0 -0
@@ -45,7 +45,7 @@ Every statement progresses through these phases:
45
45
 
46
46
  ### How Phases Progress
47
47
 
48
- **Snapshot queries (the default):** _(⚠️ [Early Access](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html))_
48
+ **Snapshot queries (the default):**
49
49
 
50
50
  ```
51
51
  PENDING → RUNNING → COMPLETED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this dbapi driver will be documented in this file.
4
4
 
5
+ ## 0.4.2, 2026-07-17
6
+
7
+ ### Changed
8
+
9
+ - Snapshot queries on Confluent Cloud Flink SQL are now Generally Available. Removed the Early Access warning previously emitted on first creation of a snapshot-mode cursor, along with the Early Access advisories throughout the documentation (`README.md`, `ARCHITECTURE.md`, `DBAPI_EXTENSIONS.md`, `STREAMING.md`). (#119, #160)
10
+
5
11
  ## 0.4.1, 2026-07-07
6
12
 
7
13
  ### Fixed
@@ -4,8 +4,6 @@ The `confluent-sql` driver extends the standard [DB-API v2](https://peps.python.
4
4
 
5
5
  ## Understanding Snapshot vs Streaming Modes
6
6
 
7
- > **⚠️ Early Access:** [Snapshot queries](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) on Confluent Cloud Flink SQL are currently in Early Access and may be subject to change.
8
-
9
7
  **By default, the driver operates in [SNAPSHOT mode](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html)**, producing behavior very similar to traditional SQL databases:
10
8
 
11
9
  - Queries execute and block until complete
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: confluent-sql
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: DB-API v2 compliant driver for Confluent Cloud Flink SQL
5
5
  Project-URL: Repository, https://github.com/confluentinc/confluent-sql
6
6
  Project-URL: Documentation, https://github.com/confluentinc/confluent-sql?tab=readme-ov-file#confluent-sql
@@ -245,7 +245,7 @@ This is pre-production code mainly developed as the lower level portion of a `db
245
245
 
246
246
  The behavior of snapshot-mode cursors, complying with dbapi semantics, are well stable. The streaming query extensions are more of a work in progress at this time. Feedback and suggestions are welcome!
247
247
 
248
- > **⚠️ Early Access:** [Snapshot queries](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) on Confluent Cloud Flink SQL are currently in Early Access and may be subject to change. You will need to request access to snapshot queries for your organization from Confluent. The driver defaults to snapshot mode for all queries unless streaming mode is explicitly requested.
248
+ The driver defaults to [snapshot mode](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) for all queries unless streaming mode is explicitly requested.
249
249
 
250
250
  ## Prerequisites
251
251
 
@@ -14,7 +14,7 @@ This is pre-production code mainly developed as the lower level portion of a `db
14
14
 
15
15
  The behavior of snapshot-mode cursors, complying with dbapi semantics, are well stable. The streaming query extensions are more of a work in progress at this time. Feedback and suggestions are welcome!
16
16
 
17
- > **⚠️ Early Access:** [Snapshot queries](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) on Confluent Cloud Flink SQL are currently in Early Access and may be subject to change. You will need to request access to snapshot queries for your organization from Confluent. The driver defaults to snapshot mode for all queries unless streaming mode is explicitly requested.
17
+ The driver defaults to [snapshot mode](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) for all queries unless streaming mode is explicitly requested.
18
18
 
19
19
  ## Prerequisites
20
20
 
@@ -4,8 +4,6 @@ The `confluent-sql` driver provides full support for continuous streaming querie
4
4
 
5
5
  ## Overview
6
6
 
7
- > **⚠️ Early Access:** [Snapshot queries](https://docs.confluent.io/cloud/current/flink/concepts/snapshot-queries.html) on Confluent Cloud Flink SQL are currently in Early Access and may be subject to change. The SNAPSHOT mode described below relies on this feature.
8
-
9
7
  This driver supports two primary execution modes:
10
8
 
11
9
  | Mode | Use Case | Query Examples | Result Behavior |
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "confluent-sql"
7
- version = "0.4.1"
7
+ version = "0.4.2"
8
8
  description = "DB-API v2 compliant driver for Confluent Cloud Flink SQL"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -263,10 +263,6 @@ class Connection:
263
263
  _row_type_registry: RowTypeRegistry
264
264
  """Registry for user-defined row types, see register_row_type()."""
265
265
 
266
- _snapshot_warning_issued: bool
267
- """Internal flag to track whether the snapshot query early access warning has been issued.
268
- Remove after snapshot queries reach open preview (expected May 2026)."""
269
-
270
266
  def __init__( # noqa: PLR0913
271
267
  self,
272
268
  environment_id: str,
@@ -394,9 +390,6 @@ class Connection:
394
390
 
395
391
  self._row_type_registry = RowTypeRegistry()
396
392
 
397
- # TODO: remove after snapshot queries reach open preview (May 2026)
398
- self._snapshot_warning_issued = False
399
-
400
393
  def close(self) -> None:
401
394
  """
402
395
  Close the connection.
@@ -509,15 +502,6 @@ class Connection:
509
502
  if self._closed:
510
503
  raise InterfaceError("Connection is closed")
511
504
 
512
- # TODO: remove after snapshot queries reach open preview (May 2026)
513
- if mode.is_snapshot and not self._snapshot_warning_issued:
514
- self._snapshot_warning_issued = True
515
- warnings.warn(
516
- "Snapshot queries on Confluent Cloud Flink SQL are currently in "
517
- "Early Access and may be subject to change.",
518
- stacklevel=2,
519
- )
520
-
521
505
  return Cursor(self, as_dict=as_dict, execution_mode=mode)
522
506
 
523
507
  def streaming_cursor(self, *, as_dict: bool = False) -> Cursor:
@@ -239,7 +239,6 @@ def mock_connection_factory(mocker, statement_response_factory) -> MockConnectio
239
239
  mock_conn.closing_cursor = types.MethodType(Connection.closing_cursor, mock_conn)
240
240
 
241
241
  mock_conn._row_type_registry = RowTypeRegistry()
242
- mock_conn._snapshot_warning_issued = False
243
242
 
244
243
  return mock_conn
245
244
 
@@ -1,6 +1,5 @@
1
1
  import re
2
2
  import types
3
- import warnings
4
3
 
5
4
  import pytest
6
5
 
@@ -1673,63 +1672,6 @@ class TestMayHaveResults:
1673
1672
  assert mock_connection_cursor.may_have_results is True
1674
1673
 
1675
1674
 
1676
- @pytest.mark.unit
1677
- class TestSnapshotWarning:
1678
- """Tests for the early access warning emitted when creating snapshot mode cursors."""
1679
-
1680
- def test_snapshot_warning_emitted_once_per_connection(self, mock_connection_factory):
1681
- """Verify that snapshot mode warning is emitted exactly once per connection."""
1682
- mock_connection = mock_connection_factory(None, None)
1683
-
1684
- # First snapshot cursor should emit the warning
1685
- with pytest.warns(
1686
- UserWarning,
1687
- match="Snapshot queries on Confluent Cloud Flink SQL are currently in Early Access",
1688
- ):
1689
- cursor1 = mock_connection.cursor(mode=ExecutionMode.SNAPSHOT)
1690
-
1691
- # Flag should now be set
1692
- assert mock_connection._snapshot_warning_issued is True
1693
-
1694
- # Second snapshot cursor should NOT emit warning
1695
- with warnings.catch_warnings(record=True) as warning_list:
1696
- warnings.simplefilter("always")
1697
- cursor2 = mock_connection.cursor(mode=ExecutionMode.SNAPSHOT)
1698
-
1699
- # Filter to only UserWarnings about snapshot
1700
- snapshot_warnings = [
1701
- w for w in warning_list
1702
- if issubclass(w.category, UserWarning)
1703
- and "Snapshot queries" in str(w.message)
1704
- ]
1705
- assert len(snapshot_warnings) == 0
1706
-
1707
- cursor1.close()
1708
- cursor2.close()
1709
-
1710
- def test_snapshot_warning_not_emitted_for_streaming_query_cursor(self, mock_connection_factory):
1711
- """Verify that warning is not emitted for streaming query cursors."""
1712
- mock_connection = mock_connection_factory(None, None)
1713
-
1714
- # Streaming query cursor should not emit warning
1715
- with warnings.catch_warnings(record=True) as warning_list:
1716
- warnings.simplefilter("always")
1717
- cursor = mock_connection.cursor(mode=ExecutionMode.STREAMING_QUERY)
1718
-
1719
- # Filter to only UserWarnings about snapshot
1720
- snapshot_warnings = [
1721
- w for w in warning_list
1722
- if issubclass(w.category, UserWarning)
1723
- and "Snapshot queries" in str(w.message)
1724
- ]
1725
- assert len(snapshot_warnings) == 0
1726
-
1727
- # Flag should still be False
1728
- assert mock_connection._snapshot_warning_issued is False
1729
-
1730
- cursor.close()
1731
-
1732
-
1733
1675
  @pytest.mark.unit
1734
1676
  class TestComputePoolIdParameter:
1735
1677
  """Test the compute_pool_id parameter for Cursor.execute() and related methods."""
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes