spinta 0.2.dev25__tar.gz → 0.2.dev26__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.
- {spinta-0.2.dev25 → spinta-0.2.dev26}/PKG-INFO +1 -1
- {spinta-0.2.dev25 → spinta-0.2.dev26}/pyproject.toml +1 -1
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/helpers.py +1 -1
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/load.py +2 -1
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/wait.py +2 -2
- spinta-0.2.dev26/spinta/backends/postgresql/sqlalchemy.py +38 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/comment.py +14 -8
- spinta-0.2.dev26/spinta/cli/uncomment.py +172 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/components.py +2 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/read.py +5 -1
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +26 -2
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +33 -26
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/cast.py +89 -19
- spinta-0.2.dev26/spinta/datasets/backends/sql/commands/read.py +111 -0
- spinta-0.2.dev26/spinta/datasets/backends/sql/helpers.py +61 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/helpers.py +11 -2
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/exceptions.py +17 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/helpers.py +2 -2
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/pytest.py +6 -5
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/helpers.py +53 -3
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/model.py +20 -2
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/urlparams.py +85 -2
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/url.py +10 -0
- spinta-0.2.dev25/spinta/backends/postgresql/sqlalchemy.py +0 -19
- spinta-0.2.dev25/spinta/cli/uncomment.py +0 -110
- spinta-0.2.dev25/spinta/datasets/backends/sql/commands/read.py +0 -161
- spinta-0.2.dev25/spinta/datasets/backends/sql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/LICENSE +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/README.rst +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/__main__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/file.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/python.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/rc/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/rc/signature_adapter.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/soap_plugins.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/inspect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/schema.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/validators.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/asgi.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/decode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/validate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/validate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/array/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/array/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/file/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/file/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/object/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/object/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/column.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/redirect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/summary.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/validate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/files.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/extractors.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/cast.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/citus.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/name.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/name.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/redirect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/type.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/validate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/backref/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/denorm/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/validate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/text/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/text/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/admin.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/data.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/get.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/registry.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/add_local_ids.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/citus_shard.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/enums.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/remove_local_ids.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/data.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/enums.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/errors.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/message.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/delete.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/error.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/state.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/sync.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/utils.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/core.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/registry.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/store.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/api_helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/enum.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/typer.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/registry.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/schemas.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/inspect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/keymap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/main.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/pii.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/pull.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/push.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/server.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/show.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/sync.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/upgrade.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/client.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/search.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/version.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/write.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/compat.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/config.yml +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/access.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/context.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/enums.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/column.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/error.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/inspect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/wipe.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/enums.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/merge.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/redis.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/sync.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/utils.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dispatcher.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/fetcher.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/rdf/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/rdf/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/commands.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/spyna.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/urlparams.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/handlers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/logging_config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_ns.yml +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_schema/version.yml +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_schema.yml +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_txn.yml +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/sync.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/error.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/init.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/inspect.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/auth.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/backend.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/read.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/openapi_config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/openapi_generator.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/formats/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/formats/gsheets.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd2/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/configure.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/migrate.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/sync.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/methods.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/middlewares.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/ufuncts.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/nodes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/renderer.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/spyna.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/base.html +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/data.html +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/error.html +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/form.html +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/citus.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/cli.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/client.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/context.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/csv.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/data.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/datasets.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/dtypes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/manifest.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/migration.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/push.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/request.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/tabular.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/types/geometry.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/utils.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/resolve.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/backref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/backref/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/command.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/datatype.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/decode.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/constants.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/inherit/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/inherit/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/namespace.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/partial/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/partial/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/link.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/resolve.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/store.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/check.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/load.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/typing.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/binds.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/common.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/components.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/helpers.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/__init__.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/aiotools.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/changes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/collections.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/config.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/data.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/encoding.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/enums.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/errors.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/functools.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/idgen.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/imports.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/itertools.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/json.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/naming.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/nestedstruct.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/nin.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/passwords.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/path.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/refs.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/response.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/schema.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/scopes.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/sqlalchemy.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/sqlite.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/starlette.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/streams.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/tree.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/types.py +0 -0
- {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/units.py +0 -0
|
@@ -91,7 +91,7 @@ def get_select_tree(
|
|
|
91
91
|
select = list(select.keys())
|
|
92
92
|
|
|
93
93
|
select = _apply_always_show_id(context, action, select)
|
|
94
|
-
if select is None and action in (Action.GETALL, Action.SEARCH):
|
|
94
|
+
if select is None and action in (Action.GETALL, Action.SEARCH, Action.GETONE):
|
|
95
95
|
# If select is not given, select everything.
|
|
96
96
|
select = {"*": {}}
|
|
97
97
|
return flat_select_to_nested(select)
|
|
@@ -5,6 +5,7 @@ import sqlalchemy as sa
|
|
|
5
5
|
from spinta import commands
|
|
6
6
|
from spinta.backends.postgresql.components import PostgreSQL
|
|
7
7
|
from spinta.backends.postgresql.helpers.name import PG_NAMING_CONVENTION
|
|
8
|
+
from spinta.backends.postgresql.sqlalchemy import create_postgresql_engine
|
|
8
9
|
from spinta.components import Context
|
|
9
10
|
from spinta.utils.sqlalchemy import get_metadata_naming_convention
|
|
10
11
|
|
|
@@ -12,7 +13,7 @@ from spinta.utils.sqlalchemy import get_metadata_naming_convention
|
|
|
12
13
|
@commands.load.register(Context, PostgreSQL, dict)
|
|
13
14
|
def load(context: Context, backend: PostgreSQL, config: Dict[str, Any]):
|
|
14
15
|
backend.dsn = config["dsn"]
|
|
15
|
-
backend.engine =
|
|
16
|
+
backend.engine = create_postgresql_engine(backend.dsn, echo=False)
|
|
16
17
|
backend.schema = sa.MetaData(backend.engine, naming_convention=get_metadata_naming_convention(PG_NAMING_CONVENTION))
|
|
17
18
|
backend.tables = {}
|
|
18
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import sqlalchemy as sa
|
|
2
1
|
import sqlalchemy.exc
|
|
3
2
|
|
|
4
3
|
from spinta import commands
|
|
4
|
+
from spinta.backends.postgresql.sqlalchemy import create_postgresql_engine
|
|
5
5
|
from spinta.components import Context
|
|
6
6
|
from spinta.backends.postgresql.components import PostgreSQL
|
|
7
7
|
|
|
@@ -10,7 +10,7 @@ from spinta.backends.postgresql.components import PostgreSQL
|
|
|
10
10
|
def wait(context: Context, backend: PostgreSQL, *, fail: bool = False) -> bool:
|
|
11
11
|
rc = context.get("rc")
|
|
12
12
|
dsn = rc.get("backends", backend.name, "dsn", required=True)
|
|
13
|
-
engine =
|
|
13
|
+
engine = create_postgresql_engine(dsn, connect_args={"connect_timeout": 0})
|
|
14
14
|
try:
|
|
15
15
|
conn = engine.connect()
|
|
16
16
|
except sqlalchemy.exc.OperationalError:
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import sqlalchemy as sa
|
|
2
|
+
|
|
3
|
+
from sqlalchemy.ext.compiler import compiles
|
|
4
|
+
from sqlalchemy.sql.expression import FunctionElement
|
|
5
|
+
from sqlalchemy.dialects.mssql.base import ischema_names
|
|
6
|
+
from geoalchemy2.types import Geometry
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
ischema_names["geometry"] = Geometry
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class utcnow(FunctionElement):
|
|
13
|
+
inherit_cache = True
|
|
14
|
+
type = sa.DateTime()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@compiles(utcnow, "postgresql")
|
|
18
|
+
def pg_utcnow(element, compiler, **kw):
|
|
19
|
+
return "TIMEZONE('utc', CURRENT_TIMESTAMP)"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def create_postgresql_engine(uri: str, connect_args: dict | None = None, **kwargs) -> sa.engine.Engine:
|
|
23
|
+
default_kwargs = {
|
|
24
|
+
"pool_pre_ping": True,
|
|
25
|
+
"pool_recycle": 900,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
default_kwargs.update(kwargs)
|
|
29
|
+
default_connect_args = {
|
|
30
|
+
"keepalives": 1,
|
|
31
|
+
"keepalives_idle": 60,
|
|
32
|
+
"keepalives_interval": 10,
|
|
33
|
+
"keepalives_count": 5,
|
|
34
|
+
}
|
|
35
|
+
if connect_args:
|
|
36
|
+
default_connect_args.update(connect_args)
|
|
37
|
+
|
|
38
|
+
return sa.create_engine(uri, connect_args=default_connect_args, **default_kwargs)
|
|
@@ -5,15 +5,19 @@ from typer import echo
|
|
|
5
5
|
|
|
6
6
|
from spinta.cli.helpers.enums import CommentPart
|
|
7
7
|
from spinta.cli.helpers.store import load_manifest
|
|
8
|
-
from spinta.components import Context
|
|
8
|
+
from spinta.components import Context
|
|
9
9
|
from spinta.core.context import configure_context
|
|
10
10
|
from spinta.core.enums import Access
|
|
11
|
+
from spinta.dimensions.comments.components import Comment
|
|
11
12
|
from spinta.manifests.components import Manifest
|
|
12
13
|
from spinta.manifests.tabular.helpers import datasets_to_tabular
|
|
13
14
|
from spinta.manifests.tabular.helpers import render_tabular_manifest_rows
|
|
14
15
|
from spinta.manifests.tabular.helpers import write_tabular_manifest
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
RESTORE_COMMENT_PREFIXES = ("update", "insert")
|
|
19
|
+
|
|
20
|
+
|
|
17
21
|
def comment(
|
|
18
22
|
ctx: TyperContext,
|
|
19
23
|
part: CommentPart = Argument(None, help="Part to comment"),
|
|
@@ -79,7 +83,7 @@ def _update_systemic_comments(
|
|
|
79
83
|
uri: str | None = None,
|
|
80
84
|
description: str | None = None,
|
|
81
85
|
) -> None:
|
|
82
|
-
"""Update author/uri/description on
|
|
86
|
+
"""Update author/uri/description on systemic restore comments (refs and bases)."""
|
|
83
87
|
from spinta import commands
|
|
84
88
|
|
|
85
89
|
if all(argument is None for argument in [author, uri, description]):
|
|
@@ -87,22 +91,24 @@ def _update_systemic_comments(
|
|
|
87
91
|
|
|
88
92
|
models = commands.get_models(context, manifest)
|
|
89
93
|
for model in models.values():
|
|
94
|
+
_patch_restore_comments(model.comments, author=author, uri=uri, description=description)
|
|
90
95
|
for prop in model.properties.values():
|
|
91
|
-
|
|
96
|
+
_patch_restore_comments(prop.comments, author=author, uri=uri, description=description)
|
|
92
97
|
|
|
93
98
|
|
|
94
|
-
def
|
|
95
|
-
|
|
99
|
+
def _patch_restore_comments(
|
|
100
|
+
comments: list[Comment] | None,
|
|
96
101
|
*,
|
|
97
102
|
author: str | None,
|
|
98
103
|
uri: str | None,
|
|
99
104
|
description: str | None,
|
|
100
105
|
) -> None:
|
|
101
|
-
if not
|
|
106
|
+
if not comments:
|
|
102
107
|
return
|
|
103
108
|
|
|
104
|
-
for comment in
|
|
105
|
-
|
|
109
|
+
for comment in comments:
|
|
110
|
+
prepare = comment.prepare or ""
|
|
111
|
+
if not prepare.startswith(RESTORE_COMMENT_PREFIXES):
|
|
106
112
|
continue
|
|
107
113
|
|
|
108
114
|
if author is not None:
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
import pathlib
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
from typer import Argument
|
|
6
|
+
from typer import Context as TyperContext
|
|
7
|
+
from typer import Option
|
|
8
|
+
from typer import echo
|
|
9
|
+
|
|
10
|
+
from spinta.components import Context
|
|
11
|
+
from spinta.manifests.tabular.components import MANIFEST_COLUMNS
|
|
12
|
+
from spinta.manifests.tabular.components import ManifestRow
|
|
13
|
+
from spinta.manifests.tabular.helpers import render_tabular_manifest_rows
|
|
14
|
+
from spinta.manifests.tabular.helpers import torow
|
|
15
|
+
from spinta.manifests.tabular.helpers import write_tabular_manifest
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
UPDATE_FUNCTION = "update"
|
|
19
|
+
COLUMN_TYPE_COMMENT = "comment"
|
|
20
|
+
INSERT_FUNCTION = "insert"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def uncomment(
|
|
24
|
+
ctx: TyperContext,
|
|
25
|
+
uri: str | None = Option(None, "--uri", help="Only restore comments that carry this URI tag"),
|
|
26
|
+
output: str | None = Option(None, "-o", "--output", help="Output tabular manifest in a specified file"),
|
|
27
|
+
manifests: list[str] = Argument(None, help="Source manifest files"),
|
|
28
|
+
):
|
|
29
|
+
"""Restore commented-out properties."""
|
|
30
|
+
context: Context = ctx.obj
|
|
31
|
+
uncomment_manifest(context, uri=uri, output=output, manifests=manifests)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def uncomment_manifest(
|
|
35
|
+
context: Context,
|
|
36
|
+
uri: str | None = None,
|
|
37
|
+
output: str | None = None,
|
|
38
|
+
manifests: list[str] | None = None,
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Read raw CSV rows, remove `update`, `insert` comments, and write the result."""
|
|
41
|
+
rows = _read_raw_manifest_rows(manifests or [])
|
|
42
|
+
result = _uncomment_rows(rows, uri_filter=uri)
|
|
43
|
+
if output:
|
|
44
|
+
write_tabular_manifest(context, output, iter(result))
|
|
45
|
+
else:
|
|
46
|
+
echo(render_tabular_manifest_rows(iter(result)))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _read_raw_manifest_rows(manifests: list[str]) -> list[ManifestRow]:
|
|
50
|
+
"""Read CSV manifest files as raw dicts, normalising to MANIFEST_COLUMNS keys."""
|
|
51
|
+
rows = []
|
|
52
|
+
for path in manifests:
|
|
53
|
+
with pathlib.Path(path).open(encoding="utf-8-sig") as file:
|
|
54
|
+
reader = csv.DictReader(file)
|
|
55
|
+
for raw in reader:
|
|
56
|
+
rows.append(torow(MANIFEST_COLUMNS, raw))
|
|
57
|
+
return rows
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _parse_function_fields(prepare: str, func_name: str) -> dict[str, str]:
|
|
61
|
+
"""Parse 'func_name(key1:val1, key2:val2, ...)' into {'key1': 'val1', 'key2': 'val2', ...}.
|
|
62
|
+
|
|
63
|
+
Splits on commas only when followed by a word-colon pattern, so values containing
|
|
64
|
+
commas inside brackets (e.g. ref:example2/City[id, name]) are handled correctly.
|
|
65
|
+
"""
|
|
66
|
+
match = re.match(rf"{func_name}\((.+)\)\s*$", (prepare or "").strip())
|
|
67
|
+
if not match:
|
|
68
|
+
return {}
|
|
69
|
+
parts = re.split(r",\s*(?=\w+:)", match.group(1))
|
|
70
|
+
result = {}
|
|
71
|
+
for part in parts:
|
|
72
|
+
key, _, value = part.partition(":")
|
|
73
|
+
result[key.strip()] = value.strip().strip('"')
|
|
74
|
+
return result
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _parse_update_fields(prepare: str) -> dict[str, str]:
|
|
78
|
+
return _parse_function_fields(prepare, UPDATE_FUNCTION)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _parse_insert_fields(prepare: str) -> dict[str, str]:
|
|
82
|
+
return _parse_function_fields(prepare, INSERT_FUNCTION)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _is_restore_comment(row: ManifestRow, func_name: str) -> bool:
|
|
86
|
+
prepare = row.get("prepare") or ""
|
|
87
|
+
return row.get("type") == COLUMN_TYPE_COMMENT and prepare.startswith(func_name)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _insert_base_resets(result: list[ManifestRow]) -> list[ManifestRow]:
|
|
91
|
+
"""Insert `/` reset rows where base context would leak from a previous
|
|
92
|
+
model into a model that has no base row directly above it."""
|
|
93
|
+
fixed: list[ManifestRow] = []
|
|
94
|
+
active_base: str | None = None
|
|
95
|
+
base_seen_since_last_model: bool = False
|
|
96
|
+
|
|
97
|
+
for row in result:
|
|
98
|
+
is_base_row = row.get("base") and not row.get("model") and not row.get("property")
|
|
99
|
+
is_model_row = bool(row.get("model"))
|
|
100
|
+
|
|
101
|
+
if is_base_row:
|
|
102
|
+
active_base = row["base"]
|
|
103
|
+
base_seen_since_last_model = True
|
|
104
|
+
fixed.append(row)
|
|
105
|
+
elif is_model_row:
|
|
106
|
+
if not base_seen_since_last_model and active_base and active_base != "/":
|
|
107
|
+
# No base row immediately above this model, but a base context
|
|
108
|
+
# is still active from a previous model. Insert `/` to break it.
|
|
109
|
+
reset_row = {col: "" for col in row.keys()}
|
|
110
|
+
reset_row["base"] = "/"
|
|
111
|
+
fixed.append(reset_row)
|
|
112
|
+
active_base = "/"
|
|
113
|
+
base_seen_since_last_model = False
|
|
114
|
+
fixed.append(row)
|
|
115
|
+
else:
|
|
116
|
+
fixed.append(row)
|
|
117
|
+
|
|
118
|
+
return fixed
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _uncomment_rows(rows: list[ManifestRow], uri_filter: str | None) -> list[ManifestRow]:
|
|
122
|
+
"""
|
|
123
|
+
Walk rows in order. When an `update` or `insert` comment is found (and passes the URI filter),
|
|
124
|
+
patch the most recent property row in `update` case, insert a new base row before the model in `insert` case and drop the comment row.
|
|
125
|
+
"""
|
|
126
|
+
result: list[ManifestRow] = []
|
|
127
|
+
last_property_index: int | None = None
|
|
128
|
+
last_model_index: int | None = None
|
|
129
|
+
base_was_inserted: bool = False
|
|
130
|
+
|
|
131
|
+
for row in rows:
|
|
132
|
+
if _is_restore_comment(row, UPDATE_FUNCTION) or _is_restore_comment(row, INSERT_FUNCTION):
|
|
133
|
+
# Restore only rows that match the `uri` if it is given by input;
|
|
134
|
+
if uri_filter is not None and row.get("uri") != uri_filter:
|
|
135
|
+
result.append(row)
|
|
136
|
+
continue
|
|
137
|
+
if _is_restore_comment(row, UPDATE_FUNCTION):
|
|
138
|
+
fields = _parse_update_fields(row.get("prepare", ""))
|
|
139
|
+
if fields and last_property_index is not None:
|
|
140
|
+
prop_row: dict = dict(result[last_property_index])
|
|
141
|
+
for key, value in fields.items():
|
|
142
|
+
prop_row[key] = value
|
|
143
|
+
prop_row["level"] = row.get("level") or ""
|
|
144
|
+
result[last_property_index] = prop_row
|
|
145
|
+
|
|
146
|
+
elif _is_restore_comment(row, INSERT_FUNCTION):
|
|
147
|
+
fields = _parse_insert_fields(row.get("prepare", ""))
|
|
148
|
+
if fields and last_model_index is not None:
|
|
149
|
+
base_row: dict = {col: "" for col in row.keys()}
|
|
150
|
+
for key, value in fields.items():
|
|
151
|
+
base_row[key] = value
|
|
152
|
+
if row.get("level"):
|
|
153
|
+
model_row = result[last_model_index]
|
|
154
|
+
model_row["level"] = row.get("level")
|
|
155
|
+
result[last_model_index] = model_row
|
|
156
|
+
result.insert(last_model_index, base_row)
|
|
157
|
+
last_model_index += 1
|
|
158
|
+
base_was_inserted = True
|
|
159
|
+
|
|
160
|
+
else:
|
|
161
|
+
# If it's not an `update` or `insert` comment, append as-is;
|
|
162
|
+
if row.get("model"):
|
|
163
|
+
last_model_index = len(result)
|
|
164
|
+
last_property_index = None
|
|
165
|
+
if row.get("property"):
|
|
166
|
+
last_property_index = len(result)
|
|
167
|
+
result.append(row)
|
|
168
|
+
|
|
169
|
+
if base_was_inserted:
|
|
170
|
+
result = _insert_base_resets(result)
|
|
171
|
+
|
|
172
|
+
return result
|
|
@@ -929,6 +929,8 @@ class UrlParams:
|
|
|
929
929
|
select_props: Optional[Dict[str, Union[Expr, Bind]]] = None
|
|
930
930
|
select_funcs: Optional[Dict[str, FuncProperty]] = None
|
|
931
931
|
|
|
932
|
+
custom_scope: str | None = None
|
|
933
|
+
|
|
932
934
|
sort: List[dict] = None
|
|
933
935
|
limit: Optional[int] = None
|
|
934
936
|
offset: Optional[int] = None
|
|
@@ -31,6 +31,7 @@ from spinta.ufuncs.querybuilder.components import Selected
|
|
|
31
31
|
from spinta.ufuncs.helpers import merge_formulas
|
|
32
32
|
from spinta.ufuncs.resultbuilder.components import ResultBuilder
|
|
33
33
|
from spinta.utils.data import take
|
|
34
|
+
from spinta.utils.nestedstruct import flat_dicts_to_nested, extract_list_property_names
|
|
34
35
|
from spinta.utils.schema import NA
|
|
35
36
|
|
|
36
37
|
OBJECT_DTYPE = "object"
|
|
@@ -268,12 +269,14 @@ def dask_get_all(
|
|
|
268
269
|
where = env.execute(expr)
|
|
269
270
|
qry = env.build(where)
|
|
270
271
|
|
|
272
|
+
env_selected = env.selected
|
|
273
|
+
list_keys = extract_list_property_names(model, env_selected.keys())
|
|
271
274
|
for i, row in qry.iterrows():
|
|
272
275
|
row = row.to_dict()
|
|
273
276
|
res = {
|
|
274
277
|
"_type": model.model_type(),
|
|
275
278
|
}
|
|
276
|
-
for key, sel in
|
|
279
|
+
for key, sel in env_selected.items():
|
|
277
280
|
val = _get_row_value(context, row, sel, env.params)
|
|
278
281
|
if sel.prop:
|
|
279
282
|
if isinstance(sel.prop.dtype, PrimaryKey):
|
|
@@ -288,6 +291,7 @@ def dask_get_all(
|
|
|
288
291
|
elif is_custom_id_prop(sel.prop) and isinstance(val, list) and not isinstance(sel.prop.dtype, Base32):
|
|
289
292
|
val = encode_composite_string_id(val, model.external.pkeys)
|
|
290
293
|
res[key] = val
|
|
294
|
+
res = flat_dicts_to_nested(res, list_keys=list_keys)
|
|
291
295
|
res = commands.cast_backend_to_python(context, model, backend, res, extra_properties=extra_properties)
|
|
292
296
|
yield res
|
|
293
297
|
|
{spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/components.py
RENAMED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import dataclasses
|
|
3
4
|
from typing import Any
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
import pandas as pd
|
|
7
|
+
from dask.dataframe import DataFrame, from_delayed
|
|
8
|
+
from dask import delayed
|
|
6
9
|
|
|
7
10
|
from spinta.components import Model, Property
|
|
8
11
|
from spinta.core.ufuncs import Env, Expr
|
|
9
12
|
|
|
10
13
|
from spinta.exceptions import UnknownMethod
|
|
11
14
|
from spinta.ufuncs.propertyresolver.components import PropertyResolver
|
|
12
|
-
from spinta.ufuncs.querybuilder.components import Selected
|
|
15
|
+
from spinta.ufuncs.querybuilder.components import Selected, Func
|
|
13
16
|
from spinta.utils.schema import NA
|
|
14
17
|
from spinta.datasets.backends.dataframe.components import DaskBackend
|
|
15
18
|
|
|
@@ -33,6 +36,7 @@ class DaskDataFrameQueryBuilder(Env):
|
|
|
33
36
|
offset=None,
|
|
34
37
|
params=params,
|
|
35
38
|
url_query=None,
|
|
39
|
+
count=False,
|
|
36
40
|
)
|
|
37
41
|
|
|
38
42
|
def build(self, where):
|
|
@@ -48,6 +52,18 @@ class DaskDataFrameQueryBuilder(Env):
|
|
|
48
52
|
|
|
49
53
|
if where is not None:
|
|
50
54
|
df = df[where]
|
|
55
|
+
|
|
56
|
+
if self.count:
|
|
57
|
+
# To only return one row, we need to calculate the count first and then transform it back to dataframe
|
|
58
|
+
# Otherwise iterrows will duplicate the result with the number of rows equal to count.
|
|
59
|
+
# Dask allows delayed calculations which ar lazy.
|
|
60
|
+
|
|
61
|
+
# Create a delayed scalar function that returns the count of the dataframe as a new one-column dataframe
|
|
62
|
+
count_scalar = delayed(lambda value: pd.DataFrame({RESERVED_COUNT_PROP: [value]}))(
|
|
63
|
+
df.map_partitions(len).sum()
|
|
64
|
+
)
|
|
65
|
+
df = from_delayed([count_scalar], meta=pd.DataFrame({RESERVED_COUNT_PROP: pd.Series(dtype="int64")}))
|
|
66
|
+
|
|
51
67
|
return df
|
|
52
68
|
|
|
53
69
|
def execute(self, expr: Any):
|
|
@@ -73,3 +89,11 @@ class DaskSelected(Selected):
|
|
|
73
89
|
prop: Property = None
|
|
74
90
|
# A value or an Expr for further processing on selected value.
|
|
75
91
|
prep: Any = NA
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
RESERVED_COUNT_PROP = "__dask_count"
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@dataclasses.dataclass
|
|
98
|
+
class Count(Func):
|
|
99
|
+
pass
|
{spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py
RENAMED
|
@@ -13,6 +13,8 @@ from spinta.core.ufuncs import Expr, ufunc, Bind, Unresolved, GetAttr
|
|
|
13
13
|
from spinta.datasets.backends.dataframe.ufuncs.query.components import (
|
|
14
14
|
DaskDataFrameQueryBuilder,
|
|
15
15
|
DaskSelected as Selected,
|
|
16
|
+
Count,
|
|
17
|
+
RESERVED_COUNT_PROP,
|
|
16
18
|
)
|
|
17
19
|
from spinta.datasets.components import Param
|
|
18
20
|
from spinta.datasets.utils import iterparams
|
|
@@ -22,7 +24,7 @@ from spinta.exceptions import (
|
|
|
22
24
|
SourceOrPrepareNotAllowed,
|
|
23
25
|
InvalidArgumentInExpression,
|
|
24
26
|
)
|
|
25
|
-
from spinta.types.datatype import DataType, PrimaryKey, Ref
|
|
27
|
+
from spinta.types.datatype import DataType, Integer, Number, Boolean, PrimaryKey, Ref
|
|
26
28
|
from spinta.types.text.components import Text
|
|
27
29
|
from spinta.ufuncs.components import ForeignProperty
|
|
28
30
|
from spinta.utils.data import take
|
|
@@ -127,8 +129,8 @@ def _resolve_unresolved(env: DaskDataFrameQueryBuilder, field: Bind) -> str:
|
|
|
127
129
|
|
|
128
130
|
|
|
129
131
|
@ufunc.resolver(DaskDataFrameQueryBuilder)
|
|
130
|
-
def count(env: DaskDataFrameQueryBuilder):
|
|
131
|
-
return
|
|
132
|
+
def count(env: DaskDataFrameQueryBuilder) -> Count:
|
|
133
|
+
return Count()
|
|
132
134
|
|
|
133
135
|
|
|
134
136
|
@ufunc.resolver(DaskDataFrameQueryBuilder, Expr)
|
|
@@ -142,30 +144,8 @@ def select(env: DaskDataFrameQueryBuilder, expr: Expr):
|
|
|
142
144
|
|
|
143
145
|
env.selected = {}
|
|
144
146
|
if args:
|
|
145
|
-
resolved = {}
|
|
146
|
-
selected_keys = set()
|
|
147
|
-
selected_languages = {}
|
|
148
147
|
for key, arg in args:
|
|
149
|
-
|
|
150
|
-
for key, prop in resolved.items():
|
|
151
|
-
prop_parent = getattr(prop, "parent", None)
|
|
152
|
-
if prop_parent and isinstance(prop_parent.dtype, Text):
|
|
153
|
-
selected_keys.add(prop_parent.place)
|
|
154
|
-
selected_languages.setdefault(prop_parent.place, set()).add(prop.name)
|
|
155
|
-
else:
|
|
156
|
-
selected_keys.add(prop.name)
|
|
157
|
-
for selected_key in selected_keys:
|
|
158
|
-
prop = env.model.flatprops.get(selected_key)
|
|
159
|
-
if isinstance(prop.dtype, Text) and authorized(env.context, prop, Action.GETALL):
|
|
160
|
-
selected_language = selected_languages.get(prop.place)
|
|
161
|
-
if not selected_language:
|
|
162
|
-
env.selected[prop.place] = env.call("select", prop)
|
|
163
|
-
else:
|
|
164
|
-
env.selected[prop.place] = env.call("select", prop, selected_language)
|
|
165
|
-
elif authorized(env.context, prop, Action.GETALL):
|
|
166
|
-
env.selected[resolved[selected_key].place] = env.call("select", resolved[selected_key])
|
|
167
|
-
else:
|
|
168
|
-
raise PropertyNotFound(env.model, property=resolved[selected_key])
|
|
148
|
+
env.selected[key] = env.call("select", arg)
|
|
169
149
|
else:
|
|
170
150
|
for prop in take(["_id", "_revision", all], env.model.properties).values():
|
|
171
151
|
if prop.name == "_revision" and not is_custom_revision_prop(prop):
|
|
@@ -502,6 +482,15 @@ def select(
|
|
|
502
482
|
return {k: env.call("select", v) for k, v in prep.items()}
|
|
503
483
|
|
|
504
484
|
|
|
485
|
+
@ufunc.resolver(DaskDataFrameQueryBuilder, Count)
|
|
486
|
+
def select(
|
|
487
|
+
env: DaskDataFrameQueryBuilder,
|
|
488
|
+
value: Count,
|
|
489
|
+
) -> Selected:
|
|
490
|
+
env.count = True
|
|
491
|
+
return Selected(item=RESERVED_COUNT_PROP)
|
|
492
|
+
|
|
493
|
+
|
|
505
494
|
@ufunc.resolver(DaskDataFrameQueryBuilder, Expr)
|
|
506
495
|
def base64(env: DaskDataFrameQueryBuilder, expr: Expr) -> Expr:
|
|
507
496
|
return expr # Expression will be resolved in ResultBuilder
|
|
@@ -533,6 +522,24 @@ def eq_(env: DaskDataFrameQueryBuilder, dtype: DataType, obj: object) -> Series:
|
|
|
533
522
|
return env.dataframe[name] == str(obj)
|
|
534
523
|
|
|
535
524
|
|
|
525
|
+
@ufunc.resolver(DaskDataFrameQueryBuilder, Integer, object, name="eq")
|
|
526
|
+
def eq_(env: DaskDataFrameQueryBuilder, dtype: Integer, obj: object) -> Series:
|
|
527
|
+
name = dtype.prop.external.name
|
|
528
|
+
return env.dataframe[name] == obj
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
@ufunc.resolver(DaskDataFrameQueryBuilder, Number, object, name="eq")
|
|
532
|
+
def eq_(env: DaskDataFrameQueryBuilder, dtype: Number, obj: object) -> Series:
|
|
533
|
+
name = dtype.prop.external.name
|
|
534
|
+
return env.dataframe[name] == obj
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
@ufunc.resolver(DaskDataFrameQueryBuilder, Boolean, object, name="eq")
|
|
538
|
+
def eq_(env: DaskDataFrameQueryBuilder, dtype: Boolean, obj: object) -> Series:
|
|
539
|
+
name = dtype.prop.external.name
|
|
540
|
+
return env.dataframe[name] == obj
|
|
541
|
+
|
|
542
|
+
|
|
536
543
|
@ufunc.resolver(DaskDataFrameQueryBuilder, Param, name="eval")
|
|
537
544
|
def eval_(env: DaskDataFrameQueryBuilder, param: Param) -> Iterator[str]:
|
|
538
545
|
resolved_values = (
|
|
@@ -4,14 +4,15 @@ from typing import List, Any
|
|
|
4
4
|
|
|
5
5
|
from spinta import commands
|
|
6
6
|
from spinta.backends import Backend
|
|
7
|
-
from spinta.backends.helpers import is_custom_id_prop
|
|
7
|
+
from spinta.backends.helpers import check_if_model_primary_key_is_composite, is_custom_id_prop
|
|
8
8
|
from spinta.components import Context, Model
|
|
9
9
|
from spinta.core.enums import Mode
|
|
10
10
|
from spinta.datasets.backends.helpers import generate_ref_id_using_select, flatten_keymap_encoding_values
|
|
11
11
|
from spinta.datasets.backends.sql.components import Sql
|
|
12
|
+
from spinta.datasets.helpers import encode_composite_string_id
|
|
12
13
|
from spinta.datasets.keymaps.components import KeyMap
|
|
13
14
|
from spinta.exceptions import GivenValueCountMissmatch, KeymapValueNotFound
|
|
14
|
-
from spinta.types.datatype import Ref, ExternalRef, Array
|
|
15
|
+
from spinta.types.datatype import Base32, Ref, ExternalRef, Array
|
|
15
16
|
from spinta.types.namespace import check_if_model_has_backend_and_source
|
|
16
17
|
|
|
17
18
|
|
|
@@ -26,6 +27,80 @@ def cast_backend_to_python(
|
|
|
26
27
|
return super_(context, model, backend, data, keymap=keymap, **kwargs)
|
|
27
28
|
|
|
28
29
|
|
|
30
|
+
def _cast_custom_ref_id(
|
|
31
|
+
context: Context,
|
|
32
|
+
dtype: Ref,
|
|
33
|
+
backend: Sql,
|
|
34
|
+
ref_model: Model,
|
|
35
|
+
ref_id_prop,
|
|
36
|
+
values: dict,
|
|
37
|
+
ref_filters_disabled: bool,
|
|
38
|
+
):
|
|
39
|
+
# A custom `_id` is derived from the referenced model's primary keys. When
|
|
40
|
+
# implicit ref filters are disabled, the referenced row might be filtered
|
|
41
|
+
# out at the source (e.g. by an explicit filter on the ref model), so
|
|
42
|
+
# selecting it could find nothing. Since the refprop values already give us
|
|
43
|
+
# those primary keys, rebuild the id the same way the referenced model would
|
|
44
|
+
# (mirrors `build_row_result`) instead of requiring the row to be selectable
|
|
45
|
+
# -- but only when the refprops are exactly those primary keys.
|
|
46
|
+
if ref_filters_disabled and dtype.refprops == ref_model.external.pkeys:
|
|
47
|
+
pk_values = list(values.values())
|
|
48
|
+
is_composite = check_if_model_primary_key_is_composite(ref_model)
|
|
49
|
+
if is_composite and not isinstance(ref_id_prop.dtype, Base32):
|
|
50
|
+
# `build_row_result` joins composite primary keys into a single
|
|
51
|
+
# string for non Base32 ids.
|
|
52
|
+
return encode_composite_string_id(pk_values, ref_model.external.pkeys)
|
|
53
|
+
# Single primary key ids (and Base32 ids, which cbor encode composite
|
|
54
|
+
# keys) are produced by casting the raw primary key value(s) through the
|
|
55
|
+
# `_id` data type.
|
|
56
|
+
data = pk_values if is_composite else pk_values[0]
|
|
57
|
+
return commands.cast_backend_to_python(context, ref_id_prop.dtype, backend, data)
|
|
58
|
+
|
|
59
|
+
return generate_ref_id_using_select(context, dtype, values)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _cast_keymap_ref_id(
|
|
63
|
+
context: Context,
|
|
64
|
+
dtype: Ref,
|
|
65
|
+
ref_model: Model,
|
|
66
|
+
keymap: KeyMap,
|
|
67
|
+
keymap_name: str,
|
|
68
|
+
encoding_values,
|
|
69
|
+
values: dict,
|
|
70
|
+
ref_filters_disabled: bool,
|
|
71
|
+
):
|
|
72
|
+
if keymap.contains(keymap_name, encoding_values):
|
|
73
|
+
return keymap.encode(keymap_name, encoding_values)
|
|
74
|
+
|
|
75
|
+
if encoding_values is None:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
if ref_model.mode == Mode.external and not check_if_model_has_backend_and_source(ref_model):
|
|
79
|
+
raise KeymapValueNotFound(
|
|
80
|
+
dtype,
|
|
81
|
+
keymap=keymap.name,
|
|
82
|
+
model_name=dtype.model.name,
|
|
83
|
+
values=encoding_values,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# When implicit ref filters are disabled, the referenced row might be
|
|
87
|
+
# filtered out at the source (e.g. by an explicit filter on the ref model),
|
|
88
|
+
# so selecting it could find nothing. The `_id` of a keymap based model is
|
|
89
|
+
# deterministic given its primary keys, so encode it directly instead of
|
|
90
|
+
# requiring the row to be selectable.
|
|
91
|
+
#
|
|
92
|
+
# Models with an identifiable `base` are excluded: their `_id` is seeded by
|
|
93
|
+
# the base's key (see `generate_pk_for_row`), which cannot be reconstructed
|
|
94
|
+
# from the foreign key alone. Encoding directly would mint a base-unaware id
|
|
95
|
+
# that diverges from -- and later clashes with -- the value the referenced
|
|
96
|
+
# model produces, so fall back to selecting.
|
|
97
|
+
base_seeded = ref_model.base and commands.identifiable(ref_model.base)
|
|
98
|
+
if ref_filters_disabled and not base_seeded:
|
|
99
|
+
return keymap.encode(keymap_name, encoding_values)
|
|
100
|
+
|
|
101
|
+
return generate_ref_id_using_select(context, dtype, values)
|
|
102
|
+
|
|
103
|
+
|
|
29
104
|
@commands.cast_backend_to_python.register(Context, Ref, Sql, dict)
|
|
30
105
|
def cast_backend_to_python(context: Context, dtype: Ref, backend: Sql, data: dict, *, keymap: KeyMap = None, **kwargs):
|
|
31
106
|
processed_data = {}
|
|
@@ -71,24 +146,19 @@ def cast_backend_to_python(context: Context, dtype: Ref, backend: Sql, data: dic
|
|
|
71
146
|
# Backwards compatibility, all nested values are converted to list values without keys
|
|
72
147
|
encoding_values = flatten_keymap_encoding_values(encoding_values)
|
|
73
148
|
|
|
74
|
-
|
|
75
|
-
|
|
149
|
+
# First decide where the referenced model's `_id` comes from: a custom `_id`
|
|
150
|
+
# is derived from its own primary keys, while a default `_id` is resolved
|
|
151
|
+
# through the keymap. The two are produced differently, so handle each in its
|
|
152
|
+
# own helper (each also decides whether the id can be rebuilt locally or
|
|
153
|
+
# whether the referenced row must be selected).
|
|
154
|
+
ref_id_prop = ref_model.properties["_id"]
|
|
155
|
+
ref_filters_disabled = not context.get("config").check_ref_filters
|
|
156
|
+
if is_custom_id_prop(ref_id_prop):
|
|
157
|
+
id_value = _cast_custom_ref_id(context, dtype, backend, ref_model, ref_id_prop, values, ref_filters_disabled)
|
|
76
158
|
else:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
id_value = keymap.encode(keymap_name, encoding_values)
|
|
81
|
-
elif encoding_values is None:
|
|
82
|
-
id_value = None
|
|
83
|
-
elif ref_model.mode == Mode.external and not check_if_model_has_backend_and_source(ref_model):
|
|
84
|
-
raise KeymapValueNotFound(
|
|
85
|
-
dtype,
|
|
86
|
-
keymap=keymap.name,
|
|
87
|
-
model_name=dtype.model.name,
|
|
88
|
-
values=encoding_values,
|
|
89
|
-
)
|
|
90
|
-
else:
|
|
91
|
-
id_value = generate_ref_id_using_select(context, dtype, values)
|
|
159
|
+
id_value = _cast_keymap_ref_id(
|
|
160
|
+
context, dtype, ref_model, keymap, keymap_name, encoding_values, values, ref_filters_disabled
|
|
161
|
+
)
|
|
92
162
|
|
|
93
163
|
processed_data["_id"] = id_value
|
|
94
164
|
|