risclog.sqlalchemy 9.0__tar.gz → 9.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 (42) hide show
  1. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/CHANGES.rst +6 -0
  2. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/PKG-INFO +9 -11
  3. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/pyproject.toml +10 -8
  4. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/cache.py +9 -4
  5. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog.sqlalchemy.egg-info/PKG-INFO +9 -11
  6. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog.sqlalchemy.egg-info/SOURCES.txt +0 -2
  7. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog.sqlalchemy.egg-info/requires.txt +1 -9
  8. risclog_sqlalchemy-9.1/uv.lock +881 -0
  9. risclog_sqlalchemy-9.0/.github/workflows/tests.yml +0 -41
  10. risclog_sqlalchemy-9.0/.gitignore +0 -24
  11. risclog_sqlalchemy-9.0/uv.lock +0 -2671
  12. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/COPYRIGHT.rst +0 -0
  13. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/HACKING.rst +0 -0
  14. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/LICENSE.txt +0 -0
  15. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/README.rst +0 -0
  16. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/docs/about.txt +0 -0
  17. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/docs/api.txt +0 -0
  18. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/docs/changes.txt +0 -0
  19. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/docs/conf.py +0 -0
  20. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/docs/index.txt +0 -0
  21. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/setup.cfg +0 -0
  22. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/__init__.py +0 -0
  23. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/db.py +0 -0
  24. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/fixtures.py +0 -0
  25. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/functions.py +0 -0
  26. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/interfaces.py +0 -0
  27. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/model.py +0 -0
  28. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/serializer.py +0 -0
  29. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/testing.py +0 -0
  30. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/testlayer.py +0 -0
  31. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/__init__.py +0 -0
  32. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/conftest.py +0 -0
  33. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/fixtures/alembic/env.py +0 -0
  34. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/fixtures/alembic/script.py.mako +0 -0
  35. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/fixtures/alembic/versions/3f735078d5a8_foo.py +0 -0
  36. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/test_cache.py +0 -0
  37. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/test_db.py +0 -0
  38. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/test_fixtures.py +0 -0
  39. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/test_model.py +0 -0
  40. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog/sqlalchemy/tests/test_serializer.py +0 -0
  41. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog.sqlalchemy.egg-info/dependency_links.txt +0 -0
  42. {risclog_sqlalchemy-9.0 → risclog_sqlalchemy-9.1}/src/risclog.sqlalchemy.egg-info/top_level.txt +0 -0
@@ -2,6 +2,12 @@
2
2
  Change log for risclog.sqlalchemy
3
3
  =================================
4
4
 
5
+ 9.1 (2026-10-09)
6
+ ================
7
+
8
+ - deps: Drop support for Python 3.10 and 3.11.
9
+
10
+
5
11
  9.0 (2026-08-24)
6
12
  ================
7
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: risclog.sqlalchemy
3
- Version: 9.0
3
+ Version: 9.1
4
4
  Summary: Encapsulate sqlalchemy modelling infrastructure.
5
5
  Author-email: gocept <mail@gocept.com>
6
6
  License: ZPL 2.1
@@ -15,34 +15,26 @@ Classifier: Natural Language :: English
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python
17
17
  Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: Implementation
21
20
  Classifier: Programming Language :: Python :: Implementation :: CPython
22
21
  Classifier: Topic :: Database
23
22
  Classifier: Topic :: Software Development :: Libraries
24
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Requires-Python: >=3.7
24
+ Requires-Python: >=3.12
26
25
  Description-Content-Type: text/x-rst
27
26
  License-File: LICENSE.txt
28
27
  Requires-Dist: SQLAlchemy>=1.4
29
28
  Requires-Dist: alembic>=0.7
30
29
  Requires-Dist: importlib_resources
31
30
  Requires-Dist: pytz
32
- Requires-Dist: setuptools
31
+ Requires-Dist: setuptools>=84.0.0
33
32
  Requires-Dist: transaction
34
33
  Requires-Dist: zope.component>=4.0.1
35
34
  Requires-Dist: zope.interface
36
35
  Requires-Dist: zope.sqlalchemy>=1.3
37
36
  Provides-Extra: test
