risclog.sqlalchemy 8.0__tar.gz → 9.0__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 (49) hide show
  1. risclog_sqlalchemy-9.0/.github/workflows/tests.yml +41 -0
  2. risclog_sqlalchemy-9.0/.gitignore +24 -0
  3. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/CHANGES.rst +7 -1
  4. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/HACKING.rst +1 -1
  5. risclog_sqlalchemy-9.0/PKG-INFO +453 -0
  6. {risclog.sqlalchemy-8.0/doc → risclog_sqlalchemy-9.0/docs}/conf.py +8 -8
  7. risclog_sqlalchemy-9.0/pyproject.toml +105 -0
  8. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/cache.py +15 -15
  9. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/db.py +42 -43
  10. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/fixtures.py +1 -1
  11. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/interfaces.py +2 -2
  12. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/model.py +1 -2
  13. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/serializer.py +4 -4
  14. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/testing.py +7 -6
  15. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/testlayer.py +1 -2
  16. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/conftest.py +11 -11
  17. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/fixtures/alembic/env.py +2 -2
  18. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/fixtures/alembic/versions/3f735078d5a8_foo.py +4 -3
  19. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/test_cache.py +56 -56
  20. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/test_db.py +48 -48
  21. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/test_fixtures.py +6 -6
  22. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/test_model.py +1 -1
  23. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/test_serializer.py +11 -11
  24. risclog_sqlalchemy-9.0/src/risclog.sqlalchemy.egg-info/PKG-INFO +453 -0
  25. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog.sqlalchemy.egg-info/SOURCES.txt +8 -10
  26. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog.sqlalchemy.egg-info/requires.txt +1 -0
  27. risclog_sqlalchemy-9.0/uv.lock +2671 -0
  28. risclog.sqlalchemy-8.0/PKG-INFO +0 -434
  29. risclog.sqlalchemy-8.0/pyproject.toml +0 -60
  30. risclog.sqlalchemy-8.0/requirements.txt +0 -3
  31. risclog.sqlalchemy-8.0/setup.py +0 -79
  32. risclog.sqlalchemy-8.0/src/risclog/__init__.py +0 -1
  33. risclog.sqlalchemy-8.0/src/risclog.sqlalchemy.egg-info/PKG-INFO +0 -434
  34. risclog.sqlalchemy-8.0/src/risclog.sqlalchemy.egg-info/namespace_packages.txt +0 -1
  35. risclog.sqlalchemy-8.0/src/risclog.sqlalchemy.egg-info/not-zip-safe +0 -1
  36. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/COPYRIGHT.rst +0 -0
  37. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/LICENSE.txt +0 -0
  38. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/README.rst +0 -0
  39. {risclog.sqlalchemy-8.0/doc → risclog_sqlalchemy-9.0/docs}/about.txt +0 -0
  40. {risclog.sqlalchemy-8.0/doc → risclog_sqlalchemy-9.0/docs}/api.txt +0 -0
  41. {risclog.sqlalchemy-8.0/doc → risclog_sqlalchemy-9.0/docs}/changes.txt +0 -0
  42. {risclog.sqlalchemy-8.0/doc → risclog_sqlalchemy-9.0/docs}/index.txt +0 -0
  43. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/setup.cfg +0 -0
  44. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/__init__.py +0 -0
  45. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/functions.py +0 -0
  46. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/__init__.py +0 -0
  47. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog/sqlalchemy/tests/fixtures/alembic/script.py.mako +0 -0
  48. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog.sqlalchemy.egg-info/dependency_links.txt +0 -0
  49. {risclog.sqlalchemy-8.0 → risclog_sqlalchemy-9.0}/src/risclog.sqlalchemy.egg-info/top_level.txt +0 -0
