spinta 0.2.dev12__tar.gz → 0.2.dev13__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.dev12 → spinta-0.2.dev13}/PKG-INFO +1 -1
- {spinta-0.2.dev12 → spinta-0.2.dev13}/pyproject.toml +1 -1
- spinta-0.2.dev13/spinta/__init__.py +3 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/api/__init__.py +1 -1
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/asgi.py +1 -8
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/auth.py +122 -27
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/ufuncs/ufuncs.py +5 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/geometry/encode.py +2 -2
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +6 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/main.py +15 -10
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/manifest.py +2 -2
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/components.py +18 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/config.py +2 -2
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/config.py +2 -2
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/enums.py +6 -0
- spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/helpers.py +88 -0
- spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +40 -0
- spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +52 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/load.py +6 -2
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/exceptions.py +8 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/html/commands.py +1 -1
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/logging_config.py +6 -4
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/helpers.py +1 -1
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/openapi_generator.py +1 -1
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/sql/helpers.py +2 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/pytest.py +8 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/config.py +10 -1
- spinta-0.2.dev13/spinta/types/geometry/constants.py +4 -0
- {spinta-0.2.dev12/spinta/backends/postgresql → spinta-0.2.dev13/spinta}/types/geometry/helpers.py +36 -7
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/store.py +8 -3
- spinta-0.2.dev13/spinta/ufuncs/summaryenv/__init__.py +0 -0
- spinta-0.2.dev13/spinta/units/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/urlparams.py +1 -1
- spinta-0.2.dev12/spinta/__init__.py +0 -9
- spinta-0.2.dev12/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -62
- spinta-0.2.dev12/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -16
- spinta-0.2.dev12/spinta/types/geometry/constants.py +0 -3
- spinta-0.2.dev12/spinta/types/geometry/helpers.py +0 -33
- {spinta-0.2.dev12 → spinta-0.2.dev13}/LICENSE +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/README.rst +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/__main__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/accesslog/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/accesslog/file.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/accesslog/python.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/api/inspect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/api/schema.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/api/validators.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/constants.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/decode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/encode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/validate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/fs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/encode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/memory/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/encode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/validate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/array/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/array/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/file/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/file/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/object/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/types/object/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/mongo/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/nobackend/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/column.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/encode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/redirect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/summary.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/validate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/constants.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/files.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/extractors.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/name.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/redirect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/type.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/helpers/validate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/sqlalchemy.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/backref/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/denorm/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/file/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/file/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/file/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/file/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/file/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/geometry/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/geometry/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/object/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/object/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/object/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/object/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/object/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/ref/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/ref/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/ref/validate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/text/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/types/text/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/backends/types/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/admin.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/config.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/data.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/get.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/registry.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/data.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/errors.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/export/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/message.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/delete.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/error.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/state.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/sync.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/utils.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/push/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/script/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/script/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/script/core.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/script/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/script/registry.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/store.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/api_helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/controllers/synchronization/catalog_to_agent.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/enum.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/sync/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/typer.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/registry.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/inspect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/keymap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/pii.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/pull.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/push.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/server.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/show.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/sync.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/cli/upgrade.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/client.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/search.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/version.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/commands/write.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/compat.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/config.yml +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/access.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/context.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/core/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/notimpl/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/notimpl/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/oracle/ufuncs → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/types}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/oracle/ufuncs/query → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/types/geometry}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/postgresql → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/postgresql/ufuncs → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/oracle/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/postgresql}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/sas → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/postgresql}/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/sas → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/postgresql}/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/sqlite → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/sas/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/sqlite/ufuncs → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/sas/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/sqlite}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/commands → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/sqlite/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/ufuncs → spinta-0.2.dev13/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/ufuncs/query → spinta-0.2.dev13/spinta/datasets/backends/sql/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/cast.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/column.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sql/ufuncs/result → spinta-0.2.dev13/spinta/datasets/backends/sql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sqldump → spinta-0.2.dev13/spinta/datasets/backends/sql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sqldump/commands → spinta-0.2.dev13/spinta/datasets/backends/sql/ufuncs/result}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/sqldump/ufuncs → spinta-0.2.dev13/spinta/datasets/backends/sqldump}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/wsdl → spinta-0.2.dev13/spinta/datasets/backends/sqldump/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/components.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/backends/wsdl/commads → spinta-0.2.dev13/spinta/datasets/backends/sqldump/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/commands → spinta-0.2.dev13/spinta/datasets/backends/wsdl}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/inspect → spinta-0.2.dev13/spinta/datasets/backends/wsdl/commads}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/backends/wsdl/components.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/inspect → spinta-0.2.dev13/spinta/datasets}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/error.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/inspect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/commands/wipe.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/enums.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/datasets/keymaps → spinta-0.2.dev13/spinta/datasets/inspect}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions → spinta-0.2.dev13/spinta/datasets/inspect/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/inspect/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/inspect/commands/merge.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/inspect/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/inspect/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/comments → spinta-0.2.dev13/spinta/datasets/keymaps}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/keymaps/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/keymaps/redis.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/keymaps/sync.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/datasets/utils.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/enum → spinta-0.2.dev13/spinta/dimensions}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/lang → spinta-0.2.dev13/spinta/dimensions/comments}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/comments/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/comments/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/param → spinta-0.2.dev13/spinta/dimensions/enum}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/enum/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/enum/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/enum/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/enum/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/prefix → spinta-0.2.dev13/spinta/dimensions/lang}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/lang/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/lang/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/dimensions/prefix/commands → spinta-0.2.dev13/spinta/dimensions/param}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/param/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/param/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/param/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/formats → spinta-0.2.dev13/spinta/dimensions/prefix}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/formats/ascii → spinta-0.2.dev13/spinta/dimensions/prefix/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/prefix/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/prefix/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dimensions/prefix/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/dispatcher.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/fetcher.py +0 -0
- {spinta-0.2.dev12/spinta/formats/csv → spinta-0.2.dev13/spinta/formats}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/formats/html → spinta-0.2.dev13/spinta/formats/ascii}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/ascii/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/ascii/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/ascii/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/components.py +0 -0
- {spinta-0.2.dev12/spinta/formats/json → spinta-0.2.dev13/spinta/formats/csv}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/csv/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/csv/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/formats/jsonlines → spinta-0.2.dev13/spinta/formats/html}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/html/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/html/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/formats/xlsx → spinta-0.2.dev13/spinta/formats/json}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/json/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/json/components.py +0 -0
- {spinta-0.2.dev12/spinta/hacks → spinta-0.2.dev13/spinta/formats/jsonlines}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/jsonlines/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/jsonlines/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/rdf/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/rdf/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests → spinta-0.2.dev13/spinta/formats/xlsx}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/xlsx/commands.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/formats/xlsx/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/backend → spinta-0.2.dev13/spinta/hacks}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/hacks/spyna.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/hacks/urlparams.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/handlers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifest/_ns.yml +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifest/_schema/version.yml +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifest/_schema.yml +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifest/_txn.yml +0 -0
- {spinta-0.2.dev12/spinta/manifests/backend/commands → spinta-0.2.dev13/spinta/manifests}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/commands → spinta-0.2.dev13/spinta/manifests/backend}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/dict → spinta-0.2.dev13/spinta/manifests/backend/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/commands/sync.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/backend/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/dict → spinta-0.2.dev13/spinta/manifests}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/error.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/init.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/inspect.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/internal → spinta-0.2.dev13/spinta/manifests/dict}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/internal → spinta-0.2.dev13/spinta/manifests/dict}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/dict/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/dict/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/dict/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/dict/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/internal_sql → spinta-0.2.dev13/spinta/manifests/internal}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/internal_sql → spinta-0.2.dev13/spinta/manifests/internal}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/memory → spinta-0.2.dev13/spinta/manifests/internal_sql}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/memory → spinta-0.2.dev13/spinta/manifests/internal_sql}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/auth.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/backend.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/commands/read.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/internal_sql/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/mermaid → spinta-0.2.dev13/spinta/manifests/memory}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/open_api → spinta-0.2.dev13/spinta/manifests/memory/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/memory/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/memory/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/memory/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/open_api/commands → spinta-0.2.dev13/spinta/manifests/mermaid}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/mermaid/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/mermaid/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/sql → spinta-0.2.dev13/spinta/manifests/open_api}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/sql → spinta-0.2.dev13/spinta/manifests/open_api}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/open_api/openapi_config.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/rdf/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/rdf/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/rdf/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/rdf/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/tabular → spinta-0.2.dev13/spinta/manifests/sql}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/tabular → spinta-0.2.dev13/spinta/manifests/sql}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/sql/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/sql/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/sql/components.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/tabular/formats → spinta-0.2.dev13/spinta/manifests/tabular}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/xsd → spinta-0.2.dev13/spinta/manifests/tabular/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/constants.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/xsd/commands → spinta-0.2.dev13/spinta/manifests/tabular/formats}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/formats/gsheets.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/tabular/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/xsd2 → spinta-0.2.dev13/spinta/manifests/xsd}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/xsd2 → spinta-0.2.dev13/spinta/manifests/xsd}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/yaml → spinta-0.2.dev13/spinta/manifests/xsd2}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/manifests/yaml → spinta-0.2.dev13/spinta/manifests/xsd2}/commands/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd2/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd2/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd2/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/xsd2/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/migrations/schema → spinta-0.2.dev13/spinta/manifests/yaml}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/naming → spinta-0.2.dev13/spinta/manifests/yaml/commands}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/configure.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/freeze.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/migrate.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/commands/sync.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/manifests/yaml/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/methods.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/middlewares.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/migrations/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/testing/types → spinta-0.2.dev13/spinta/migrations/schema}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/migrations/schema/alembic.py +0 -0
- {spinta-0.2.dev12/spinta/types → spinta-0.2.dev13/spinta/naming}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/naming/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/naming/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/naming/ufuncts.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/nodes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/renderer.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/spyna.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/templates/base.html +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/templates/data.html +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/templates/error.html +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/templates/form.html +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/cli.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/client.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/config.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/context.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/csv.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/data.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/datasets.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/dtypes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/manifest.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/migration.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/push.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/request.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/tabular.py +0 -0
- {spinta-0.2.dev12/spinta/types/array → spinta-0.2.dev13/spinta/testing/types}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/types/geometry.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/testing/utils.py +0 -0
- {spinta-0.2.dev12/spinta/types/backref → spinta-0.2.dev13/spinta/types}/__init__.py +0 -0
- {spinta-0.2.dev12/spinta/types/denorm → spinta-0.2.dev13/spinta/types/array}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/array/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/array/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/array/resolve.py +0 -0
- {spinta-0.2.dev12/spinta/types/file → spinta-0.2.dev13/spinta/types/backref}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/backref/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/command.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/datatype.py +0 -0
- {spinta-0.2.dev12/spinta/types/geometry → spinta-0.2.dev13/spinta/types/denorm}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/denorm/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/denorm/link.py +0 -0
- {spinta-0.2.dev12/spinta/types/inherit → spinta-0.2.dev13/spinta/types/file}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/file/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/file/decode.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/file/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/types/object → spinta-0.2.dev13/spinta/types/geometry}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/geometry/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/geometry/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/types/partial → spinta-0.2.dev13/spinta/types/inherit}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/inherit/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/model.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/namespace.py +0 -0
- {spinta-0.2.dev12/spinta/types/ref → spinta-0.2.dev13/spinta/types/object}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/object/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/object/link.py +0 -0
- {spinta-0.2.dev12/spinta/types/text → spinta-0.2.dev13/spinta/types/partial}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/partial/link.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs → spinta-0.2.dev13/spinta/types/ref}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/ref/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/ref/link.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/ref/resolve.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/changebase → spinta-0.2.dev13/spinta/types/text}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/text/check.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/text/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/text/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/types/text/load.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/typing.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/linkbuilder → spinta-0.2.dev13/spinta/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/binds.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/loadbuilder → spinta-0.2.dev13/spinta/ufuncs/changebase}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/changebase/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/changebase/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/changebase/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/common.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/helpers.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/propertyresolver → spinta-0.2.dev13/spinta/ufuncs/linkbuilder}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/linkbuilder/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/querybuilder → spinta-0.2.dev13/spinta/ufuncs/loadbuilder}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/loadbuilder/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/requestparamsbuilder → spinta-0.2.dev13/spinta/ufuncs/propertyresolver}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/propertyresolver/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/resultbuilder → spinta-0.2.dev13/spinta/ufuncs/querybuilder}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/querybuilder/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/querybuilder/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/ufuncs/summaryenv → spinta-0.2.dev13/spinta/ufuncs/requestparamsbuilder}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev12/spinta/units → spinta-0.2.dev13/spinta/ufuncs/resultbuilder}/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/resultbuilder/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/summaryenv/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/units/components.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/units/helpers.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/__init__.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/aiotools.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/changes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/collections.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/config.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/data.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/encoding.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/enums.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/errors.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/functools.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/idgen.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/imports.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/itertools.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/json.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/naming.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/nestedstruct.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/nin.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/passwords.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/path.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/refs.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/response.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/schema.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/scopes.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/sqlalchemy.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/sqlite.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/starlette.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/streams.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/tree.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/types.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/units.py +0 -0
- {spinta-0.2.dev12 → spinta-0.2.dev13}/spinta/utils/url.py +0 -0
|
@@ -422,7 +422,7 @@ async def error(request, exc):
|
|
|
422
422
|
|
|
423
423
|
async def srid_check(request: Request):
|
|
424
424
|
from shapely.geometry import Point
|
|
425
|
-
from spinta.
|
|
425
|
+
from spinta.types.geometry.helpers import get_osm_link
|
|
426
426
|
|
|
427
427
|
srid = request.path_params["srid"]
|
|
428
428
|
x = request.path_params["x"]
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
1
|
from spinta.api import init
|
|
4
2
|
from spinta.core.context import create_context
|
|
5
3
|
from spinta import commands
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
logging.basicConfig(
|
|
9
|
-
level=logging.INFO,
|
|
10
|
-
format="%(levelname)s: %(message)s",
|
|
11
|
-
)
|
|
12
|
-
|
|
13
5
|
context = create_context("asgi")
|
|
14
6
|
|
|
15
7
|
rc = context.get("rc")
|
|
16
8
|
config = context.get("config")
|
|
17
9
|
commands.load(context, config)
|
|
10
|
+
|
|
18
11
|
commands.check(context, config)
|
|
19
12
|
|
|
20
13
|
store = context.get("store")
|
|
@@ -12,6 +12,7 @@ import time
|
|
|
12
12
|
import uuid
|
|
13
13
|
from collections import defaultdict
|
|
14
14
|
from functools import cached_property
|
|
15
|
+
from itertools import chain
|
|
15
16
|
from threading import Lock
|
|
16
17
|
from typing import Set, Any, TypedDict, Literal
|
|
17
18
|
from typing import Type
|
|
@@ -26,7 +27,7 @@ from authlib.oauth2 import OAuth2Error
|
|
|
26
27
|
from authlib.oauth2 import OAuth2Request
|
|
27
28
|
from authlib.oauth2 import rfc6749
|
|
28
29
|
from authlib.oauth2 import rfc6750
|
|
29
|
-
from authlib.oauth2.rfc6749 import grants, OAuth2Payload,
|
|
30
|
+
from authlib.oauth2.rfc6749 import grants, OAuth2Payload, list_to_scope
|
|
30
31
|
from authlib.oauth2.rfc6749.errors import InvalidClientError
|
|
31
32
|
from authlib.oauth2.rfc6750.errors import InsufficientScopeError
|
|
32
33
|
from authlib.oauth2.rfc6749.util import scope_to_list
|
|
@@ -40,11 +41,12 @@ from starlette.datastructures import FormData, QueryParams, Headers
|
|
|
40
41
|
from starlette.exceptions import HTTPException
|
|
41
42
|
from starlette.responses import JSONResponse
|
|
42
43
|
|
|
44
|
+
from spinta import commands
|
|
43
45
|
from spinta.components import Config
|
|
44
46
|
from spinta.components import Context, Namespace, Model, Property
|
|
45
47
|
from spinta.components import ScopeFormatterFunc
|
|
46
48
|
from spinta.core.enums import Access, Action
|
|
47
|
-
from spinta.exceptions import AuthorizedClientsOnly
|
|
49
|
+
from spinta.exceptions import AuthorizedClientsOnly, NoScopesForNamespaces, InvalidExtraScopes
|
|
48
50
|
from spinta.exceptions import BasicAuthRequired
|
|
49
51
|
from spinta.exceptions import (
|
|
50
52
|
InvalidToken,
|
|
@@ -297,6 +299,7 @@ class Client(rfc6749.ClientMixin):
|
|
|
297
299
|
secret_hash: str
|
|
298
300
|
scopes: Set[str]
|
|
299
301
|
backends: dict[str, dict[str, Any]]
|
|
302
|
+
contract_scopes: dict[str, list[str]]
|
|
300
303
|
|
|
301
304
|
def __init__(
|
|
302
305
|
self,
|
|
@@ -306,12 +309,14 @@ class Client(rfc6749.ClientMixin):
|
|
|
306
309
|
secret_hash: str,
|
|
307
310
|
scopes: list[str],
|
|
308
311
|
backends: dict[str, dict[str, Any]],
|
|
312
|
+
contract_scopes: dict[str, list[str]],
|
|
309
313
|
) -> None:
|
|
310
314
|
self.id = id_
|
|
311
315
|
self.name = name_
|
|
312
316
|
self.secret_hash = secret_hash
|
|
313
317
|
self.scopes = set(scopes)
|
|
314
318
|
self.backends = backends
|
|
319
|
+
self.contract_scopes = contract_scopes
|
|
315
320
|
|
|
316
321
|
# Auth method used for token endpoint.
|
|
317
322
|
# More info: token_endpoint_auth_method https://datatracker.ietf.org/doc/html/rfc7591#autoid-5
|
|
@@ -360,6 +365,9 @@ class Client(rfc6749.ClientMixin):
|
|
|
360
365
|
else:
|
|
361
366
|
return True
|
|
362
367
|
|
|
368
|
+
def get_all_contract_scopes(self) -> set[str]:
|
|
369
|
+
return set(chain.from_iterable(self.contract_scopes.values()))
|
|
370
|
+
|
|
363
371
|
|
|
364
372
|
def decode_unverified_header(token: str) -> dict[str, Any]:
|
|
365
373
|
try:
|
|
@@ -399,33 +407,34 @@ class Token(rfc6749.TokenMixin):
|
|
|
399
407
|
required_scopes = scope_to_list(scope)
|
|
400
408
|
return not self._validator.scope_insufficient(self.get_scope(), required_scopes)
|
|
401
409
|
|
|
402
|
-
def check_scope(self, scope: SCOPE_TYPE):
|
|
410
|
+
def check_scope(self, scope: SCOPE_TYPE) -> bool:
|
|
403
411
|
token_scopes = set(scope_to_list(self._token.get("scope", "")))
|
|
404
412
|
if any(token_scope for token_scope in token_scopes if token_scope.startswith(DEPRECATED_SCOPE_PREFIX)):
|
|
405
413
|
log.warning(
|
|
406
414
|
"Deprecation warning: using 'spinta_*' scopes is deprecated and will be removed in a future version."
|
|
407
415
|
)
|
|
408
416
|
|
|
409
|
-
if
|
|
410
|
-
|
|
417
|
+
if self.valid_scope(scope):
|
|
418
|
+
return True
|
|
411
419
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
operator = "AND"
|
|
415
|
-
scope = [scope]
|
|
416
|
-
missing_scopes = ", ".join(
|
|
417
|
-
sorted([single_scope for single_scope in scope if not single_scope.startswith(DEPRECATED_SCOPE_PREFIX)])
|
|
418
|
-
)
|
|
420
|
+
# Scope is not valid. Raise an exception
|
|
421
|
+
client_id = self._token["aud"]
|
|
419
422
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
423
|
+
require_all_scopes = isinstance(scope, str)
|
|
424
|
+
scope_list = [scope] if require_all_scopes else scope
|
|
425
|
+
|
|
426
|
+
missing_scopes = ", ".join(
|
|
427
|
+
sorted(single_scope for single_scope in scope_list if not single_scope.startswith(DEPRECATED_SCOPE_PREFIX))
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
if require_all_scopes:
|
|
431
|
+
message = f"Missing required scopes: {missing_scopes}"
|
|
432
|
+
log.error(f"client {client_id!r} is missing required scopes: %s", missing_scopes)
|
|
433
|
+
else:
|
|
434
|
+
message = f"Missing one of required scopes: {missing_scopes}"
|
|
435
|
+
log.error(f"client {client_id!r} is missing one of required scopes: %s", missing_scopes)
|
|
436
|
+
|
|
437
|
+
raise InsufficientScopeError(description=message)
|
|
429
438
|
|
|
430
439
|
# No longer mandatory, but will keep it, since it is used in other places.
|
|
431
440
|
def get_client_id(self) -> str:
|
|
@@ -458,12 +467,82 @@ class Token(rfc6749.TokenMixin):
|
|
|
458
467
|
def is_expired(self) -> bool:
|
|
459
468
|
return time.time() > self._token["exp"]
|
|
460
469
|
|
|
470
|
+
@staticmethod
|
|
471
|
+
def _collect_available_namespaces(context: Context) -> set[str]:
|
|
472
|
+
"""Collects all scopes that can be used to get data from currently loaded manifest"""
|
|
473
|
+
|
|
474
|
+
manifest = context.get("store").manifest
|
|
475
|
+
model_namespaces = chain.from_iterable(
|
|
476
|
+
model.get_namespaces()
|
|
477
|
+
for model in commands.get_models(context, manifest).values()
|
|
478
|
+
if not model.name.startswith("_")
|
|
479
|
+
)
|
|
480
|
+
|
|
481
|
+
return set(model_namespaces)
|
|
482
|
+
|
|
483
|
+
@staticmethod
|
|
484
|
+
def _get_scope_namespace(single_scope: str, scope_prefixes: list[str]) -> str:
|
|
485
|
+
"""Removes spinta prefixes and action suffixes, leaving only namespace part of scope"""
|
|
486
|
+
for prefix in scope_prefixes:
|
|
487
|
+
if single_scope.startswith(prefix):
|
|
488
|
+
single_scope = single_scope.removeprefix(prefix)
|
|
489
|
+
|
|
490
|
+
for action in Action.scope_action_values():
|
|
491
|
+
if single_scope.endswith(action):
|
|
492
|
+
single_scope = single_scope.removesuffix(action)
|
|
493
|
+
|
|
494
|
+
return single_scope
|
|
495
|
+
|
|
496
|
+
def _get_namespace_scope_map(self, scope_prefixes: list[str]) -> dict[str, set[str]]:
|
|
497
|
+
"""
|
|
498
|
+
Splits JWT scope into separate scopes and build a mapping of namespaces to their corresponding scopes
|
|
499
|
+
"""
|
|
500
|
+
scope_dict = defaultdict(set)
|
|
501
|
+
for scope in scope_to_list(self.get_scope()):
|
|
502
|
+
if namespace := self._get_scope_namespace(scope, scope_prefixes):
|
|
503
|
+
scope_dict[namespace].add(scope)
|
|
504
|
+
|
|
505
|
+
return dict(scope_dict)
|
|
506
|
+
|
|
507
|
+
def _get_scopes_from_model_namespaces(self, model_namespaces: set[str], scope_prefixes: list[str]) -> set[str]:
|
|
508
|
+
"""Returns only JWT scopes that match any namespaces from manifest"""
|
|
509
|
+
scope_namespace_map = self._get_namespace_scope_map(scope_prefixes)
|
|
510
|
+
|
|
511
|
+
return {
|
|
512
|
+
scope
|
|
513
|
+
for namespace, scopes in scope_namespace_map.items()
|
|
514
|
+
if namespace in model_namespaces
|
|
515
|
+
for scope in scopes
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
def check_contract_scopes(self, context: Context) -> None:
|
|
519
|
+
"""
|
|
520
|
+
Checks if there are no extra JWT scopes from manifest namespaces comparing to contract scopes saved
|
|
521
|
+
in client's file.
|
|
522
|
+
"""
|
|
523
|
+
|
|
524
|
+
if not (model_namespaces := self._collect_available_namespaces(context)):
|
|
525
|
+
raise NoScopesForNamespaces(namespaces=[])
|
|
526
|
+
|
|
527
|
+
config = context.get("config")
|
|
528
|
+
client = query_client(get_clients_path(config), self.get_client_id())
|
|
529
|
+
|
|
530
|
+
contract_scopes = client.get_all_contract_scopes()
|
|
531
|
+
filtered_jwt_scopes = self._get_scopes_from_model_namespaces(
|
|
532
|
+
model_namespaces, [config.scope_prefix, config.scope_prefix_udts]
|
|
533
|
+
)
|
|
534
|
+
|
|
535
|
+
if not filtered_jwt_scopes:
|
|
536
|
+
raise NoScopesForNamespaces(namespaces=", ".join(sorted(model_namespaces)))
|
|
537
|
+
elif not contract_scopes.issuperset(filtered_jwt_scopes):
|
|
538
|
+
raise InvalidExtraScopes(extra_scopes=", ".join(sorted(filtered_jwt_scopes - contract_scopes)))
|
|
539
|
+
|
|
461
540
|
|
|
462
541
|
class AdminToken(rfc6749.TokenMixin):
|
|
463
542
|
def valid_scope(self, scope: SCOPE_TYPE, **kwargs) -> bool:
|
|
464
543
|
return True
|
|
465
544
|
|
|
466
|
-
def check_scope(self, scope: SCOPE_TYPE, **kwargs):
|
|
545
|
+
def check_scope(self, scope: SCOPE_TYPE, **kwargs) -> bool:
|
|
467
546
|
pass
|
|
468
547
|
|
|
469
548
|
def get_sub(self) -> str: # User.
|
|
@@ -478,6 +557,9 @@ class AdminToken(rfc6749.TokenMixin):
|
|
|
478
557
|
def get_client_id(self) -> str:
|
|
479
558
|
return self.get_aud()
|
|
480
559
|
|
|
560
|
+
def check_contract_scopes(self, context: Context) -> None:
|
|
561
|
+
pass
|
|
562
|
+
|
|
481
563
|
|
|
482
564
|
@dataclasses.dataclass
|
|
483
565
|
class StarletteOAuth2Data:
|
|
@@ -556,6 +638,7 @@ def get_auth_token(context: Context) -> Token:
|
|
|
556
638
|
token = resource_protector.validate_request(scope, request)
|
|
557
639
|
except JoseError as e:
|
|
558
640
|
raise HTTPException(status_code=400, detail=e.error)
|
|
641
|
+
|
|
559
642
|
return token
|
|
560
643
|
|
|
561
644
|
|
|
@@ -687,14 +770,14 @@ def get_client_file_path(path: pathlib.Path, client: str) -> pathlib.Path:
|
|
|
687
770
|
return client_file
|
|
688
771
|
|
|
689
772
|
|
|
690
|
-
def check_scope(context: Context, scope: Union[Scopes, str]):
|
|
773
|
+
def check_scope(context: Context, scope: Union[Scopes, str]) -> bool:
|
|
691
774
|
config = context.get("config")
|
|
692
775
|
token = context.get("auth.token")
|
|
693
776
|
|
|
694
777
|
if isinstance(scope, Scopes):
|
|
695
778
|
scope = scope.value
|
|
696
779
|
|
|
697
|
-
token.check_scope([f"{config.scope_prefix}{scope}", f"{config.scope_prefix_udts}:{scope}"])
|
|
780
|
+
return token.check_scope([f"{config.scope_prefix}{scope}", f"{config.scope_prefix_udts}:{scope}"])
|
|
698
781
|
|
|
699
782
|
|
|
700
783
|
def has_scope(context: Context, scope: Scopes | str, raise_error: bool = True) -> bool:
|
|
@@ -819,9 +902,15 @@ def authorized(
|
|
|
819
902
|
]
|
|
820
903
|
# Check if client has at least one of required scopes.
|
|
821
904
|
if throw:
|
|
822
|
-
token.check_scope(scopes)
|
|
905
|
+
is_token_valid = token.check_scope(scopes)
|
|
823
906
|
else:
|
|
824
|
-
|
|
907
|
+
is_token_valid = token.valid_scope(scopes)
|
|
908
|
+
|
|
909
|
+
# Contract scopes are only checked for non-open nodes and when check_contract_scopes is enabled
|
|
910
|
+
if config.check_contract_scopes and node.access < Access.open:
|
|
911
|
+
token.check_contract_scopes(context)
|
|
912
|
+
|
|
913
|
+
return is_token_valid
|
|
825
914
|
|
|
826
915
|
|
|
827
916
|
def auth_server_keys_exists(path: pathlib.Path):
|
|
@@ -905,6 +994,7 @@ def create_client_file(
|
|
|
905
994
|
secret: str | None = None,
|
|
906
995
|
scopes: List[str] | None = None,
|
|
907
996
|
backends: dict[str, dict[str, str]] | None = None,
|
|
997
|
+
contract_scopes: dict[str, list[str]] | None = None,
|
|
908
998
|
*,
|
|
909
999
|
add_secret: bool = False,
|
|
910
1000
|
) -> tuple[pathlib.Path, dict]:
|
|
@@ -937,6 +1027,7 @@ def create_client_file(
|
|
|
937
1027
|
"client_secret_hash": secret_hash,
|
|
938
1028
|
"scopes": scopes or [],
|
|
939
1029
|
"backends": backends or {},
|
|
1030
|
+
"contract_scopes": contract_scopes or {},
|
|
940
1031
|
}
|
|
941
1032
|
keymap[name] = client_id
|
|
942
1033
|
|
|
@@ -989,6 +1080,7 @@ def update_client_file(
|
|
|
989
1080
|
secret: str | None,
|
|
990
1081
|
scopes: list | None,
|
|
991
1082
|
backends: dict[str, dict[str, str]] | None,
|
|
1083
|
+
contract_scopes: dict[str, list[str]] | None = None,
|
|
992
1084
|
) -> dict:
|
|
993
1085
|
if client_exists(path, client_id):
|
|
994
1086
|
config = context.get("config")
|
|
@@ -1000,6 +1092,7 @@ def update_client_file(
|
|
|
1000
1092
|
new_secret_hash = passwords.crypt(secret) if secret else client.secret_hash
|
|
1001
1093
|
new_scopes = scopes if scopes is not None else client.scopes
|
|
1002
1094
|
new_backends = backends if backends is not None else client.backends
|
|
1095
|
+
new_contract_scopes = contract_scopes if contract_scopes is not None else client.contract_scopes
|
|
1003
1096
|
|
|
1004
1097
|
client_path = get_client_file_path(path, client_id)
|
|
1005
1098
|
keymap = _load_keymap_data(keymap_path)
|
|
@@ -1013,6 +1106,7 @@ def update_client_file(
|
|
|
1013
1106
|
"client_secret_hash": new_secret_hash,
|
|
1014
1107
|
"scopes": list(new_scopes),
|
|
1015
1108
|
"backends": new_backends,
|
|
1109
|
+
"contract_scopes": new_contract_scopes,
|
|
1016
1110
|
}
|
|
1017
1111
|
|
|
1018
1112
|
yml.dump(new_data, client_path)
|
|
@@ -1173,6 +1267,7 @@ def query_client(path: pathlib.Path, client: str, is_name: bool = False) -> Clie
|
|
|
1173
1267
|
name_=client_name,
|
|
1174
1268
|
secret_hash=data["client_secret_hash"],
|
|
1175
1269
|
scopes=data["scopes"],
|
|
1176
|
-
backends=data
|
|
1270
|
+
backends=data.get("backends", {}),
|
|
1271
|
+
contract_scopes=data.get("contract_scopes", {}),
|
|
1177
1272
|
)
|
|
1178
1273
|
return client
|
|
@@ -483,6 +483,11 @@ def sort(env, field):
|
|
|
483
483
|
return env.call("asc", prop.dtype)
|
|
484
484
|
|
|
485
485
|
|
|
486
|
+
@ufunc.resolver(MongoQueryBuilder, DataType)
|
|
487
|
+
def sort(env: MongoQueryBuilder, dtype: DataType) -> Any:
|
|
488
|
+
return env.call("asc", dtype)
|
|
489
|
+
|
|
490
|
+
|
|
486
491
|
@ufunc.resolver(MongoQueryBuilder, Positive)
|
|
487
492
|
def sort(env, sign):
|
|
488
493
|
return env.call("asc", sign.arg)
|
|
@@ -7,8 +7,8 @@ from geoalchemy2.shape import to_shape
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
from spinta import commands
|
|
10
|
-
from spinta.
|
|
11
|
-
from spinta.
|
|
10
|
+
from spinta.types.geometry.helpers import get_display_value
|
|
11
|
+
from spinta.types.geometry.helpers import get_osm_link
|
|
12
12
|
from spinta.formats.components import Format
|
|
13
13
|
from spinta.core.enums import Action
|
|
14
14
|
from spinta.components import Context
|
|
@@ -7,6 +7,7 @@ from typing import Union, Any
|
|
|
7
7
|
import geoalchemy2.functions
|
|
8
8
|
import sqlalchemy as sa
|
|
9
9
|
from sqlalchemy.dialects.postgresql import UUID
|
|
10
|
+
from sqlalchemy.sql.elements import UnaryExpression
|
|
10
11
|
|
|
11
12
|
from spinta import exceptions, commands
|
|
12
13
|
from spinta.auth import authorized
|
|
@@ -1138,6 +1139,11 @@ def sort(env, dtype):
|
|
|
1138
1139
|
return env.call("asc", dtype)
|
|
1139
1140
|
|
|
1140
1141
|
|
|
1142
|
+
@ufunc.resolver(PgQueryBuilder, NestedProperty)
|
|
1143
|
+
def sort(env: PgQueryBuilder, nested: NestedProperty) -> UnaryExpression:
|
|
1144
|
+
return env.call("asc", nested.right)
|
|
1145
|
+
|
|
1146
|
+
|
|
1141
1147
|
@ufunc.resolver(PgQueryBuilder, Negative_)
|
|
1142
1148
|
def sort(env, field):
|
|
1143
1149
|
prop = env.resolve_property(field)
|
|
@@ -77,15 +77,17 @@ def main(
|
|
|
77
77
|
),
|
|
78
78
|
env_file: Optional[pathlib.Path] = Option(None, "--env-file", help=("Load configuration from a given .env file.")),
|
|
79
79
|
version: bool = Option(False, help="Show version number."),
|
|
80
|
+
tb: Optional[str] = Option("pretty", "--tb", help=("Exception style: pretty, native.")),
|
|
81
|
+
# Deprecated. Use env file instead
|
|
80
82
|
log_file: Optional[pathlib.Path] = Option(
|
|
81
83
|
None, "--log-file", help=("Write log messages to a specified file, if not given, writes logs to STDERR.")
|
|
82
84
|
),
|
|
85
|
+
# Deprecated. Use env file instead
|
|
83
86
|
log_level: Optional[str] = Option(
|
|
84
|
-
|
|
87
|
+
None,
|
|
85
88
|
"--log-level",
|
|
86
89
|
help=("Log level. Possible levels: fatal, error, warning, info, debug. Default: warning."),
|
|
87
90
|
),
|
|
88
|
-
tb: Optional[str] = Option("pretty", "--tb", help=("Exception style: pretty, native.")),
|
|
89
91
|
):
|
|
90
92
|
if tb == "pretty":
|
|
91
93
|
app.pretty_exceptions_enable = True
|
|
@@ -94,15 +96,18 @@ def main(
|
|
|
94
96
|
else:
|
|
95
97
|
raise ValueError("Unknown value {tb!r} for --tb option. Possible values are: pretty, native.")
|
|
96
98
|
|
|
97
|
-
|
|
98
|
-
level=logging.getLevelName(log_level.upper()),
|
|
99
|
-
format="%(asctime)s %(levelname)s: %(message)s",
|
|
100
|
-
filename=log_file,
|
|
101
|
-
)
|
|
99
|
+
ctx.obj = ctx.obj or create_context("cli", args=option, envfile=env_file)
|
|
102
100
|
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
if log_file:
|
|
102
|
+
log.warning(
|
|
103
|
+
"Deprecation warning: log_file option is deprecated and will be removed in a future version. "
|
|
104
|
+
"Set file_log_path via env file instead."
|
|
105
|
+
)
|
|
106
|
+
if log_level:
|
|
107
|
+
log.warning(
|
|
108
|
+
"Deprecation warning:log_level option is deprecated and will be removed in a future version. "
|
|
109
|
+
"Set log_level and file_log_level via env file instead."
|
|
110
|
+
)
|
|
105
111
|
|
|
106
|
-
ctx.obj = ctx.obj or create_context("cli", args=option, envfile=env_file)
|
|
107
112
|
if version:
|
|
108
113
|
echo(spinta.__version__)
|
|
@@ -154,9 +154,9 @@ def _read_and_return_manifest(
|
|
|
154
154
|
rename_duplicates: bool = False,
|
|
155
155
|
verbose: bool = True,
|
|
156
156
|
check_config: bool = True,
|
|
157
|
-
|
|
157
|
+
ensure_backends: bool = True,
|
|
158
158
|
) -> Iterator[ManifestRow]:
|
|
159
|
-
context = configure_context(context, manifests,
|
|
159
|
+
context = configure_context(context, manifests, ensure_backends=ensure_backends)
|
|
160
160
|
store = load_manifest(
|
|
161
161
|
context,
|
|
162
162
|
rename_duplicates=rename_duplicates,
|
|
@@ -732,6 +732,19 @@ class Model(MetaData):
|
|
|
732
732
|
def get_given_properties(self):
|
|
733
733
|
return {prop_name: prop for prop_name, prop in self.properties.items() if not prop_name.startswith("_")}
|
|
734
734
|
|
|
735
|
+
def get_namespaces(self, include_self: bool = True) -> set[str]:
|
|
736
|
+
namespaces = []
|
|
737
|
+
if include_self:
|
|
738
|
+
namespaces.append(self.name)
|
|
739
|
+
|
|
740
|
+
if self.ns:
|
|
741
|
+
namespaces.append(self.ns.name)
|
|
742
|
+
namespaces.extend(
|
|
743
|
+
[parent_namespace.name for parent_namespace in self.ns.parents() if parent_namespace.name]
|
|
744
|
+
)
|
|
745
|
+
|
|
746
|
+
return set(namespaces)
|
|
747
|
+
|
|
735
748
|
|
|
736
749
|
class PropertyGiven:
|
|
737
750
|
access: str | None = None
|
|
@@ -1080,6 +1093,7 @@ class Config:
|
|
|
1080
1093
|
scope_formatter: ScopeFormatterFunc
|
|
1081
1094
|
scope_max_length: int
|
|
1082
1095
|
scope_log: bool
|
|
1096
|
+
check_contract_scopes: bool
|
|
1083
1097
|
default_auth_client: str
|
|
1084
1098
|
http_basic_auth: bool
|
|
1085
1099
|
token_validation_key: dict | None = None
|
|
@@ -1113,6 +1127,10 @@ class Config:
|
|
|
1113
1127
|
# Cache-Control header
|
|
1114
1128
|
cache_control: str = ""
|
|
1115
1129
|
|
|
1130
|
+
log_level: str
|
|
1131
|
+
file_log_level: str
|
|
1132
|
+
file_log_path: pathlib.Path
|
|
1133
|
+
|
|
1116
1134
|
def __init__(self):
|
|
1117
1135
|
self.commands = _CommandsConfig()
|
|
1118
1136
|
self.components = {}
|
|
@@ -266,8 +266,8 @@ CONFIG = {
|
|
|
266
266
|
"max_file_size": 100,
|
|
267
267
|
# Used to determine max amount of errors can be thrown while writing, before canceling writing stream
|
|
268
268
|
"max_error_count_on_insert": 100,
|
|
269
|
-
#
|
|
270
|
-
"
|
|
269
|
+
# Ensures setting backends by default, disabled when Spinta used as library and does not contain configuration of backends
|
|
270
|
+
"ensure_backends": True,
|
|
271
271
|
# Response Cache-Control header.
|
|
272
272
|
"cache_control_header": "public, max-age=60, must-revalidate",
|
|
273
273
|
"environments": {
|
|
@@ -572,7 +572,7 @@ def configure_rc(
|
|
|
572
572
|
resources: List[ResourceTuple] = None,
|
|
573
573
|
dataset: str = None,
|
|
574
574
|
manifest_type: str = "inline",
|
|
575
|
-
|
|
575
|
+
ensure_backends=True,
|
|
576
576
|
) -> RawConfig:
|
|
577
577
|
config: Dict[str, Any] = {}
|
|
578
578
|
|
|
@@ -658,7 +658,7 @@ def configure_rc(
|
|
|
658
658
|
if check_names is not None:
|
|
659
659
|
config["check.names"] = check_names
|
|
660
660
|
|
|
661
|
-
config["
|
|
661
|
+
config["ensure_backends"] = ensure_backends
|
|
662
662
|
|
|
663
663
|
if config:
|
|
664
664
|
rc = rc.fork(config)
|
|
@@ -127,6 +127,12 @@ class Action(enum.Enum):
|
|
|
127
127
|
def values(cls):
|
|
128
128
|
return list(cls._value2member_map_.keys())
|
|
129
129
|
|
|
130
|
+
@classmethod
|
|
131
|
+
def scope_action_values(cls) -> list[str]:
|
|
132
|
+
old_prefix_actions = list(map(lambda action: "_" + action, cls.values()))
|
|
133
|
+
new_prefix_actions = list(map(lambda action: "/:" + action, cls.values()))
|
|
134
|
+
return old_prefix_actions + new_prefix_actions
|
|
135
|
+
|
|
130
136
|
|
|
131
137
|
class Mode(enum.Enum):
|
|
132
138
|
# Internal mode always use internal backend set on manifest, namespace or
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from typing import Any, Optional, Callable
|
|
2
|
+
from sqlalchemy.sql.sqltypes import LargeBinary
|
|
3
|
+
from sqlalchemy.types import UserDefinedType
|
|
4
|
+
from sqlalchemy.dialects.oracle import base
|
|
5
|
+
from sqlalchemy.sql.elements import ColumnElement
|
|
6
|
+
from sqlalchemy import Column
|
|
7
|
+
import sqlalchemy as sa
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class LONGRAW(LargeBinary):
|
|
11
|
+
__visit_name__ = "LONGRAW"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SDO_GEOMETRY(UserDefinedType):
|
|
15
|
+
cache_ok = True
|
|
16
|
+
__visit_name__ = "SDO_GEOMETRY"
|
|
17
|
+
|
|
18
|
+
def __init__(self, geometry_type: Optional[str] = None, srid: Optional[int] = None):
|
|
19
|
+
self.geometry_type = geometry_type
|
|
20
|
+
self.srid = srid
|
|
21
|
+
|
|
22
|
+
def get_col_spec(self, **kw: Any) -> str:
|
|
23
|
+
return "SDO_GEOMETRY"
|
|
24
|
+
|
|
25
|
+
def column_expression(self, col: Column) -> ColumnElement:
|
|
26
|
+
wkt_expr = sa.func.SDO_UTIL.TO_WKTGEOMETRY(col)
|
|
27
|
+
return sa.func.NVL(wkt_expr, None)
|
|
28
|
+
|
|
29
|
+
def result_processor(self, dialect: Any, coltype: Any) -> Optional[Callable]:
|
|
30
|
+
def process(value: Optional[Any]) -> Optional[Any]:
|
|
31
|
+
if value is None:
|
|
32
|
+
return None
|
|
33
|
+
|
|
34
|
+
# Handle CLOB/LOB objects from cx_Oracle/python-oracledb
|
|
35
|
+
# LOB objects have a .read() method to extract the string content
|
|
36
|
+
if hasattr(value, "read"):
|
|
37
|
+
try:
|
|
38
|
+
value = value.read()
|
|
39
|
+
except Exception as e:
|
|
40
|
+
import warnings
|
|
41
|
+
|
|
42
|
+
warnings.warn(f"Failed to read CLOB/LOB for SDO_GEOMETRY: {e}")
|
|
43
|
+
return None
|
|
44
|
+
|
|
45
|
+
if isinstance(value, str):
|
|
46
|
+
try:
|
|
47
|
+
from shapely import from_wkt
|
|
48
|
+
|
|
49
|
+
return from_wkt(value)
|
|
50
|
+
except Exception as e:
|
|
51
|
+
import warnings
|
|
52
|
+
|
|
53
|
+
warnings.warn(f"Failed to parse WKT geometry: {e}")
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
# Unexpected type - log warning and return None
|
|
57
|
+
import warnings
|
|
58
|
+
|
|
59
|
+
warnings.warn(f"Expected WKT string or LOB for SDO_GEOMETRY but got {type(value).__name__}")
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
return process
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def flip_geometry_oracle(column: Column) -> ColumnElement:
|
|
66
|
+
return sa.func.SDO_UTIL.REVERSE_LINESTRING(column)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
if "LONG RAW" not in base.ischema_names:
|
|
70
|
+
base.ischema_names["LONG RAW"] = LONGRAW
|
|
71
|
+
|
|
72
|
+
if not hasattr(base.OracleTypeCompiler, "visit_LONGRAW"):
|
|
73
|
+
|
|
74
|
+
def visit_LONGRAW(self, type_: LONGRAW, **kw: Any) -> str:
|
|
75
|
+
return "LONG RAW"
|
|
76
|
+
|
|
77
|
+
base.OracleTypeCompiler.visit_LONGRAW = visit_LONGRAW
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
if "SDO_GEOMETRY" not in base.ischema_names:
|
|
81
|
+
base.ischema_names["SDO_GEOMETRY"] = SDO_GEOMETRY
|
|
82
|
+
|
|
83
|
+
if not hasattr(base.OracleTypeCompiler, "visit_SDO_GEOMETRY"):
|
|
84
|
+
|
|
85
|
+
def visit_SDO_GEOMETRY(self, type_: SDO_GEOMETRY, **kw: Any) -> str:
|
|
86
|
+
return "SDO_GEOMETRY"
|
|
87
|
+
|
|
88
|
+
base.OracleTypeCompiler.visit_SDO_GEOMETRY = visit_SDO_GEOMETRY
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
from shapely.geometry.base import BaseGeometry
|
|
3
|
+
|
|
4
|
+
from spinta import commands
|
|
5
|
+
from spinta.components import Context
|
|
6
|
+
from spinta.core.enums import Action
|
|
7
|
+
from spinta.formats.components import Format
|
|
8
|
+
from spinta.formats.html.components import Cell, Html
|
|
9
|
+
from spinta.types.geometry.components import Geometry
|
|
10
|
+
from spinta.types.geometry.helpers import get_display_value, get_osm_link
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@commands.prepare_dtype_for_response.register(Context, Format, Geometry, BaseGeometry)
|
|
14
|
+
def prepare_dtype_for_response(
|
|
15
|
+
context: Context,
|
|
16
|
+
fmt: Format,
|
|
17
|
+
dtype: Geometry,
|
|
18
|
+
value: BaseGeometry,
|
|
19
|
+
*,
|
|
20
|
+
data: Dict[str, Any],
|
|
21
|
+
action: Action,
|
|
22
|
+
select: dict = None,
|
|
23
|
+
):
|
|
24
|
+
return value.wkt
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@commands.prepare_dtype_for_response.register(Context, Html, Geometry, BaseGeometry)
|
|
28
|
+
def prepare_dtype_for_response(
|
|
29
|
+
context: Context,
|
|
30
|
+
fmt: Html,
|
|
31
|
+
dtype: Geometry,
|
|
32
|
+
value: BaseGeometry,
|
|
33
|
+
*,
|
|
34
|
+
data: Dict[str, Any],
|
|
35
|
+
action: Action,
|
|
36
|
+
select: dict = None,
|
|
37
|
+
):
|
|
38
|
+
display_value = get_display_value(value)
|
|
39
|
+
osm_link = get_osm_link(value, dtype)
|
|
40
|
+
return Cell(display_value, link=osm_link)
|