38
37
  Requires-Dist: gocept.testdb; extra == "test"
39
- Provides-Extra: self-test
40
- Requires-Dist: mock; extra == "self-test"
41
- Requires-Dist: pyramid; extra == "self-test"
42
- Requires-Dist: pytest; extra == "self-test"
43
- Requires-Dist: psycopg2-binary; extra == "self-test"
44
- Requires-Dist: greenlet; extra == "self-test"
45
- Requires-Dist: pytest-cov; extra == "self-test"
46
38
  Provides-Extra: pyramid
47
39
  Requires-Dist: pyramid; extra == "pyramid"
48
40
  Dynamic: license-file
@@ -106,6 +98,12 @@ python, where ``sphinx-pypi-upload`` is installed::
106
98
  Change log for risclog.sqlalchemy
107
99
  =================================
108
100
 
101
+ 9.1 (2026-10-09)
102
+ ================
103
+
104
+ - deps: Drop support for Python 3.10 and 3.11.
105
+
106
+
109
107
  9.0 (2026-08-24)
110
108
  ================
111
109
 
@@ -1,13 +1,13 @@
1
1
  [build-system]
2
- requires = ["setuptools>=40.6.0", "wheel"]
2
+ requires = ["setuptools>=84.0.0", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "risclog.sqlalchemy"
7
- version = "9.0"
7
+ version = "9.1"
8
8
  description = "Encapsulate sqlalchemy modelling infrastructure."
9
9
  keywords = ["sqlalchemy", "alembic", "model", "infrastructure", "utility"]
10
- requires-python = ">=3.7"
10
+ requires-python = ">=3.12"
11
11
  authors = [{ name = "gocept", email = "mail@gocept.com" }]
12
12
  license = { text = "ZPL 2.1" }
13
13
  urls = { Homepage = "https://github.com/gocept/risclog.sqlalchemy" }
@@ -22,7 +22,6 @@ classifiers = [
22
22
  "Operating System :: OS Independent",
23
23
  "Programming Language :: Python",
24
24
  "Programming Language :: Python :: 3",
25
- "Programming Language :: Python :: 3.10",
26
25
  "Programming Language :: Python :: 3.12",
27
26
  "Programming Language :: Python :: Implementation",
28
27
  "Programming Language :: Python :: Implementation :: CPython",
@@ -35,7 +34,7 @@ dependencies = [
35
34
  "alembic >= 0.7",
36
35
  "importlib_resources",
37
36
  "pytz",
38
- "setuptools",
37
+ "setuptools>=84.0.0",
39
38
  "transaction",
40
39
  "zope.component >= 4.0.1",
41
40
  "zope.interface",
@@ -44,15 +43,18 @@ dependencies = [
44
43
 
45
44
  [project.optional-dependencies]
46
45
  test = ["gocept.testdb"]
47
- self-test = [
46
+ pyramid = ["pyramid"]
47
+
48
+ [dependency-groups]
49
+ dev = [
50
+ "risclog.sqlalchemy[test]",
48
51
  "mock",
49
52
  "pyramid",
50
53
  "pytest",
51
- "psycopg2-binary",
54
+ "psycopg[binary]",
52
55
  "greenlet",
53
56
  "pytest-cov",
54
57
  ]
55
- pyramid = ["pyramid"]
56
58
 
57
59
  [tool.setuptools]
58
60
  include-package-data = true
@@ -249,7 +249,7 @@ class ModelCache:
249
249
  See: https://www.postgresql.org/docs/current/sql-copy.html
250
250
 
251
251
  Args:
252
- cursor: A Psycopg2 cursor
252
+ cursor: A psycopg2 or psycopg 3 cursor
253
253
  objects: SQLAlchemy ORM instances to save
254
254
  """
255
255
  if len(objects) == 0:
@@ -284,11 +284,16 @@ class ModelCache:
284
284
  columns_string = ",".join(
285
285
  [f'"{column}"' for column in table.columns.keys()]
286
286
  )
287
- cursor.copy_expert(
287
+ statement = (
288
288
  f"COPY {table} ({columns_string}) "
289
- "FROM STDIN WITH CSV DELIMITER ',' NULL '\\N'",
290
- file,
289
+ "FROM STDIN WITH CSV DELIMITER ',' NULL '\\N'"
291
290
  )
291
+ if hasattr(cursor, "copy_expert"): # psycopg2
292
+ cursor.copy_expert(statement, file)
293
+ else: # psycopg 3
294
+ with cursor.copy(statement) as copy:
295
+ while data := file.read(8192):
296
+ copy.write(data)
292
297
  cursor.connection.commit()
293
298
 
294
299
  def clear(self, session=None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: risclog.sqlalchemy
3
- Version: 9.0
3
+ Version: 9.1
4
4
  Summary: Encapsulate sqlalchemy modelling infrastructure.
5
5
  Author-email: gocept <mail@gocept.com>
6
6
  License: ZPL 2.1
@@ -15,34 +15,26 @@ Classifier: Natural Language :: English
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python
17
17
  Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: Implementation
21
20
  Classifier: Programming Language :: Python :: Implementation :: CPython
22
21
  Classifier: Topic :: Database
23
22
  Classifier: Topic :: Software Development :: Libraries
24
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Requires-Python: >=3.7
24
+ Requires-Python: >=3.12
26
25
  Description-Content-Type: text/x-rst
27
26
  License-File: LICENSE.txt
28
27
  Requires-Dist: SQLAlchemy>=1.4
29
28
  Requires-Dist: alembic>=0.7
30
29
  Requires-Dist: importlib_resources
31
30
  Requires-Dist: pytz
32
- Requires-Dist: setuptools
31
+ Requires-Dist: setuptools>=84.0.0
33
32
  Requires-Dist: transaction
34
33
  Requires-Dist: zope.component>=4.0.1
35
34
  Requires-Dist: zope.interface
36
35
  Requires-Dist: zope.sqlalchemy>=1.3
37
36
  Provides-Extra: test
38
37
  Requires-Dist: gocept.testdb; extra == "test"
39
- Provides-Extra: self-test
40
- Requires-Dist: mock; extra == "self-test"
41
- Requires-Dist: pyramid; extra == "self-test"
42
- Requires-Dist: pytest; extra == "self-test"
43
- Requires-Dist: psycopg2-binary; extra == "self-test"
44
- Requires-Dist: greenlet; extra == "self-test"
45
- Requires-Dist: pytest-cov; extra == "self-test"
46
38
  Provides-Extra: pyramid
47
39
  Requires-Dist: pyramid; extra == "pyramid"
48
40
  Dynamic: license-file
@@ -106,6 +98,12 @@ python, where ``sphinx-pypi-upload`` is installed::
106
98
  Change log for risclog.sqlalchemy
107
99
  =================================
108
100
 
101
+ 9.1 (2026-10-09)
102
+ ================
103
+
104
+ - deps: Drop support for Python 3.10 and 3.11.
105
+
106
+
109
107
  9.0 (2026-08-24)
110
108
  ================
111
109
 
@@ -1,4 +1,3 @@
1
- .gitignore
2
1
  CHANGES.rst
3
2
  COPYRIGHT.rst
4
3
  HACKING.rst
@@ -7,7 +6,6 @@ README.rst
7
6
  pyproject.toml
8
7
  setup.cfg
9
8
  uv.lock
10
- .github/workflows/tests.yml
11
9
  docs/about.txt
12
10
  docs/api.txt
13
11
  docs/changes.txt
@@ -2,7 +2,7 @@ SQLAlchemy>=1.4
2
2
  alembic>=0.7
3
3
  importlib_resources
4
4
  pytz
5
- setuptools
5
+ setuptools>=84.0.0
6
6
  transaction
7
7
  zope.component>=4.0.1
8
8
  zope.interface
@@ -11,13 +11,5 @@ zope.sqlalchemy>=1.3
11
11
  [pyramid]
12
12
  pyramid
13
13
 
14
- [self-test]
15
- mock
16
- pyramid
17
- pytest
18
- psycopg2-binary
19
- greenlet
20
- pytest-cov
21
-
22
14
  [test]
23
15
  gocept.testdb