@@ -0,0 +1,41 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ - testing
8
+ pull_request:
9
+ schedule:
10
+ # * is a special character in YAML so you have to quote this string
11
+ - cron: '0 1 * * *'
12
+
13
+ jobs:
14
+ test:
15
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/pytest_uv.yml@master
16
+ with:
17
+ timeout_minutes: 30
18
+ secrets:
19
+ UVCONF: ${{ secrets.UVCONF }}
20
+
21
+ coverage:
22
+ needs: test
23
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/coverage.yml@master
24
+ with:
25
+ min_coverage: 80
26
+
27
+ pre-commit:
28
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/pre_commit.yml@master
29
+
30
+ sonarqube:
31
+ needs: coverage
32
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/sonarqube.yml@master
33
+ secrets:
34
+ SONARQUBETOKEN: ${{ secrets.SONARQUBETOKEN }}
35
+
36
+ publish-test-results:
37
+ needs: test
38
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/publish_test_results.yml@master
39
+
40
+ cleanup:
41
+ uses: risclog-solution/gha_workflow_templates/.github/workflows/cleanup.yml@master
@@ -0,0 +1,24 @@
1
+ *.egg-info
2
+ *.pyc
3
+ .Python
4
+ .cache/v/cache/lastfailed
5
+ .coverage
6
+ .installed.cfg
7
+ .tags
8
+ .tox
9
+ __pycache__
10
+ bin
11
+ build
12
+ coverage-report
13
+ coverage.xml
14
+ develop-eggs
15
+ dist
16
+ docs
17
+ docs/_api
18
+ eggs
19
+ include
20
+ lib
21
+ local.cfg
22
+ parts
23
+ testreport.xml
24
+ .venv
@@ -2,7 +2,13 @@
2
2
  Change log for risclog.sqlalchemy
3
3
  =================================
4
4
 
5
- 8.0 (2025-02-12)
5
+ 9.0 (2026-08-24)
6
+ ================
7
+
8
+ - deps: Switch to uv, pyproject.toml and PEP-420 namespace package.
9
+
10
+
11
+ 8.0 (2025-12-02)
6
12
  ================
7
13
 
8
14
  - Add compatability to sqlalchemy 2. Break with compatability to sqlalchemy < 1.4.
@@ -24,7 +24,7 @@ Developing risclog.sqlalchemy
24
24
  Running tests
25
25
  =============
26
26
 
27
- Simply run `./pytest` in the root of the repository.
27
+ Simply run `uv run pytest` in the root of the repository.
28
28
 
29
29
 
30
30
  Documentation
