spinta 0.2.dev27__tar.gz → 0.2.dev28__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.dev27 → spinta-0.2.dev28}/PKG-INFO +1 -1
- {spinta-0.2.dev27 → spinta-0.2.dev28}/pyproject.toml +1 -1
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/api/__init__.py +8 -2
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/helpers.py +44 -24
- spinta-0.2.dev28/spinta/middlewares.py +113 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/response.py +3 -0
- spinta-0.2.dev27/spinta/middlewares.py +0 -55
- {spinta-0.2.dev27 → spinta-0.2.dev28}/LICENSE +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/README.rst +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/__main__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/accesslog/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/accesslog/file.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/accesslog/python.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/adapters/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/adapters/rc/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/adapters/rc/signature_adapter.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/adapters/soap_plugins.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/api/inspect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/api/schema.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/api/validators.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/asgi.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/decode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/validate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/fs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/memory/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/validate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/array/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/array/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/file/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/file/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/object/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/types/object/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/nobackend/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/column.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/redirect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/summary.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/validate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/files.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/extractors.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/cast.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/citus.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/migrate/name.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/name.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/redirect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/type.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/helpers/validate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/sqlalchemy.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/backref/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/denorm/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/file/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/file/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/file/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/file/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/geometry/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/geometry/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/object/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/object/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/object/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/object/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/ref/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/ref/validate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/text/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/types/text/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/backends/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/admin.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/comment.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/data.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/get.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/registry.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/add_local_ids.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/citus_shard.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/enums.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/admin/scripts/remove_local_ids.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/data.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/enums.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/errors.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/export/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/message.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/delete.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/error.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/state.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/sync.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/utils.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/push/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/script/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/script/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/script/core.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/script/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/script/registry.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/store.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/api_helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/enum.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/sync/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/typer.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/registry.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/schemas.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/inspect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/keymap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/main.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/pii.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/pull.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/push.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/server.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/show.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/sync.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/uncomment.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/cli/upgrade.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/client.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/search.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/version.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/commands/write.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/compat.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/config.yml +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/access.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/context.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/enums.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/core/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/commands/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/notimpl/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/notimpl/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/cast.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/column.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/wsdl/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/backends/wsdl/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/error.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/inspect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/commands/wipe.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/enums.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/commands/merge.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/inspect/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/keymaps/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/keymaps/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/keymaps/redis.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/keymaps/sync.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/datasets/utils.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/comments/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/comments/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/comments/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/enum/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/enum/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/enum/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/enum/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/enum/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/lang/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/lang/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/lang/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/param/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/param/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/param/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/param/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/prefix/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/prefix/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/prefix/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/prefix/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/prefix/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/scope/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/scope/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/scope/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dimensions/scope/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/dispatcher.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/exceptions.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/fetcher.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/ascii/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/ascii/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/ascii/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/ascii/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/csv/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/csv/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/csv/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/html/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/html/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/html/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/html/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/json/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/json/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/json/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/jsonlines/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/jsonlines/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/jsonlines/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/rdf/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/rdf/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/xlsx/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/xlsx/commands.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/formats/xlsx/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/hacks/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/hacks/spyna.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/hacks/urlparams.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/handlers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/logging_config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifest/_ns.yml +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifest/_schema/version.yml +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifest/_schema.yml +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifest/_txn.yml +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/commands/sync.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/backend/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/error.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/init.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/inspect.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/dict/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/auth.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/backend.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/commands/read.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/internal_sql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/memory/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/memory/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/memory/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/memory/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/memory/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/mermaid/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/mermaid/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/mermaid/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/openapi_config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/open_api/openapi_generator.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/rdf/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/rdf/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/rdf/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/rdf/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/sql/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/formats/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/tabular/formats/gsheets.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/xsd2/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/configure.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/migrate.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/commands/sync.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/manifests/yaml/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/methods.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/naming/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/naming/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/naming/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/naming/ufuncts.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/nodes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/renderer.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/spyna.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/templates/base.html +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/templates/data.html +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/templates/error.html +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/templates/form.html +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/citus.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/cli.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/client.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/context.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/csv.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/data.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/datasets.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/dtypes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/manifest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/migration.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/push.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/pytest.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/request.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/tabular.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/types/geometry.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/testing/utils.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/array/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/array/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/array/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/array/resolve.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/backref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/backref/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/command.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/datatype.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/denorm/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/denorm/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/denorm/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/file/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/file/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/file/decode.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/file/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/geometry/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/geometry/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/geometry/constants.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/geometry/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/geometry/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/inherit/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/inherit/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/model.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/namespace.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/object/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/object/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/object/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/partial/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/partial/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/ref/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/ref/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/ref/link.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/ref/resolve.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/store.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/text/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/text/check.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/text/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/text/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/types/text/load.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/typing.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/binds.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/changebase/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/changebase/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/changebase/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/changebase/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/common.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/linkbuilder/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/loadbuilder/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/propertyresolver/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/querybuilder/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/querybuilder/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/querybuilder/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/resultbuilder/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/summaryenv/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/summaryenv/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/units/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/units/components.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/units/helpers.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/urlparams.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/__init__.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/aiotools.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/changes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/collections.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/config.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/data.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/encoding.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/enums.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/errors.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/functools.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/idgen.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/imports.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/itertools.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/json.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/naming.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/nestedstruct.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/nin.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/passwords.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/path.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/refs.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/schema.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/scopes.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/sqlalchemy.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/sqlite.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/starlette.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/streams.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/tree.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/types.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/units.py +0 -0
- {spinta-0.2.dev27 → spinta-0.2.dev28}/spinta/utils/url.py +0 -0
|
@@ -50,7 +50,7 @@ from spinta.exceptions import (
|
|
|
50
50
|
error_response,
|
|
51
51
|
)
|
|
52
52
|
from spinta.formats.html.helpers import get_templates
|
|
53
|
-
from spinta.middlewares import ContextMiddleware, StrictTransportSecurityMiddleware
|
|
53
|
+
from spinta.middlewares import ContextMiddleware, PathNormalizationMiddleware, StrictTransportSecurityMiddleware
|
|
54
54
|
from spinta.urlparams import Version, get_response_type
|
|
55
55
|
|
|
56
56
|
log = logging.getLogger(__name__)
|
|
@@ -370,7 +370,7 @@ async def error(request, exc):
|
|
|
370
370
|
elif isinstance(exc, BaseError):
|
|
371
371
|
status_code = exc.status_code
|
|
372
372
|
errors = [error_response(exc)]
|
|
373
|
-
headers = exc.headers
|
|
373
|
+
headers = dict(exc.headers)
|
|
374
374
|
else:
|
|
375
375
|
if isinstance(exc, HTTPException):
|
|
376
376
|
status_code = exc.status_code
|
|
@@ -400,6 +400,11 @@ async def error(request, exc):
|
|
|
400
400
|
|
|
401
401
|
response = {"errors": errors}
|
|
402
402
|
|
|
403
|
+
# Error responses can reflect request input (e.g. the requested path) and
|
|
404
|
+
# must never be stored by shared caches, otherwise they can be used for
|
|
405
|
+
# web cache poisoning.
|
|
406
|
+
headers["Cache-Control"] = "no-store"
|
|
407
|
+
|
|
403
408
|
fmt = get_response_type(request.state.context, request)
|
|
404
409
|
if fmt == "json" or fmt is None:
|
|
405
410
|
return JSONResponse(
|
|
@@ -467,6 +472,7 @@ def init(context: Context):
|
|
|
467
472
|
StrictTransportSecurityMiddleware,
|
|
468
473
|
value=config.http_strict_transport_security,
|
|
469
474
|
),
|
|
475
|
+
Middleware(PathNormalizationMiddleware),
|
|
470
476
|
Middleware(ContextMiddleware, context=context),
|
|
471
477
|
]
|
|
472
478
|
|
|
@@ -653,9 +653,20 @@ class PropertyReader(TabularReader):
|
|
|
653
653
|
enums: Set[str]
|
|
654
654
|
|
|
655
655
|
def read(self, row: Dict[str, str]) -> None:
|
|
656
|
-
|
|
656
|
+
# Parse the data type once, here at the boundary, and pass the parsed
|
|
657
|
+
# result inward. Downstream code must not re-parse `row["type"]` or
|
|
658
|
+
# compare against the raw string: modifiers (`required`, `unique`) and
|
|
659
|
+
# arguments would make a type such as `backref required` or
|
|
660
|
+
# `object required` unrecognisable. Parent and nesting resolution only
|
|
661
|
+
# needs the bare type, while `_handle_datatype` keeps the modifiers.
|
|
662
|
+
dtype = _resolve_dtype(self, row)
|
|
663
|
+
bare_row = {**row, "type": dtype["type"]}
|
|
664
|
+
complete_structure, parent_structure, prop_name = _extract_and_create_parent_data(
|
|
665
|
+
self, bare_row, bare_row["property"]
|
|
666
|
+
)
|
|
667
|
+
|
|
668
|
+
prop_data = _handle_datatype(self, row, dtype)
|
|
657
669
|
|
|
658
|
-
prop_data = _handle_datatype(self, row)
|
|
659
670
|
prop_name = _combine_parent_with_prop(prop_name, prop_data, parent_structure, complete_structure)
|
|
660
671
|
|
|
661
672
|
# Edge case where there is no nesting, need to couple `prop_data` with `complete_structure`
|
|
@@ -748,8 +759,11 @@ def _initial_text_property_schema(given_name: str, dtype: dict, row: dict):
|
|
|
748
759
|
return result
|
|
749
760
|
|
|
750
761
|
|
|
751
|
-
def _datatype_handler(
|
|
752
|
-
dtype: dict =
|
|
762
|
+
def _datatype_handler(
|
|
763
|
+
reader: PropertyReader, row: dict, initial_data_loader: Callable[[str, dict, dict], dict], dtype: dict = None
|
|
764
|
+
):
|
|
765
|
+
if dtype is None:
|
|
766
|
+
dtype = _resolve_dtype(reader, row)
|
|
753
767
|
given_name = row["property"]
|
|
754
768
|
reader.name = _clean_up_prop_name(row["property"].split(".")[-1])
|
|
755
769
|
|
|
@@ -759,7 +773,7 @@ def _datatype_handler(reader: PropertyReader, row: dict, initial_data_loader: Ca
|
|
|
759
773
|
f"Property {reader.name!r} must be defined in a model context. "
|
|
760
774
|
f"Now it is defined in {context.name!r} {context.type} context."
|
|
761
775
|
)
|
|
762
|
-
_check_if_property_already_set(reader,
|
|
776
|
+
_check_if_property_already_set(reader, dtype["type"], given_name)
|
|
763
777
|
|
|
764
778
|
if reader.state.base and not dtype["type"]:
|
|
765
779
|
dtype["type"] = "inherit"
|
|
@@ -804,8 +818,9 @@ def _datatype_handler(reader: PropertyReader, row: dict, initial_data_loader: Ca
|
|
|
804
818
|
return new_data
|
|
805
819
|
|
|
806
820
|
|
|
807
|
-
def _string_datatype_handler(reader: PropertyReader, row: dict):
|
|
808
|
-
dtype
|
|
821
|
+
def _string_datatype_handler(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
822
|
+
if dtype is None:
|
|
823
|
+
dtype = _resolve_dtype(reader, row)
|
|
809
824
|
given_name = row["property"]
|
|
810
825
|
reader.name = _clean_up_prop_name(row["property"].split(".")[-1])
|
|
811
826
|
|
|
@@ -815,7 +830,7 @@ def _string_datatype_handler(reader: PropertyReader, row: dict):
|
|
|
815
830
|
f"Property {reader.name!r} must be defined in a model context. "
|
|
816
831
|
f"Now it is defined in {context.name!r} {context.type} context."
|
|
817
832
|
)
|
|
818
|
-
existing_data = _check_if_property_already_set(reader,
|
|
833
|
+
existing_data = _check_if_property_already_set(reader, dtype["type"], given_name)
|
|
819
834
|
if dtype["type"] == DataTypeEnum.TEXT.value and existing_data:
|
|
820
835
|
reader.error(
|
|
821
836
|
f"Property {reader.name!r} with the same name is already "
|
|
@@ -835,8 +850,9 @@ def _string_datatype_handler(reader: PropertyReader, row: dict):
|
|
|
835
850
|
return new_data
|
|
836
851
|
|
|
837
852
|
|
|
838
|
-
def _text_datatype_handler(reader: PropertyReader, row: dict):
|
|
839
|
-
dtype
|
|
853
|
+
def _text_datatype_handler(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
854
|
+
if dtype is None:
|
|
855
|
+
dtype = _resolve_dtype(reader, row)
|
|
840
856
|
given_name = row["property"]
|
|
841
857
|
reader.name = _clean_up_prop_name(row["property"].split(".")[-1])
|
|
842
858
|
|
|
@@ -846,7 +862,7 @@ def _text_datatype_handler(reader: PropertyReader, row: dict):
|
|
|
846
862
|
f"Property {reader.name!r} must be defined in a model context. "
|
|
847
863
|
f"Now it is defined in {context.name!r} {context.type} context."
|
|
848
864
|
)
|
|
849
|
-
result = _check_if_property_already_set(reader,
|
|
865
|
+
result = _check_if_property_already_set(reader, dtype["type"], given_name)
|
|
850
866
|
if not (result and result["explicitly_given"] is False and result["type"] == DataTypeEnum.TEXT.value or not result):
|
|
851
867
|
reader.error(
|
|
852
868
|
f"Property {reader.name!r} with the same name is already "
|
|
@@ -893,22 +909,23 @@ def _text_datatype_handler(reader: PropertyReader, row: dict):
|
|
|
893
909
|
return new_data
|
|
894
910
|
|
|
895
911
|
|
|
896
|
-
def _default_datatype_handler(reader: PropertyReader, row: dict):
|
|
897
|
-
return _datatype_handler(reader, row, _initial_normal_property_schema)
|
|
912
|
+
def _default_datatype_handler(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
913
|
+
return _datatype_handler(reader, row, _initial_normal_property_schema, dtype)
|
|
898
914
|
|
|
899
915
|
|
|
900
|
-
def _array_datatype_handler(reader: PropertyReader, row: dict):
|
|
901
|
-
return _datatype_handler(reader, row, _initial_array_property_schema)
|
|
916
|
+
def _array_datatype_handler(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
917
|
+
return _datatype_handler(reader, row, _initial_array_property_schema, dtype)
|
|
902
918
|
|
|
903
919
|
|
|
904
|
-
def _partial_datatype_handler(reader: PropertyReader, row: dict):
|
|
905
|
-
return _datatype_handler(reader, row, _initial_partial_property_schema)
|
|
920
|
+
def _partial_datatype_handler(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
921
|
+
return _datatype_handler(reader, row, _initial_partial_property_schema, dtype)
|
|
906
922
|
|
|
907
923
|
|
|
908
|
-
def _handle_datatype(reader: PropertyReader, row: dict):
|
|
909
|
-
dtype
|
|
924
|
+
def _handle_datatype(reader: PropertyReader, row: dict, dtype: dict = None):
|
|
925
|
+
if dtype is None:
|
|
926
|
+
dtype = _resolve_dtype(reader, row)
|
|
910
927
|
handler = DATATYPE_HANDLERS.get(dtype["type"], DATATYPE_HANDLERS["_default"])
|
|
911
|
-
return handler(reader, row)
|
|
928
|
+
return handler(reader, row, dtype)
|
|
912
929
|
|
|
913
930
|
|
|
914
931
|
DATATYPE_HANDLERS = {
|
|
@@ -1204,7 +1221,7 @@ def _extract_children_from_nested(base: dict, children_name: str) -> dict:
|
|
|
1204
1221
|
return base
|
|
1205
1222
|
|
|
1206
1223
|
|
|
1207
|
-
def _check_if_property_already_set(reader: PropertyReader,
|
|
1224
|
+
def _check_if_property_already_set(reader: PropertyReader, given_type: str, full_name: str):
|
|
1208
1225
|
# Treat '@' as normal '.', since '_extract_children_from_nested' is able to extract based on type
|
|
1209
1226
|
split = full_name.replace("@", ".").split(".")
|
|
1210
1227
|
base = {}
|
|
@@ -1250,11 +1267,14 @@ def _check_if_property_already_set(reader: PropertyReader, given_row: dict, full
|
|
|
1250
1267
|
f"Property {full_name!r} with the same name is already defined for this {reader.state.model.name!r} model."
|
|
1251
1268
|
)
|
|
1252
1269
|
|
|
1270
|
+
# `given_type` is the bare data type (modifiers and arguments already
|
|
1271
|
+
# stripped by the caller), so a nesting type such as `object` is recognised
|
|
1272
|
+
# even when it was declared as `object required`.
|
|
1253
1273
|
if base and (
|
|
1254
|
-
(base["type"] in ALLOWED_PARTIAL_TYPES and
|
|
1255
|
-
or (base["type"] in ALLOWED_ARRAY_TYPES and
|
|
1274
|
+
(base["type"] in ALLOWED_PARTIAL_TYPES and given_type not in ALLOWED_PARTIAL_TYPES)
|
|
1275
|
+
or (base["type"] in ALLOWED_ARRAY_TYPES and given_type not in ALLOWED_ARRAY_TYPES)
|
|
1256
1276
|
):
|
|
1257
|
-
raise DataTypeCannotBeUsedForNesting(dtype=
|
|
1277
|
+
raise DataTypeCannotBeUsedForNesting(dtype=given_type)
|
|
1258
1278
|
return base
|
|
1259
1279
|
|
|
1260
1280
|
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import posixpath
|
|
2
|
+
|
|
3
|
+
from starlette.responses import JSONResponse
|
|
4
|
+
from starlette.types import ASGIApp, Message, Receive, Scope, Send
|
|
5
|
+
|
|
6
|
+
from spinta.components import Context
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _is_normalized_path(scope: Scope) -> bool:
|
|
10
|
+
raw_path = (scope.get("raw_path") or b"").lower()
|
|
11
|
+
# Percent-encoded slashes, backslashes and dots decode into extra path
|
|
12
|
+
# delimiters and dot segments that shared caches do not see when they
|
|
13
|
+
# build the cache key.
|
|
14
|
+
if b"%2f" in raw_path or b"%5c" in raw_path or b"%2e" in raw_path:
|
|
15
|
+
return False
|
|
16
|
+
path = scope["path"]
|
|
17
|
+
if "\\" in path:
|
|
18
|
+
return False
|
|
19
|
+
normalized = posixpath.normpath(path)
|
|
20
|
+
# posixpath.normpath preserves a leading "//" (POSIX leaves two leading
|
|
21
|
+
# slashes implementation-defined), but shared caches collapse it to "/",
|
|
22
|
+
# so treat such a path as non-normalized.
|
|
23
|
+
if normalized.startswith("//"):
|
|
24
|
+
normalized = normalized[1:]
|
|
25
|
+
if path.endswith("/") and normalized != "/":
|
|
26
|
+
normalized += "/"
|
|
27
|
+
return path == normalized
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class PathNormalizationMiddleware:
|
|
31
|
+
"""Rejects requests whose path is not in normalized form.
|
|
32
|
+
|
|
33
|
+
Shared caches (proxies, CDNs) normalize URLs (resolve `.` and `..`
|
|
34
|
+
segments, decode percent-encoded slashes, collapse duplicate slashes)
|
|
35
|
+
when building the cache key, while the application receives the original
|
|
36
|
+
path and may reflect it in the response. This discrepancy enables web
|
|
37
|
+
cache poisoning: a response generated for a malicious non-normalized path
|
|
38
|
+
gets cached under the key of a legitimate URL. Rejecting such requests
|
|
39
|
+
with a non-cacheable response closes that gap.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(self, app: ASGIApp) -> None:
|
|
43
|
+
self.app = app
|
|
44
|
+
|
|
45
|
+
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
46
|
+
if scope["type"] == "http" and not _is_normalized_path(scope):
|
|
47
|
+
response = JSONResponse(
|
|
48
|
+
{
|
|
49
|
+
"errors": [
|
|
50
|
+
{
|
|
51
|
+
"code": "InvalidRequestPath",
|
|
52
|
+
"message": "Request path is not normalized.",
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
status_code=404,
|
|
57
|
+
headers={"Cache-Control": "no-store"},
|
|
58
|
+
)
|
|
59
|
+
await response(scope, receive, send)
|
|
60
|
+
return
|
|
61
|
+
await self.app(scope, receive, send)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class StrictTransportSecurityMiddleware:
|
|
65
|
+
"""Adds `Strict-Transport-Security` (HSTS) header to every HTTP response.
|
|
66
|
+
|
|
67
|
+
HSTS instructs browsers to only communicate with the server via HTTPS. The
|
|
68
|
+
header value is configurable via the `http_strict_transport_security`
|
|
69
|
+
configuration option and defaults to a `max-age` of one year together with
|
|
70
|
+
the `includeSubDomains` directive.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
def __init__(self, app: ASGIApp, *, value: str) -> None:
|
|
74
|
+
self.app = app
|
|
75
|
+
self.value = value
|
|
76
|
+
|
|
77
|
+
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
78
|
+
if scope["type"] != "http" or not self.value:
|
|
79
|
+
await self.app(scope, receive, send)
|
|
80
|
+
return
|
|
81
|
+
|
|
82
|
+
async def send_with_hsts(message: Message) -> None:
|
|
83
|
+
if message["type"] == "http.response.start":
|
|
84
|
+
headers = message.setdefault("headers", [])
|
|
85
|
+
headers.append((b"strict-transport-security", self.value.encode("latin-1")))
|
|
86
|
+
await send(message)
|
|
87
|
+
|
|
88
|
+
await self.app(scope, receive, send_with_hsts)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class ContextMiddleware:
|
|
92
|
+
"""Adds `request.state.context`.
|
|
93
|
+
|
|
94
|
+
There is a global `context`, where all heavy things are preloaded as
|
|
95
|
+
startup. This preloading happens on Starlette's 'startup' event.
|
|
96
|
+
|
|
97
|
+
`ContextMiddleware` creates a fork of global preloaded context for each
|
|
98
|
+
request and assigns it to `request.state.context`. Forked context can be
|
|
99
|
+
modified in each request without effecting global context.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
def __init__(self, app: ASGIApp, *, context: Context) -> None:
|
|
103
|
+
self.app = app
|
|
104
|
+
self.context = context
|
|
105
|
+
|
|
106
|
+
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
107
|
+
if scope["type"] in ["http", "websocket"]:
|
|
108
|
+
with self.context.fork("request") as context:
|
|
109
|
+
scope.setdefault("state", {})
|
|
110
|
+
scope["state"]["context"] = context
|
|
111
|
+
await self.app(scope, receive, send)
|
|
112
|
+
else:
|
|
113
|
+
await self.app(scope, receive, send)
|
|
@@ -387,6 +387,9 @@ def cache_control_response_headers(context: Context, model: Model, target_id: st
|
|
|
387
387
|
|
|
388
388
|
cache_control = {
|
|
389
389
|
"Cache-Control": config.cache_control,
|
|
390
|
+
# Response body depends on these request headers (content negotiation,
|
|
391
|
+
# auth scopes), so shared caches must include them in the cache key.
|
|
392
|
+
"Vary": "Accept, Accept-Language, Authorization",
|
|
390
393
|
"Last-Modified": last_modified,
|
|
391
394
|
"ETag": revision,
|
|
392
395
|
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
from starlette.types import ASGIApp, Message, Receive, Scope, Send
|
|
2
|
-
|
|
3
|
-
from spinta.components import Context
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class StrictTransportSecurityMiddleware:
|
|
7
|
-
"""Adds `Strict-Transport-Security` (HSTS) header to every HTTP response.
|
|
8
|
-
|
|
9
|
-
HSTS instructs browsers to only communicate with the server via HTTPS. The
|
|
10
|
-
header value is configurable via the `http_strict_transport_security`
|
|
11
|
-
configuration option and defaults to a `max-age` of one year together with
|
|
12
|
-
the `includeSubDomains` directive.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
def __init__(self, app: ASGIApp, *, value: str) -> None:
|
|
16
|
-
self.app = app
|
|
17
|
-
self.value = value
|
|
18
|
-
|
|
19
|
-
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
20
|
-
if scope["type"] != "http" or not self.value:
|
|
21
|
-
await self.app(scope, receive, send)
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
async def send_with_hsts(message: Message) -> None:
|
|
25
|
-
if message["type"] == "http.response.start":
|
|
26
|
-
headers = message.setdefault("headers", [])
|
|
27
|
-
headers.append((b"strict-transport-security", self.value.encode("latin-1")))
|
|
28
|
-
await send(message)
|
|
29
|
-
|
|
30
|
-
await self.app(scope, receive, send_with_hsts)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class ContextMiddleware:
|
|
34
|
-
"""Adds `request.state.context`.
|
|
35
|
-
|
|
36
|
-
There is a global `context`, where all heavy things are preloaded as
|
|
37
|
-
startup. This preloading happens on Starlette's 'startup' event.
|
|
38
|
-
|
|
39
|
-
`ContextMiddleware` creates a fork of global preloaded context for each
|
|
40
|
-
request and assigns it to `request.state.context`. Forked context can be
|
|
41
|
-
modified in each request without effecting global context.
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
def __init__(self, app: ASGIApp, *, context: Context) -> None:
|
|
45
|
-
self.app = app
|
|
46
|
-
self.context = context
|
|
47
|
-
|
|
48
|
-
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
49
|
-
if scope["type"] in ["http", "websocket"]:
|
|
50
|
-
with self.context.fork("request") as context:
|
|
51
|
-
scope.setdefault("state", {})
|
|
52
|
-
scope["state"]["context"] = context
|
|
53
|
-
await self.app(scope, receive, send)
|
|
54
|
-
else:
|
|
55
|
-
await self.app(scope, receive, send)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|