@@ -0,0 +1,453 @@
1
+ Metadata-Version: 2.4
2
+ Name: risclog.sqlalchemy
3
+ Version: 9.0
4
+ Summary: Encapsulate sqlalchemy modelling infrastructure.
5
+ Author-email: gocept <mail@gocept.com>
6
+ License: ZPL 2.1
7
+ Project-URL: Homepage, https://github.com/gocept/risclog.sqlalchemy
8
+ Keywords: sqlalchemy,alembic,model,infrastructure,utility
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Framework :: Pyramid
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved
13
+ Classifier: License :: OSI Approved :: Zope Public License
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: Implementation
21
+ Classifier: Programming Language :: Python :: Implementation :: CPython
22
+ Classifier: Topic :: Database
23
+ Classifier: Topic :: Software Development :: Libraries
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Requires-Python: >=3.7
26
+ Description-Content-Type: text/x-rst
27
+ License-File: LICENSE.txt
28
+ Requires-Dist: SQLAlchemy>=1.4
29
+ Requires-Dist: alembic>=0.7
30
+ Requires-Dist: importlib_resources
31
+ Requires-Dist: pytz
32
+ Requires-Dist: setuptools
33
+ Requires-Dist: transaction
34
+ Requires-Dist: zope.component>=4.0.1
35
+ Requires-Dist: zope.interface
36
+ Requires-Dist: zope.sqlalchemy>=1.3
37
+ Provides-Extra: test
38
+ 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
+ Provides-Extra: pyramid
47
+ Requires-Dist: pyramid; extra == "pyramid"
48
+ Dynamic: license-file
49
+
50
+ ==================
51
+ risclog.sqlalchemy
52
+ ==================
53
+
54
+ risclog.sqlalchemy encapsulates `sqlalchemy`_ modelling infrastructure. It
55
+ eases the setup of (multi-)database environments and the usage of sqlalchemy
56
+ models by providing often used functionality on special classes.
57
+
58
+ This package is compatible with Python version 3.7 up to 3.11.
59
+
60
+ .. _`sqlalchemy`: http://www.sqlalchemy.org
61
+
62
+ =============================
63
+ Developing risclog.sqlalchemy
64
+ =============================
65
+
66
+ :Author:
67
+ `gocept <http://gocept.com/>`_ <mail@gocept.com>
68
+
69
+ :Outdated Online documentation:
70
+ https://pythonhosted.org/risclog.sqlalchemy/
71
+
72
+ :PyPI page:
73
+ https://pypi.org/project/risclog.sqlalchemy/
74
+
75
+ :Issue tracker:
76
+ https://github.com/gocept/risclog.sqlalchemy/issues/
77
+
78
+ :Source code:
79
+ https://github.com/gocept/risclog.sqlalchemy
80
+
81
+ :Current change log:
82
+ https://github.com/gocept/risclog.sqlalchemy/blob/master/CHANGES.rst
83
+
84
+
85
+ Running tests
86
+ =============
87
+
88
+ Simply run `uv run pytest` in the root of the repository.
89
+
90
+
91
+ Documentation
92
+ =============
93
+
94
+ In order to build the Sphinx documentation, run the following command with a
95
+ python, where ``sphinx`` is installed::
96
+
97
+ $ python setup.py build_sphinx
98
+
99
+
100
+ In order to upload the Sphinx documentation, run the following command with a
101
+ python, where ``sphinx-pypi-upload`` is installed::
102
+
103
+ $ python setup.py upload_sphinx
104
+
105
+ =================================
106
+ Change log for risclog.sqlalchemy
107
+ =================================
108
+
109
+ 9.0 (2026-08-24)
110
+ ================
111
+
112
+ - deps: Switch to uv, pyproject.toml and PEP-420 namespace package.
113
+
114
+
115
+ 8.0 (2025-12-02)
116
+ ================
117
+
118
+ - Add compatability to sqlalchemy 2. Break with compatability to sqlalchemy < 1.4.
119
+
120
+
121
+ 7.2 (2024-04-19)
122
+ ================
123
+
124
+ - Add json encoder for `datetime.time` objects.
125
+
126
+
127
+ 7.1 (2024-03-22)
128
+ ================
129
+
130
+ - Fix `sqlalchemy` 1.3 compatibility in `Database.empty()`.
131
+
132
+
133
+ 7.0 (2024-03-21)
134
+ ================
135
+
136
+ - Introduce new `RoutingSession` method `execute_with_bind()` to execute
137
+ statements with a specific bind.
138
+ - `RoutingSession.using_bind()` is now deprecated and kept for backward
139
+ compatibility.
140
+ Instead of a new session instance, it now returns a shim that maps a
141
+ minimal subset of session methods to the original session instance.
142
+ This change was necessary because the previous implementation of creating
143
+ a new session instance and copying all the original session's state
144
+ proved unstable when used with SQLAlchemy 1.4. (One reason being the new
145
+ autobegin feature of sessions changing interactions with `zope.sqlalchemy`.)
146
+
147
+
148
+ 6.1 (2024-03-12)
149
+ ================
150
+
151
+ - Add json encoder for `uuid.UUID` objects.
152
+
153
+ - Add `risclog.sqlalchemy.interfaces.Deleted` event which is fired when an
154
+ object is deleted from the database.
155
+
156
+
157
+ 6.0 (2023-09-26)
158
+ ================
159
+
160
+ - Introduce `ModelCache` that reduces the number of DB requests when dealing
161
+ with huge amounts of sqlalchemy models.
162
+
163
+ - Allow specifying `keep_session` and `expire_on_commit`.
164
+
165
+ - Drop support for Python 3.6.
166
+
167
+ - Drop support for SQLAlchemy 1.0 and 1.1.
168
+
169
+ - Add support for Python 3.10 and 3.11.
170
+
171
+ - Restrict supported SQLALchemy to < 2.
172
+
173
+
174
+ 5.1 (2021-04-28)
175
+ ================
176
+
177
+ Features
178
+ --------
179
+
180
+ - Ensure compatibility with ``SQLAlchemy >= 1.4``.
181
+
182
+ Other changes
183
+ -------------
184
+
185
+ - Use github actions as CI.
186
+
187
+
188
+ 5.0 (2020-11-03)
189
+ ================
190
+
191
+ Backward incompatible changes
192
+ -----------------------------
193
+
194
+ - Drop support for Python 2.
195
+
196
+ - Drop the ``python2`` extra in ``setup.py``.
197
+
198
+ Features
199
+ --------
200
+
201
+ - No longer constraint to ``zope.component < 4.4.1`` (introduced in 3.0).
202
+
203
+
204
+ 4.0 (2020-02-17)
205
+ ================
206
+
207
+ Backward incompatible changes
208
+ -----------------------------
209
+
210
+ - Add support for ``zope.sqlalchemy >= 1.3`` by requiring at least this version.
211
+ (Older versions only supported ``zope.sqlalchemy <= 1.2``.)
212
+
213
+ - Drop support for PyPy, PyPy3, Python 3.4 and 3.5.
214
+
215
+ Other changes
216
+ -------------
217
+
218
+ - Add support for Python 3.7, 3.8, 3.9a3.
219
+
220
+ - Migrate to Github.
221
+
222
+
223
+ 3.0 (2018-01-16)
224
+ ================
225
+
226
+ - Drop support for Python 3.3.
227
+
228
+ - Reintroduce `RoutingSession.using_bind` as it is needed for executing queries
229
+ in multi database environments. It was removed in version `2.0`.
230
+
231
+ - Pin to ``zope.component < 4.4.1`` for now as we are using a private variable
232
+ from this package which has been removed lately.
233
+
234
+
235
+ 2.3 (2017-04-06)
236
+ ================
237
+
238
+ - Add the fixture ``.fixtures.database__selenium_testing`` to switch SQLAlchemy
239
+ session handling to into the same way the live server does it. Using this
240
+ fixture leads to `DetachedInstanceError` exceptions when using a database
241
+ object after the commit. It has to be fetched again from the database.
242
+
243
+ - Omit files from sdist which are related to buildout, testing or mercurial.
244
+
245
+ 2.2 (2017-01-12)
246
+ ================
247
+
248
+ - Support Python 3.6 and PyPy3.
249
+
250
+ - Fix `setup.py` to no longer use absolute paths.
251
+
252
+
253
+ 2.1 (2016-01-25)
254
+ ================
255
+
256
+ - Add compatibility to `pypy`.
257
+
258
+ Also removed explicit dependency to `psycopg2` as it's a PostgreSQL specific
259
+ dependency and not compatible with pypy. You will need `psycopg2cffi` in
260
+ order to run `risclog.sqlalchemy` with `pypy`.
261
+
262
+
263
+ 2.0 (2015-12-18)
264
+ ================
265
+
266
+ - Removed ``RoutingSession.using_bind``, require SQLAlchemy >= 1.0. (#13968)
267
+
268
+ - Updated API calls to alembic, require alembic >= 0.7. (#13968)
269
+
270
+ - Added documentation. (#13952)
271
+
272
+
273
+ 1.8 (2015-09-29)
274
+ ================
275
+
276
+ - Officially supporting Python 3.3 up to 3.5.
277
+
278
+ - Set maximum supported version numbers of ``alembic`` and ``SQLALchemy``
279
+ in `setup.py`
280
+
281
+
282
+ 1.7.1 (2014-10-15)
283
+ ==================
284
+
285
+ - Fix bug in testing mode detection so it works with sqlite, too.
286
+
287
+
288
+ 1.7 (2014-07-29)
289
+ ================
290
+
291
+ - Have ``.model.Object.create`` use the ``**kw`` constructor instead of
292
+ performing setattr itself.
293
+
294
+ - Made commit in db.empty optional.
295
+
296
+
297
+ 1.6 (2014-06-23)
298
+ ================
299
+
300
+ - Make test setup/teardown a bit more independent from the IDatabase utility.
301
+ - Made pyramid dependent code optional, because it is an optional requirement.
302
+
303
+
304
+ 1.5.1 (2014-03-31)
305
+ ==================
306
+
307
+ - Moved the project to bitbucket.org and prepared for public release.
308
+
309
+
310
+ 1.5 (2014-03-06)
311
+ ================
312
+
313
+ - Adjust test dependency for external projects, so pyramid is not required.
314
+ (#1458)
315
+
316
+
317
+ 1.4 (2014-01-27)
318
+ ================
319
+
320
+ - Do not truncate `spatial_ref_sys` when emptying entire database. (#13144)
321
+
322
+
323
+ 1.3 (2013-12-18)
324
+ ================
325
+
326
+ - Do not truncate `alembic_versions` when emptying entire database (using
327
+ `db.empty(engine)`)
328
+
329
+ - Fix create_defaults, so it can be used with multiple engines. (#1172)
330
+
331
+
332
+ 1.2 (2013-12-13)
333
+ ================
334
+
335
+ - Fixed setup.py
336
+
337
+
338
+ 1.1 (2013-12-13)
339
+ ================
340
+
341
+ - Allow ``.db.Database.empty()`` to not restart sequences. (This can be
342
+ necassary if the user is not allowed to call `ALTER SEQUENCE`.)
343
+
344
+ - Create factory for JSON renderer, so it can be customized via arguments.
345
+ (#1037)
346
+
347
+
348
+ 1.0 (2013-12-11)
349
+ ================
350
+
351
+ - CAUTION: Backward incompatible changes to provide multiple database
352
+ support. You need to change:
353
+
354
+ * Use the ``pyramid`` extra to use the pyramid serializers and call
355
+ ``.serializer.patch()`` by yourself.
356
+
357
+ * Changes in `.model`:
358
+
359
+ + Use `.model.declarative_base(cls)` to register a class as SQLALchemy
360
+ ``declarative_base``.
361
+
362
+ + Use your own declarative_base as `.model.Object` has been dropped.
363
+
364
+ + Create your own `ReflectedObject` as `.model.ReflectedObject` has been
365
+ dropped.
366
+
367
+ * Changes in `.db.Database`:
368
+
369
+ + To get an instance use `.db.get_database(testing=<True|False>)`.
370
+
371
+ + To register a database with the utility use ``register_engine``.
372
+
373
+ + ``empty`` now expects to get the engine as first argument and allows to
374
+ cadcade via (``cascade=True``).
375
+
376
+
377
+ + ``_verify`` was removed, use ``_verify_engine`` now.
378
+
379
+ + ``setup_utility`` was removed, it is now done in ``__init__``.
380
+
381
+ + To access former ``engine``` attribute use ``get_engine``.
382
+
383
+ + ``close`` was renamed to ``drop_engine``.
384
+
385
+ + To create all tables for a database use ``create_all``.
386
+
387
+ * Changes in `.testing`:
388
+
389
+ + ``setUpDB`` lost its first argument as it was not used.
390
+
391
+ + ``setUp`` now expects a dict or ``None``, see its docstring.
392
+
393
+ - Provide a way to insert default values for new created models. (#1137)
394
+
395
+ - Added support for schema migrations with alembic.
396
+
397
+ - Dropped support for `Python 2.6`.
398
+
399
+ - Added convenience functions to create `py.test` database fixtures.
400
+
401
+ - Declared `pyramid` as test dependency so tests only need the ``test``
402
+ extra.
403
+
404
+ - Declared testing dependency on `plone.testing[test]` since we use
405
+ `plone.testing.zca` which imports that ``test`` extra's dependencies.
406
+
407
+
408
+ 0.6 (2013-06-27)
409
+ ================
410
+
411
+ - Added convenience methods on `.db.Database` for teardown in tests.
412
+
413
+ - Updated to Buildout 2.
414
+
415
+ - Using py.test as testrunner.
416
+
417
+ - Added Python 3.3 compatibility.
418
+
419
+
420
+ 0.5 (2013-06-14)
421
+ ================
422
+
423
+ - Add Database methods for setting up a database utility and emptying tables.
424
+
425
+ - Add testing layer that sets up a database utility (requires plone.testing).
426
+
427
+
428
+ 0.4 (2013-06-07)
429
+ ================
430
+
431
+ - Add helper to provide transparent json encoding of sqlalchemy mapped objects,
432
+ dates, datetimes and decimals. (#39)
433
+
434
+ - Add `create_defaults` class method on base model which can be used to create
435
+ test data into the database.
436
+
437
+
438
+ 0.3 (2013-06-04)
439
+ ================
440
+
441
+ - Repair db setup for reflected and unreflected objects.
442
+
443
+
444
+ 0.2 (2013-06-04)
445
+ ================
446
+
447
+ - Add unreflected Object model next to the reflected Object model.
448
+
449
+
450
+ 0.1 (2013-06-03)
451
+ ================
452
+
453
+ initial release
@@ -4,20 +4,20 @@ import sys
4
4
  # If extensions (or modules to document with autodoc) are in another directory,
5
5
  # add these directories to sys.path here. If the directory is relative to the
6
6
  # documentation root, use os.path.abspath to make it absolute, like shown here.
7
- sys.path.insert(0, os.path.abspath('_themes'))
7
+ sys.path.insert(0, os.path.abspath("_themes"))
8
8
  extensions = []
9
9
 
10
- source_suffix = '.txt'
11
- master_doc = 'index'
12
- exclude_patterns = ['_build']
10
+ source_suffix = ".txt"
11
+ master_doc = "index"
12
+ exclude_patterns = ["_build"]
13
13
 
14
- project = u'risclog.sqlalchemy'
15
- copyright = u"""\
14
+ project = "risclog.sqlalchemy"
15
+ copyright = """\
16
16
  2011 - 2017 Zope Foundation and Contributors.
17
17
  <a href="http://sphinx.pocoo.org/">Sphinx</a>-Theme adapted from
18
18
  <a href="http://jinja.pocoo.org/docs/">Jinja</a>
19
19
  """
20
- version = '2.0' # XXX determine automatically
20
+ version = "2.0" # XXX determine automatically
21
21
  release = version
22
22
 
23
- pygments_style = 'sphinx'
23
+ pygments_style = "sphinx"
@@ -0,0 +1,105 @@
1
+ [build-system]
2
+ requires = ["setuptools>=40.6.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "risclog.sqlalchemy"
7
+ version = "9.0"
8
+ description = "Encapsulate sqlalchemy modelling infrastructure."
9
+ keywords = ["sqlalchemy", "alembic", "model", "infrastructure", "utility"]
10
+ requires-python = ">=3.7"
11
+ authors = [{ name = "gocept", email = "mail@gocept.com" }]
12
+ license = { text = "ZPL 2.1" }
13
+ urls = { Homepage = "https://github.com/gocept/risclog.sqlalchemy" }
14
+ dynamic = ["readme"]
15
+ classifiers = [
16
+ "Development Status :: 5 - Production/Stable",
17
+ "Framework :: Pyramid",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved",
20
+ "License :: OSI Approved :: Zope Public License",
21
+ "Natural Language :: English",
22
+ "Operating System :: OS Independent",
23
+ "Programming Language :: Python",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3.10",
26
+ "Programming Language :: Python :: 3.12",
27
+ "Programming Language :: Python :: Implementation",
28
+ "Programming Language :: Python :: Implementation :: CPython",
29
+ "Topic :: Database",
30
+ "Topic :: Software Development :: Libraries",
31
+ "Topic :: Software Development :: Libraries :: Python Modules",
32
+ ]
33
+ dependencies = [
34
+ "SQLAlchemy >= 1.4",
35
+ "alembic >= 0.7",
36
+ "importlib_resources",
37
+ "pytz",
38
+ "setuptools",
39
+ "transaction",
40
+ "zope.component >= 4.0.1",
41
+ "zope.interface",
42
+ "zope.sqlalchemy >= 1.3",
43
+ ]
44
+
45
+ [project.optional-dependencies]
46
+ test = ["gocept.testdb"]
47
+ self-test = [
48
+ "mock",
49
+ "pyramid",
50
+ "pytest",
51
+ "psycopg2-binary",
52
+ "greenlet",
53
+ "pytest-cov",
54
+ ]
55
+ pyramid = ["pyramid"]
56
+
57
+ [tool.setuptools]
58
+ include-package-data = true
59
+
60
+ [tool.setuptools.packages.find]
61
+ where = ["src"]
62
+ include = ["risclog.*"]
63
+
64
+ [tool.setuptools.dynamic]
65
+ readme = { file = ["README.rst", "HACKING.rst", "CHANGES.rst"], content-type = "text/x-rst" }
66
+
67
+ [tool.coverage.run]
68
+ relative_files = true
69
+ parallel = true
70
+ branch = true
71
+ source = ["risclog.sqlalchemy"]
72
+
73
+ [tool.coverage.paths]
74
+ source = ["src", ".pytest/*/site-packages"]
75
+
76
+ [tool.coverage.html]
77
+ directory = "coverage-report"
78
+
79
+ [tool.coverage.report]
80
+ precision = 2
81
+ show_missing = true
82
+ skip_covered = true
83
+ exclude_lines = [
84
+ # a more strict default pragma
85
+ "\\# pragma: no cover\\b",
86
+
87
+ # allow defensive code
88
+ "^\\s*raise AssertionError\\b",
89
+ "^\\s*raise NotImplementedError\\b",
90
+ "^\\s*return NotImplemented\\b",
91
+ "^\\s*raise$",
92
+
93
+ # typing-related code
94
+ "^if (False|TYPE_CHECKING):",
95
+ ": \\.\\.\\.(\\s*#.*)?$",
96
+ "^ +\\.\\.\\.$",
97
+ "-> ['\"]?NoReturn['\"]?:",
98
+ ]
99
+
100
+ [tool.ruff]
101
+ target-version = "py312"
102
+ line-length = 79
103
+
104
+ [tool.check-manifest]
105
+ ignore-bad-ideas = ["*.mo"]