spinta 0.2.dev5__tar.gz → 0.2.dev6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (718) hide show
  1. {spinta-0.2.dev5 → spinta-0.2.dev6}/PKG-INFO +4 -5
  2. {spinta-0.2.dev5 → spinta-0.2.dev6}/pyproject.toml +8 -6
  3. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/api/__init__.py +31 -28
  4. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/auth.py +188 -87
  5. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/config.py +7 -1
  6. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/script/registry.py +1 -1
  7. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/store.py +11 -5
  8. spinta-0.2.dev6/spinta/cli/helpers/sync/__init__.py +9 -0
  9. spinta-0.2.dev6/spinta/cli/helpers/sync/controllers/data_service.py +11 -0
  10. spinta-0.2.dev6/spinta/cli/helpers/sync/controllers/dataset.py +105 -0
  11. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/sync/controllers/distribution.py +4 -8
  12. spinta-0.2.dev6/spinta/cli/helpers/sync/controllers/enum.py +9 -0
  13. spinta-0.2.dev6/spinta/cli/helpers/sync/helpers.py +233 -0
  14. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/manifest.py +20 -12
  15. spinta-0.2.dev6/spinta/cli/sync.py +75 -0
  16. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/auth.py +5 -3
  17. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/read.py +14 -7
  18. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/components.py +4 -0
  19. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/config.py +6 -0
  20. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/config.py +3 -0
  21. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/context.py +5 -0
  22. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/enums.py +3 -3
  23. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +3 -0
  24. spinta-0.2.dev6/spinta/datasets/backends/dataframe/backends/soap/components.py +50 -0
  25. spinta-0.2.dev6/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +136 -0
  26. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/commands/read.py +14 -126
  27. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +4 -21
  28. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/load.py +8 -6
  29. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/enum/helpers.py +1 -1
  30. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/exceptions.py +10 -2
  31. spinta-0.2.dev6/spinta/handlers.py +51 -0
  32. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/helpers.py +1 -1
  33. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/auth.py +18 -9
  34. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/open_api/helpers.py +10 -0
  35. spinta-0.2.dev6/spinta/manifests/open_api/openapi_config.py +697 -0
  36. spinta-0.2.dev6/spinta/manifests/open_api/openapi_generator.py +683 -0
  37. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/helpers.py +6 -0
  38. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd2/helpers.py +37 -9
  39. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/load.py +2 -0
  40. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/client.py +8 -8
  41. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/pytest.py +10 -65
  42. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/config.py +4 -0
  43. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/model.py +3 -3
  44. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/store.py +11 -9
  45. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/common.py +19 -0
  46. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/linkbuilder/ufuncs.py +4 -17
  47. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/resultbuilder/ufuncs.py +25 -0
  48. spinta-0.2.dev6/spinta/units/__init__.py +0 -0
  49. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/enums.py +7 -2
  50. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/response.py +62 -1
  51. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/scopes.py +2 -1
  52. spinta-0.2.dev5/spinta/cli/helpers/sync/__init__.py +0 -2
  53. spinta-0.2.dev5/spinta/cli/helpers/sync/controllers/dataset.py +0 -64
  54. spinta-0.2.dev5/spinta/cli/helpers/sync/helpers.py +0 -194
  55. spinta-0.2.dev5/spinta/cli/sync.py +0 -72
  56. spinta-0.2.dev5/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -18
  57. {spinta-0.2.dev5 → spinta-0.2.dev6}/LICENSE +0 -0
  58. {spinta-0.2.dev5 → spinta-0.2.dev6}/README.rst +0 -0
  59. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/__init__.py +0 -0
  60. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/__main__.py +0 -0
  61. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/accesslog/__init__.py +0 -0
  62. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/accesslog/file.py +0 -0
  63. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/accesslog/python.py +0 -0
  64. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/api/inspect.py +0 -0
  65. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/api/schema.py +0 -0
  66. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/api/validators.py +0 -0
  67. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/asgi.py +0 -0
  68. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/__init__.py +0 -0
  69. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/components.py +0 -0
  70. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/constants.py +0 -0
  71. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/__init__.py +0 -0
  72. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/__init__.py +0 -0
  73. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/bootstrap.py +0 -0
  74. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/changes.py +0 -0
  75. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/decode.py +0 -0
  76. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/encode.py +0 -0
  77. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/init.py +0 -0
  78. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/load.py +0 -0
  79. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/migrate.py +0 -0
  80. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/read.py +0 -0
  81. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/validate.py +0 -0
  82. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/wait.py +0 -0
  83. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/wipe.py +0 -0
  84. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/commands/write.py +0 -0
  85. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/fs/components.py +0 -0
  86. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/helpers.py +0 -0
  87. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/__init__.py +0 -0
  88. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/__init__.py +0 -0
  89. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/auth.py +0 -0
  90. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/bootstrap.py +0 -0
  91. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/changes.py +0 -0
  92. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/check.py +0 -0
  93. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/encode.py +0 -0
  94. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/init.py +0 -0
  95. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/load.py +0 -0
  96. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/manifest.py +0 -0
  97. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/read.py +0 -0
  98. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/wait.py +0 -0
  99. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/wipe.py +0 -0
  100. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/commands/write.py +0 -0
  101. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/memory/components.py +0 -0
  102. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/__init__.py +0 -0
  103. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/__init__.py +0 -0
  104. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/bootstrap.py +0 -0
  105. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/changes.py +0 -0
  106. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/encode.py +0 -0
  107. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/freeze.py +0 -0
  108. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/init.py +0 -0
  109. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/load.py +0 -0
  110. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/migrate.py +0 -0
  111. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/read.py +0 -0
  112. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/validate.py +0 -0
  113. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/wait.py +0 -0
  114. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/wipe.py +0 -0
  115. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/commands/write.py +0 -0
  116. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/components.py +0 -0
  117. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/helpers.py +0 -0
  118. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/__init__.py +0 -0
  119. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/array/__init__.py +0 -0
  120. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/array/write.py +0 -0
  121. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/file/__init__.py +0 -0
  122. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/file/write.py +0 -0
  123. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/object/__init__.py +0 -0
  124. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/types/object/write.py +0 -0
  125. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
  126. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/ufuncs/components.py +0 -0
  127. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
  128. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/__init__.py +0 -0
  129. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/__init__.py +0 -0
  130. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
  131. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/changes.py +0 -0
  132. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/init.py +0 -0
  133. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/load.py +0 -0
  134. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/read.py +0 -0
  135. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/wait.py +0 -0
  136. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/wipe.py +0 -0
  137. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/commands/write.py +0 -0
  138. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/nobackend/components.py +0 -0
  139. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/__init__.py +0 -0
  140. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/__init__.py +0 -0
  141. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
  142. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/changes.py +0 -0
  143. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/column.py +0 -0
  144. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/encode.py +0 -0
  145. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/freeze.py +0 -0
  146. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/init.py +0 -0
  147. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/link.py +0 -0
  148. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/load.py +0 -0
  149. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/manifest.py +0 -0
  150. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
  151. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
  152. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
  153. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
  154. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
  155. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
  156. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
  157. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
  158. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
  159. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
  160. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
  161. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
  162. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/read.py +0 -0
  163. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/redirect.py +0 -0
  164. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/summary.py +0 -0
  165. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/validate.py +0 -0
  166. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/wait.py +0 -0
  167. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/wipe.py +0 -0
  168. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/commands/write.py +0 -0
  169. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/components.py +0 -0
  170. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/constants.py +0 -0
  171. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/files.py +0 -0
  172. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/__init__.py +0 -0
  173. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/changes.py +0 -0
  174. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
  175. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/extractors.py +0 -0
  176. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/manifest.py +0 -0
  177. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
  178. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
  179. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
  180. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/name.py +0 -0
  181. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/redirect.py +0 -0
  182. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/helpers/validate.py +0 -0
  183. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/sqlalchemy.py +0 -0
  184. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/__init__.py +0 -0
  185. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array/__init__.py +0 -0
  186. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array/freeze.py +0 -0
  187. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array/init.py +0 -0
  188. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array/wipe.py +0 -0
  189. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array/write.py +0 -0
  190. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
  191. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
  192. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
  193. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/backref/init.py +0 -0
  194. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/denorm/init.py +0 -0
  195. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
  196. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/file/__init__.py +0 -0
  197. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/file/freeze.py +0 -0
  198. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/file/init.py +0 -0
  199. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/file/read.py +0 -0
  200. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/file/write.py +0 -0
  201. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
  202. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
  203. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/geometry/helpers.py +0 -0
  204. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/geometry/init.py +0 -0
  205. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/geometry/write.py +0 -0
  206. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/object/__init__.py +0 -0
  207. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/object/freeze.py +0 -0
  208. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/object/init.py +0 -0
  209. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/object/read.py +0 -0
  210. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/object/wipe.py +0 -0
  211. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
  212. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/ref/freeze.py +0 -0
  213. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/ref/init.py +0 -0
  214. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/ref/validate.py +0 -0
  215. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/text/__init__.py +0 -0
  216. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/types/text/init.py +0 -0
  217. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
  218. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/components.py +0 -0
  219. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
  220. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
  221. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  222. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
  223. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
  224. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
  225. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
  226. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/backends/types/__init__.py +0 -0
  227. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/__init__.py +0 -0
  228. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/admin.py +0 -0
  229. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/auth.py +0 -0
  230. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/data.py +0 -0
  231. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/get.py +0 -0
  232. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/__init__.py +0 -0
  233. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/__init__.py +0 -0
  234. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/components.py +0 -0
  235. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/registry.py +0 -0
  236. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
  237. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
  238. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
  239. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/auth.py +0 -0
  240. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/data.py +0 -0
  241. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/errors.py +0 -0
  242. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/__init__.py +0 -0
  243. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/backends/__init__.py +0 -0
  244. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
  245. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
  246. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
  247. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
  248. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/commands.py +0 -0
  249. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/components.py +0 -0
  250. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/export/helpers.py +0 -0
  251. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/manifest.py +0 -0
  252. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/migrate.py +0 -0
  253. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/__init__.py +0 -0
  254. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/components.py +0 -0
  255. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/delete.py +0 -0
  256. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/error.py +0 -0
  257. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/read.py +0 -0
  258. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/state.py +0 -0
  259. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/sync.py +0 -0
  260. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/utils.py +0 -0
  261. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/push/write.py +0 -0
  262. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/script/__init__.py +0 -0
  263. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/script/components.py +0 -0
  264. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/script/core.py +0 -0
  265. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/script/helpers.py +0 -0
  266. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
  267. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
  268. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/typer.py +0 -0
  269. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/__init__.py +0 -0
  270. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/components.py +0 -0
  271. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/registry.py +0 -0
  272. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
  273. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
  274. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
  275. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
  276. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
  277. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
  278. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
  279. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
  280. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
  281. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/init.py +0 -0
  282. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/inspect.py +0 -0
  283. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/keymap.py +0 -0
  284. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/main.py +0 -0
  285. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/migrate.py +0 -0
  286. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/pii.py +0 -0
  287. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/pull.py +0 -0
  288. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/push.py +0 -0
  289. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/server.py +0 -0
  290. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/show.py +0 -0
  291. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/cli/upgrade.py +0 -0
  292. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/client.py +0 -0
  293. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/__init__.py +0 -0
  294. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/helpers.py +0 -0
  295. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/search.py +0 -0
  296. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/version.py +0 -0
  297. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/commands/write.py +0 -0
  298. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/compat.py +0 -0
  299. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/config.yml +0 -0
  300. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/__init__.py +0 -0
  301. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/access.py +0 -0
  302. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/core/ufuncs.py +0 -0
  303. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/__init__.py +0 -0
  304. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/__init__.py +0 -0
  305. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/__init__.py +0 -0
  306. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
  307. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
  308. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
  309. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
  310. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
  311. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
  312. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
  313. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
  314. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
  315. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
  316. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
  317. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
  318. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
  319. {spinta-0.2.dev5/spinta/datasets/backends/dataframe → spinta-0.2.dev6/spinta/datasets/backends/dataframe/backends/xml}/commands/__init__.py +0 -0
  320. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
  321. {spinta-0.2.dev5/spinta/datasets/backends/dataframe/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/dataframe/commands}/__init__.py +0 -0
  322. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/components.py +0 -0
  323. {spinta-0.2.dev5/spinta/datasets/backends/dataframe/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/dataframe/ufuncs}/__init__.py +0 -0
  324. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
  325. {spinta-0.2.dev5/spinta/datasets/backends/notimpl → spinta-0.2.dev6/spinta/datasets/backends/dataframe/ufuncs/query}/__init__.py +0 -0
  326. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
  327. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
  328. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/helpers.py +0 -0
  329. {spinta-0.2.dev5/spinta/datasets/backends/notimpl/commands → spinta-0.2.dev6/spinta/datasets/backends/notimpl}/__init__.py +0 -0
  330. {spinta-0.2.dev5/spinta/datasets/backends/sql → spinta-0.2.dev6/spinta/datasets/backends/notimpl/commands}/__init__.py +0 -0
  331. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
  332. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
  333. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/notimpl/components.py +0 -0
  334. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends → spinta-0.2.dev6/spinta/datasets/backends/sql}/__init__.py +0 -0
  335. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mariadb → spinta-0.2.dev6/spinta/datasets/backends/sql/backends}/__init__.py +0 -0
  336. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
  337. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mariadb/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mariadb}/__init__.py +0 -0
  338. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
  339. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
  340. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mariadb/ufuncs}/__init__.py +0 -0
  341. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mssql → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query}/__init__.py +0 -0
  342. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
  343. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
  344. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mssql/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mssql}/__init__.py +0 -0
  345. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
  346. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
  347. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mssql/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mssql/ufuncs}/__init__.py +0 -0
  348. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mysql → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mssql/ufuncs/query}/__init__.py +0 -0
  349. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
  350. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
  351. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mysql/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mysql}/__init__.py +0 -0
  352. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
  353. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
  354. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/mysql/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mysql/ufuncs}/__init__.py +0 -0
  355. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/oracle → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/mysql/ufuncs/query}/__init__.py +0 -0
  356. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
  357. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
  358. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/oracle/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/oracle}/__init__.py +0 -0
  359. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
  360. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
  361. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/oracle/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/oracle/ufuncs}/__init__.py +0 -0
  362. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/postgresql → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/oracle/ufuncs/query}/__init__.py +0 -0
  363. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
  364. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
  365. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/postgresql/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/postgresql}/__init__.py +0 -0
  366. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
  367. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
  368. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/postgresql/ufuncs}/__init__.py +0 -0
  369. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/sqlite → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query}/__init__.py +0 -0
  370. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
  371. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  372. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/sqlite/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/sqlite}/__init__.py +0 -0
  373. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
  374. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
  375. {spinta-0.2.dev5/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/sqlite/ufuncs}/__init__.py +0 -0
  376. {spinta-0.2.dev5/spinta/datasets/backends/sql/commands → spinta-0.2.dev6/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query}/__init__.py +0 -0
  377. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
  378. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
  379. {spinta-0.2.dev5/spinta/datasets/backends/sql/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sql/commands}/__init__.py +0 -0
  380. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
  381. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/cast.py +0 -0
  382. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/column.py +0 -0
  383. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/init.py +0 -0
  384. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/load.py +0 -0
  385. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/read.py +0 -0
  386. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/commands/wait.py +0 -0
  387. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/components.py +0 -0
  388. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/helpers.py +0 -0
  389. {spinta-0.2.dev5/spinta/datasets/backends/sql/ufuncs/query → spinta-0.2.dev6/spinta/datasets/backends/sql/ufuncs}/__init__.py +0 -0
  390. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
  391. {spinta-0.2.dev5/spinta/datasets/backends/sql/ufuncs/result → spinta-0.2.dev6/spinta/datasets/backends/sql/ufuncs/query}/__init__.py +0 -0
  392. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
  393. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
  394. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
  395. {spinta-0.2.dev5/spinta/datasets/backends/sqldump → spinta-0.2.dev6/spinta/datasets/backends/sql/ufuncs/result}/__init__.py +0 -0
  396. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
  397. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
  398. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
  399. {spinta-0.2.dev5/spinta/datasets/backends/sqldump/commands → spinta-0.2.dev6/spinta/datasets/backends/sqldump}/__init__.py +0 -0
  400. {spinta-0.2.dev5/spinta/datasets/backends/sqldump/ufuncs → spinta-0.2.dev6/spinta/datasets/backends/sqldump/commands}/__init__.py +0 -0
  401. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
  402. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
  403. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
  404. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/components.py +0 -0
  405. {spinta-0.2.dev5/spinta/datasets/backends/wsdl → spinta-0.2.dev6/spinta/datasets/backends/sqldump/ufuncs}/__init__.py +0 -0
  406. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
  407. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
  408. {spinta-0.2.dev5/spinta/datasets/backends/wsdl/commads → spinta-0.2.dev6/spinta/datasets/backends/wsdl}/__init__.py +0 -0
  409. {spinta-0.2.dev5/spinta/datasets/commands → spinta-0.2.dev6/spinta/datasets/backends/wsdl/commads}/__init__.py +0 -0
  410. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
  411. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/backends/wsdl/components.py +0 -0
  412. {spinta-0.2.dev5/spinta/datasets/inspect → spinta-0.2.dev6/spinta/datasets/commands}/__init__.py +0 -0
  413. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/check.py +0 -0
  414. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/error.py +0 -0
  415. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/inspect.py +0 -0
  416. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/link.py +0 -0
  417. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/commands/wipe.py +0 -0
  418. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/components.py +0 -0
  419. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/enums.py +0 -0
  420. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/helpers.py +0 -0
  421. {spinta-0.2.dev5/spinta/datasets/inspect/commands → spinta-0.2.dev6/spinta/datasets/inspect}/__init__.py +0 -0
  422. {spinta-0.2.dev5/spinta/datasets/keymaps → spinta-0.2.dev6/spinta/datasets/inspect/commands}/__init__.py +0 -0
  423. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/inspect/commands/manifest.py +0 -0
  424. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/inspect/commands/merge.py +0 -0
  425. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/inspect/components.py +0 -0
  426. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/inspect/helpers.py +0 -0
  427. {spinta-0.2.dev5/spinta/dimensions → spinta-0.2.dev6/spinta/datasets/keymaps}/__init__.py +0 -0
  428. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/keymaps/components.py +0 -0
  429. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
  430. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/keymaps/sync.py +0 -0
  431. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/datasets/utils.py +0 -0
  432. {spinta-0.2.dev5/spinta/dimensions/comments → spinta-0.2.dev6/spinta/dimensions}/__init__.py +0 -0
  433. {spinta-0.2.dev5/spinta/dimensions/enum → spinta-0.2.dev6/spinta/dimensions/comments}/__init__.py +0 -0
  434. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/comments/components.py +0 -0
  435. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/comments/helpers.py +0 -0
  436. {spinta-0.2.dev5/spinta/dimensions/lang → spinta-0.2.dev6/spinta/dimensions/enum}/__init__.py +0 -0
  437. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/enum/commands.py +0 -0
  438. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/enum/components.py +0 -0
  439. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/enum/ufuncs.py +0 -0
  440. {spinta-0.2.dev5/spinta/dimensions/param → spinta-0.2.dev6/spinta/dimensions/lang}/__init__.py +0 -0
  441. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/lang/components.py +0 -0
  442. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/lang/helpers.py +0 -0
  443. {spinta-0.2.dev5/spinta/dimensions/prefix → spinta-0.2.dev6/spinta/dimensions/param}/__init__.py +0 -0
  444. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/param/components.py +0 -0
  445. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/param/helpers.py +0 -0
  446. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/param/ufuncs.py +0 -0
  447. {spinta-0.2.dev5/spinta/dimensions/prefix/commands → spinta-0.2.dev6/spinta/dimensions/prefix}/__init__.py +0 -0
  448. {spinta-0.2.dev5/spinta/formats → spinta-0.2.dev6/spinta/dimensions/prefix/commands}/__init__.py +0 -0
  449. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/prefix/commands/load.py +0 -0
  450. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/prefix/components.py +0 -0
  451. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dimensions/prefix/helpers.py +0 -0
  452. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/dispatcher.py +0 -0
  453. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/fetcher.py +0 -0
  454. {spinta-0.2.dev5/spinta/formats/ascii → spinta-0.2.dev6/spinta/formats}/__init__.py +0 -0
  455. {spinta-0.2.dev5/spinta/formats/csv → spinta-0.2.dev6/spinta/formats/ascii}/__init__.py +0 -0
  456. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/ascii/commands.py +0 -0
  457. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/ascii/components.py +0 -0
  458. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/ascii/helpers.py +0 -0
  459. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/components.py +0 -0
  460. {spinta-0.2.dev5/spinta/formats/html → spinta-0.2.dev6/spinta/formats/csv}/__init__.py +0 -0
  461. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/csv/commands.py +0 -0
  462. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/csv/components.py +0 -0
  463. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/helpers.py +0 -0
  464. {spinta-0.2.dev5/spinta/formats/json → spinta-0.2.dev6/spinta/formats/html}/__init__.py +0 -0
  465. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/html/commands.py +0 -0
  466. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/html/components.py +0 -0
  467. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/html/helpers.py +0 -0
  468. {spinta-0.2.dev5/spinta/formats/jsonlines → spinta-0.2.dev6/spinta/formats/json}/__init__.py +0 -0
  469. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/json/commands.py +0 -0
  470. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/json/components.py +0 -0
  471. {spinta-0.2.dev5/spinta/formats/xlsx → spinta-0.2.dev6/spinta/formats/jsonlines}/__init__.py +0 -0
  472. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/jsonlines/commands.py +0 -0
  473. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/jsonlines/components.py +0 -0
  474. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/rdf/commands.py +0 -0
  475. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/rdf/components.py +0 -0
  476. {spinta-0.2.dev5/spinta/hacks → spinta-0.2.dev6/spinta/formats/xlsx}/__init__.py +0 -0
  477. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/xlsx/commands.py +0 -0
  478. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/formats/xlsx/components.py +0 -0
  479. {spinta-0.2.dev5/spinta/manifests → spinta-0.2.dev6/spinta/hacks}/__init__.py +0 -0
  480. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/hacks/spyna.py +0 -0
  481. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/hacks/urlparams.py +0 -0
  482. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/logging_config.py +0 -0
  483. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifest/_ns.yml +0 -0
  484. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifest/_schema/version.yml +0 -0
  485. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifest/_schema.yml +0 -0
  486. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifest/_txn.yml +0 -0
  487. {spinta-0.2.dev5/spinta/manifests/backend → spinta-0.2.dev6/spinta/manifests}/__init__.py +0 -0
  488. {spinta-0.2.dev5/spinta/manifests/backend/commands → spinta-0.2.dev6/spinta/manifests/backend}/__init__.py +0 -0
  489. {spinta-0.2.dev5/spinta/manifests → spinta-0.2.dev6/spinta/manifests/backend}/commands/__init__.py +0 -0
  490. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/bootstrap.py +0 -0
  491. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/configure.py +0 -0
  492. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/freeze.py +0 -0
  493. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/load.py +0 -0
  494. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/manifest.py +0 -0
  495. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/migrate.py +0 -0
  496. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/commands/sync.py +0 -0
  497. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/components.py +0 -0
  498. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/backend/helpers.py +0 -0
  499. {spinta-0.2.dev5/spinta/manifests/dict → spinta-0.2.dev6/spinta/manifests/commands}/__init__.py +0 -0
  500. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/auth.py +0 -0
  501. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/check.py +0 -0
  502. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/error.py +0 -0
  503. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/init.py +0 -0
  504. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/inspect.py +0 -0
  505. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/link.py +0 -0
  506. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/load.py +0 -0
  507. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/manifest.py +0 -0
  508. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/migrate.py +0 -0
  509. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/commands/read.py +0 -0
  510. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/components.py +0 -0
  511. {spinta-0.2.dev5/spinta/manifests/dict/commands → spinta-0.2.dev6/spinta/manifests/dict}/__init__.py +0 -0
  512. {spinta-0.2.dev5/spinta/manifests/internal → spinta-0.2.dev6/spinta/manifests/dict/commands}/__init__.py +0 -0
  513. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/dict/commands/configure.py +0 -0
  514. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/dict/commands/load.py +0 -0
  515. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/dict/components.py +0 -0
  516. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/dict/helpers.py +0 -0
  517. {spinta-0.2.dev5/spinta/manifests/internal/commands → spinta-0.2.dev6/spinta/manifests/internal}/__init__.py +0 -0
  518. {spinta-0.2.dev5/spinta/manifests/internal_sql → spinta-0.2.dev6/spinta/manifests/internal/commands}/__init__.py +0 -0
  519. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal/commands/configure.py +0 -0
  520. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal/commands/load.py +0 -0
  521. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal/components.py +0 -0
  522. {spinta-0.2.dev5/spinta/manifests/internal_sql/commands → spinta-0.2.dev6/spinta/manifests/internal_sql}/__init__.py +0 -0
  523. {spinta-0.2.dev5/spinta/manifests/memory → spinta-0.2.dev6/spinta/manifests/internal_sql/commands}/__init__.py +0 -0
  524. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/backend.py +0 -0
  525. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
  526. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/configure.py +0 -0
  527. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/load.py +0 -0
  528. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
  529. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/commands/read.py +0 -0
  530. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/components.py +0 -0
  531. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/internal_sql/helpers.py +0 -0
  532. {spinta-0.2.dev5/spinta/manifests/memory/commands → spinta-0.2.dev6/spinta/manifests/memory}/__init__.py +0 -0
  533. {spinta-0.2.dev5/spinta/manifests/mermaid → spinta-0.2.dev6/spinta/manifests/memory/commands}/__init__.py +0 -0
  534. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/memory/commands/configure.py +0 -0
  535. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/memory/commands/load.py +0 -0
  536. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/memory/components.py +0 -0
  537. {spinta-0.2.dev5/spinta/manifests/open_api → spinta-0.2.dev6/spinta/manifests/mermaid}/__init__.py +0 -0
  538. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/mermaid/components.py +0 -0
  539. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/mermaid/helpers.py +0 -0
  540. {spinta-0.2.dev5/spinta/manifests/open_api/commands → spinta-0.2.dev6/spinta/manifests/open_api}/__init__.py +0 -0
  541. {spinta-0.2.dev5/spinta/manifests/sql → spinta-0.2.dev6/spinta/manifests/open_api/commands}/__init__.py +0 -0
  542. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/open_api/commands/configure.py +0 -0
  543. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/open_api/commands/load.py +0 -0
  544. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/open_api/components.py +0 -0
  545. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
  546. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/rdf/commands/configure.py +0 -0
  547. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/rdf/commands/load.py +0 -0
  548. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/rdf/components.py +0 -0
  549. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/rdf/helpers.py +0 -0
  550. {spinta-0.2.dev5/spinta/manifests/sql/commands → spinta-0.2.dev6/spinta/manifests/sql}/__init__.py +0 -0
  551. {spinta-0.2.dev5/spinta/manifests/tabular → spinta-0.2.dev6/spinta/manifests/sql/commands}/__init__.py +0 -0
  552. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/sql/commands/configure.py +0 -0
  553. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/sql/commands/load.py +0 -0
  554. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/sql/components.py +0 -0
  555. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/sql/helpers.py +0 -0
  556. {spinta-0.2.dev5/spinta/manifests/tabular/commands → spinta-0.2.dev6/spinta/manifests/tabular}/__init__.py +0 -0
  557. {spinta-0.2.dev5/spinta/manifests/tabular/formats → spinta-0.2.dev6/spinta/manifests/tabular/commands}/__init__.py +0 -0
  558. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
  559. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/commands/configure.py +0 -0
  560. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/commands/load.py +0 -0
  561. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/components.py +0 -0
  562. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/constants.py +0 -0
  563. {spinta-0.2.dev5/spinta/manifests/xsd → spinta-0.2.dev6/spinta/manifests/tabular/formats}/__init__.py +0 -0
  564. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/tabular/formats/gsheets.py +0 -0
  565. {spinta-0.2.dev5/spinta/manifests/xsd/commands → spinta-0.2.dev6/spinta/manifests/xsd}/__init__.py +0 -0
  566. {spinta-0.2.dev5/spinta/manifests/xsd2 → spinta-0.2.dev6/spinta/manifests/xsd/commands}/__init__.py +0 -0
  567. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd/commands/configure.py +0 -0
  568. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd/commands/load.py +0 -0
  569. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd/components.py +0 -0
  570. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd/helpers.py +0 -0
  571. {spinta-0.2.dev5/spinta/manifests/xsd2/commands → spinta-0.2.dev6/spinta/manifests/xsd2}/__init__.py +0 -0
  572. {spinta-0.2.dev5/spinta/manifests/yaml → spinta-0.2.dev6/spinta/manifests/xsd2/commands}/__init__.py +0 -0
  573. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd2/commands/configure.py +0 -0
  574. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd2/commands/load.py +0 -0
  575. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/xsd2/components.py +0 -0
  576. {spinta-0.2.dev5/spinta/manifests/yaml/commands → spinta-0.2.dev6/spinta/manifests/yaml}/__init__.py +0 -0
  577. {spinta-0.2.dev5/spinta/migrations/schema → spinta-0.2.dev6/spinta/manifests/yaml/commands}/__init__.py +0 -0
  578. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
  579. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/configure.py +0 -0
  580. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/freeze.py +0 -0
  581. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/manifest.py +0 -0
  582. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/migrate.py +0 -0
  583. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/commands/sync.py +0 -0
  584. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/components.py +0 -0
  585. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/manifests/yaml/helpers.py +0 -0
  586. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/methods.py +0 -0
  587. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/middlewares.py +0 -0
  588. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/migrations/__init__.py +0 -0
  589. {spinta-0.2.dev5/spinta/naming → spinta-0.2.dev6/spinta/migrations/schema}/__init__.py +0 -0
  590. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/migrations/schema/alembic.py +0 -0
  591. {spinta-0.2.dev5/spinta/testing/types → spinta-0.2.dev6/spinta/naming}/__init__.py +0 -0
  592. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/naming/components.py +0 -0
  593. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/naming/helpers.py +0 -0
  594. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/naming/ufuncts.py +0 -0
  595. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/nodes.py +0 -0
  596. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/renderer.py +0 -0
  597. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/spyna.py +0 -0
  598. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/templates/base.html +0 -0
  599. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/templates/data.html +0 -0
  600. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/templates/error.html +0 -0
  601. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/templates/form.html +0 -0
  602. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/__init__.py +0 -0
  603. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/cli.py +0 -0
  604. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/config.py +0 -0
  605. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/context.py +0 -0
  606. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/csv.py +0 -0
  607. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/data.py +0 -0
  608. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/datasets.py +0 -0
  609. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/dtypes.py +0 -0
  610. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/manifest.py +0 -0
  611. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/push.py +0 -0
  612. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/request.py +0 -0
  613. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/tabular.py +0 -0
  614. {spinta-0.2.dev5/spinta → spinta-0.2.dev6/spinta/testing}/types/__init__.py +0 -0
  615. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/types/geometry.py +0 -0
  616. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/ufuncs.py +0 -0
  617. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/testing/utils.py +0 -0
  618. {spinta-0.2.dev5/spinta/types/array → spinta-0.2.dev6/spinta/types}/__init__.py +0 -0
  619. {spinta-0.2.dev5/spinta/types/backref → spinta-0.2.dev6/spinta/types/array}/__init__.py +0 -0
  620. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/array/check.py +0 -0
  621. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/array/link.py +0 -0
  622. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/array/resolve.py +0 -0
  623. {spinta-0.2.dev5/spinta/types/denorm → spinta-0.2.dev6/spinta/types/backref}/__init__.py +0 -0
  624. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/backref/link.py +0 -0
  625. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/command.py +0 -0
  626. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/datatype.py +0 -0
  627. {spinta-0.2.dev5/spinta/types/file → spinta-0.2.dev6/spinta/types/denorm}/__init__.py +0 -0
  628. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/denorm/check.py +0 -0
  629. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/denorm/link.py +0 -0
  630. {spinta-0.2.dev5/spinta/types/geometry → spinta-0.2.dev6/spinta/types/file}/__init__.py +0 -0
  631. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/file/components.py +0 -0
  632. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/file/decode.py +0 -0
  633. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/file/helpers.py +0 -0
  634. {spinta-0.2.dev5/spinta/types/inherit → spinta-0.2.dev6/spinta/types/geometry}/__init__.py +0 -0
  635. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/geometry/components.py +0 -0
  636. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/geometry/constants.py +0 -0
  637. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/geometry/helpers.py +0 -0
  638. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/geometry/load.py +0 -0
  639. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/helpers.py +0 -0
  640. {spinta-0.2.dev5/spinta/types/object → spinta-0.2.dev6/spinta/types/inherit}/__init__.py +0 -0
  641. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/inherit/check.py +0 -0
  642. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/namespace.py +0 -0
  643. {spinta-0.2.dev5/spinta/types/partial → spinta-0.2.dev6/spinta/types/object}/__init__.py +0 -0
  644. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/object/check.py +0 -0
  645. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/object/link.py +0 -0
  646. {spinta-0.2.dev5/spinta/types/ref → spinta-0.2.dev6/spinta/types/partial}/__init__.py +0 -0
  647. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/partial/link.py +0 -0
  648. {spinta-0.2.dev5/spinta/types/text → spinta-0.2.dev6/spinta/types/ref}/__init__.py +0 -0
  649. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/ref/check.py +0 -0
  650. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/ref/link.py +0 -0
  651. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/ref/resolve.py +0 -0
  652. {spinta-0.2.dev5/spinta/ufuncs → spinta-0.2.dev6/spinta/types/text}/__init__.py +0 -0
  653. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/text/check.py +0 -0
  654. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/text/components.py +0 -0
  655. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/text/helpers.py +0 -0
  656. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/types/text/load.py +0 -0
  657. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/typing.py +0 -0
  658. {spinta-0.2.dev5/spinta/ufuncs/changebase → spinta-0.2.dev6/spinta/ufuncs}/__init__.py +0 -0
  659. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/binds.py +0 -0
  660. {spinta-0.2.dev5/spinta/ufuncs/linkbuilder → spinta-0.2.dev6/spinta/ufuncs/changebase}/__init__.py +0 -0
  661. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/changebase/components.py +0 -0
  662. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/changebase/helpers.py +0 -0
  663. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/changebase/ufuncs.py +0 -0
  664. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/components.py +0 -0
  665. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/helpers.py +0 -0
  666. {spinta-0.2.dev5/spinta/ufuncs/loadbuilder → spinta-0.2.dev6/spinta/ufuncs/linkbuilder}/__init__.py +0 -0
  667. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/linkbuilder/components.py +0 -0
  668. {spinta-0.2.dev5/spinta/ufuncs/propertyresolver → spinta-0.2.dev6/spinta/ufuncs/loadbuilder}/__init__.py +0 -0
  669. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/loadbuilder/components.py +0 -0
  670. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
  671. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
  672. {spinta-0.2.dev5/spinta/ufuncs/querybuilder → spinta-0.2.dev6/spinta/ufuncs/propertyresolver}/__init__.py +0 -0
  673. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/propertyresolver/components.py +0 -0
  674. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
  675. {spinta-0.2.dev5/spinta/ufuncs/requestparamsbuilder → spinta-0.2.dev6/spinta/ufuncs/querybuilder}/__init__.py +0 -0
  676. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/querybuilder/components.py +0 -0
  677. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/querybuilder/helpers.py +0 -0
  678. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
  679. {spinta-0.2.dev5/spinta/ufuncs/resultbuilder → spinta-0.2.dev6/spinta/ufuncs/requestparamsbuilder}/__init__.py +0 -0
  680. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
  681. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
  682. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
  683. {spinta-0.2.dev5/spinta/ufuncs/summaryenv → spinta-0.2.dev6/spinta/ufuncs/resultbuilder}/__init__.py +0 -0
  684. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/resultbuilder/components.py +0 -0
  685. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
  686. {spinta-0.2.dev5/spinta/units → spinta-0.2.dev6/spinta/ufuncs/summaryenv}/__init__.py +0 -0
  687. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/summaryenv/components.py +0 -0
  688. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
  689. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/units/components.py +0 -0
  690. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/units/helpers.py +0 -0
  691. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/urlparams.py +0 -0
  692. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/__init__.py +0 -0
  693. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/aiotools.py +0 -0
  694. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/changes.py +0 -0
  695. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/config.py +0 -0
  696. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/data.py +0 -0
  697. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/encoding.py +0 -0
  698. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/errors.py +0 -0
  699. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/functools.py +0 -0
  700. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/idgen.py +0 -0
  701. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/imports.py +0 -0
  702. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/itertools.py +0 -0
  703. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/json.py +0 -0
  704. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/naming.py +0 -0
  705. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/nestedstruct.py +0 -0
  706. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/nin.py +0 -0
  707. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/passwords.py +0 -0
  708. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/path.py +0 -0
  709. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/refs.py +0 -0
  710. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/schema.py +0 -0
  711. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/sqlalchemy.py +0 -0
  712. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/sqlite.py +0 -0
  713. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/starlette.py +0 -0
  714. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/streams.py +0 -0
  715. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/tree.py +0 -0
  716. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/types.py +0 -0
  717. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/units.py +0 -0
  718. {spinta-0.2.dev5 → spinta-0.2.dev6}/spinta/utils/url.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: spinta
3
- Version: 0.2.dev5
3
+ Version: 0.2.dev6
4
4
  Summary: A platform for describing, extracting, transforming, loading and serving open data.
5
5
  License: MIT
6
6
  Author: Mantas Zimnickas
@@ -33,7 +33,7 @@ Requires-Dist: aiofiles
33
33
  Requires-Dist: aiohttp
34
34
  Requires-Dist: alembic (>=1.11.0,<1.12.0) ; extra == "migrations" or extra == "all"
35
35
  Requires-Dist: asyncpg
36
- Requires-Dist: authlib (>=0.11,<0.12)
36
+ Requires-Dist: authlib (>=1.0.0)
37
37
  Requires-Dist: cachetools
38
38
  Requires-Dist: click
39
39
  Requires-Dist: dask[dataframe]
@@ -46,7 +46,6 @@ Requires-Dist: lark-parser
46
46
  Requires-Dist: lxml
47
47
  Requires-Dist: msgpack
48
48
  Requires-Dist: multipledispatch
49
- Requires-Dist: mypy
50
49
  Requires-Dist: numpy
51
50
  Requires-Dist: openpyxl
52
51
  Requires-Dist: phonenumbers
@@ -65,8 +64,8 @@ Requires-Dist: ruamel.yaml
65
64
  Requires-Dist: setuptools
66
65
  Requires-Dist: setuptools-scm
67
66
  Requires-Dist: sqlalchemy (>=1.4,<1.5)
68
- Requires-Dist: sqlalchemy-utils
69
- Requires-Dist: sqlean-py
67
+ Requires-Dist: sqlalchemy-utils (<=0.41.2)
68
+ Requires-Dist: sqlean-py (<=3.49.1)
70
69
  Requires-Dist: sqlparse
71
70
  Requires-Dist: starlette (>=0.40)
72
71
  Requires-Dist: tabulate
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "spinta"
3
- version = "0.2.dev5"
3
+ version = "0.2.dev6"
4
4
  description = "A platform for describing, extracting, transforming, loading and serving open data."
5
5
  authors = ["Mantas Zimnickas <sirexas@gmail.com>"]
6
6
  license = "MIT"
@@ -36,7 +36,9 @@ spinta = "spinta.cli.main:app"
36
36
  [tool.poetry.dependencies]
37
37
  python = "^3.9"
38
38
  aiofiles = "*"
39
- authlib = "~0.11"
39
+ # https://github.com/atviriduomenys/spinta/issues/675
40
+ # 0.x -> 1.x upgrade changed their implementation API, so we can no longer support 0.x.
41
+ authlib = ">=1.0.0"
40
42
  jinja2 = "*"
41
43
  jsonpatch = "*"
42
44
  lark-parser = "*"
@@ -79,7 +81,8 @@ psycopg2-binary = "*"
79
81
  # sqlalchemy = "~1.4"
80
82
  sqlalchemy = "~1.4"
81
83
  # https://github.com/kvesteri/sqlalchemy-utils/issues/472
82
- sqlalchemy-utils = "*"
84
+ # https://github.com/kvesteri/sqlalchemy-utils/issues/791
85
+ sqlalchemy-utils = "<=0.41.2"
83
86
 
84
87
  # Mongo backend dependendencies
85
88
  # https://github.com/atviriduomenys/spinta/issues/806
@@ -106,12 +109,11 @@ psutil = "*"
106
109
  tabulate = "*"
107
110
  pyproj = [{version = ">=3.7.0", python = ">=3.13"}, {version = "3.6.1", python = "<3.13"}]
108
111
  xmltodict = "*"
109
- sqlean-py = "*"
112
+ # Error when trying to install >=3.50
113
+ sqlean-py = "<=3.49.1"
110
114
  cachetools = "*"
111
115
  docutils = "^0.21.2"
112
116
  zeep = "^4.3.1"
113
- # mypy naudojamas tam, kad galima būtų naudoti `defaultdict`, ne tik tipų tikrinimui
114
- mypy = "*"
115
117
 
116
118
  [tool.poetry.extras]
117
119
  http = ["gunicorn", "uvicorn"]
@@ -1,24 +1,24 @@
1
1
  import json
2
+ import logging
2
3
  import uuid
3
4
  from typing import Type
4
5
 
5
- import logging
6
-
7
6
  from authlib.common.errors import AuthlibHTTPError
8
7
  from authlib.oauth2.rfc6750.errors import InsufficientScopeError
9
8
  from pydantic import ValidationError
10
-
11
9
  from starlette.applications import Starlette
10
+ from starlette.datastructures import FormData
12
11
  from starlette.exceptions import HTTPException
12
+ from starlette.middleware import Middleware
13
13
  from starlette.requests import Request
14
- from starlette.responses import Response, JSONResponse
15
14
  from starlette.responses import RedirectResponse
16
- from starlette.templating import Jinja2Templates
17
- from starlette.staticfiles import StaticFiles
15
+ from starlette.responses import Response, JSONResponse
18
16
  from starlette.routing import Route, Mount
19
- from starlette.middleware import Middleware
17
+ from starlette.staticfiles import StaticFiles
18
+ from starlette.templating import Jinja2Templates
20
19
 
21
20
  from spinta import components, commands
21
+ from spinta.accesslog import create_accesslog
22
22
  from spinta.api.validators import ClientAddData, ClientPatchData, ClientSecretPatchData
23
23
  from spinta.auth import (
24
24
  AuthorizationServer,
@@ -32,19 +32,19 @@ from spinta.auth import (
32
32
  get_clients_path,
33
33
  Scopes,
34
34
  authenticate_token,
35
+ StarletteOAuth2Data,
35
36
  )
36
- from spinta.auth import ResourceProtector
37
37
  from spinta.auth import BearerTokenValidator
38
+ from spinta.auth import ResourceProtector
38
39
  from spinta.auth import get_auth_request
39
40
  from spinta.auth import get_auth_token
40
41
  from spinta.commands import prepare, get_version
41
42
  from spinta.components import Context, UrlParams
42
43
  from spinta.exceptions import BaseError, MultipleErrors, error_response, InsufficientPermission, ClientValidationError
44
+ from spinta.exceptions import NoAuthServer
43
45
  from spinta.middlewares import ContextMiddleware
44
46
  from spinta.urlparams import Version
45
47
  from spinta.urlparams import get_response_type
46
- from spinta.accesslog import create_accesslog
47
- from spinta.exceptions import NoAuthServer
48
48
  from spinta.utils.path import resource_filename
49
49
 
50
50
  log = logging.getLogger(__name__)
@@ -79,12 +79,13 @@ async def auth_token(request: Request):
79
79
  auth_server = context.get("auth.server")
80
80
  if auth_server.enabled():
81
81
  resp: JSONResponse = auth_server.create_token_response(
82
- {
83
- "method": request.method,
84
- "url": str(request.url.replace(query="")),
85
- "body": dict(await request.form()),
86
- "headers": request.headers,
87
- }
82
+ StarletteOAuth2Data(
83
+ method=request.method,
84
+ uri=str(request.url.replace(query="")),
85
+ headers=request.headers,
86
+ form=await request.form(),
87
+ query=request.query_params,
88
+ )
88
89
  )
89
90
 
90
91
  payload = json.loads(resp.body.decode("utf-8"))
@@ -117,12 +118,13 @@ def _auth_client_context(request: Request) -> Context:
117
118
  context.set(
118
119
  "auth.request",
119
120
  get_auth_request(
120
- {
121
- "method": request.method,
122
- "url": str(request.url.replace(query="")),
123
- "body": None,
124
- "headers": request.headers,
125
- }
121
+ StarletteOAuth2Data(
122
+ method=request.method,
123
+ uri=str(request.url.replace(query="")),
124
+ headers=request.headers,
125
+ form=FormData(),
126
+ query=request.query_params,
127
+ )
126
128
  ),
127
129
  )
128
130
  context.set("auth.token", get_auth_token(context))
@@ -295,12 +297,13 @@ async def homepage(request: Request):
295
297
  context.set(
296
298
  "auth.request",
297
299
  get_auth_request(
298
- {
299
- "method": request.method,
300
- "url": str(request.url.replace(query="")),
301
- "body": None,
302
- "headers": request.headers,
303
- }
300
+ StarletteOAuth2Data(
301
+ method=request.method,
302
+ uri=str(request.url.replace(query="")),
303
+ headers=request.headers,
304
+ form=await request.form(),
305
+ query=request.query_params,
306
+ )
304
307
  ),
305
308
  )
306
309
  context.set("auth.token", get_auth_token(context))
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import base64
4
+ import dataclasses
4
5
  import datetime
5
6
  import enum
6
7
  import json
@@ -9,27 +10,31 @@ import os
9
10
  import pathlib
10
11
  import time
11
12
  import uuid
13
+ from collections import defaultdict
14
+ from functools import cached_property
12
15
  from threading import Lock
13
16
  from typing import Set, Any
14
17
  from typing import Type
15
18
  from typing import Union, List, Tuple
16
19
 
17
20
  import ruamel.yaml
18
- from authlib.jose import jwk
21
+ from authlib.jose import JsonWebKey
19
22
  from authlib.jose import jwt
20
23
  from authlib.jose.errors import JoseError
21
24
  from authlib.oauth2 import OAuth2Error
22
25
  from authlib.oauth2 import OAuth2Request
23
26
  from authlib.oauth2 import rfc6749
24
27
  from authlib.oauth2 import rfc6750
25
- from authlib.oauth2.rfc6749 import grants
26
- from authlib.oauth2.rfc6749.errors import InvalidClientError, UnsupportedTokenTypeError
28
+ from authlib.oauth2.rfc6749 import grants, OAuth2Payload, scope_to_list, list_to_scope
29
+ from authlib.oauth2.rfc6749.errors import InvalidClientError
27
30
  from authlib.oauth2.rfc6750.errors import InsufficientScopeError
31
+ from authlib.oauth2.rfc6749.util import scope_to_list
28
32
  from cachetools import cached, LRUCache
29
33
  from cachetools.keys import hashkey
30
34
  from cryptography.hazmat.backends import default_backend
31
35
  from cryptography.hazmat.primitives.asymmetric import rsa
32
36
  from multipledispatch import dispatch
37
+ from starlette.datastructures import FormData, QueryParams, Headers
33
38
  from starlette.exceptions import HTTPException
34
39
  from starlette.responses import JSONResponse
35
40
 
@@ -68,6 +73,10 @@ CLIENT_FILE_CACHE_SIZE_LIMIT = 1000
68
73
  KEYMAP_CACHE_SIZE_LIMIT = 1
69
74
  DEFAULT_CLIENT_ID_CACHE_SIZE_LIMIT = 1
70
75
  DEFAULT_CREDENTIALS_SECTION = "default"
76
+ DEPRECATED_SCOPE_PREFIX = "spinta_"
77
+
78
+ # Scope types taken from authlib.oauth2.rfc6749.util.scope_to_list
79
+ SCOPE_TYPE = Union[tuple, list, set, str, None]
71
80
 
72
81
 
73
82
  class KeyType(enum.Enum):
@@ -92,31 +101,31 @@ class Scopes(enum.Enum):
92
101
  # Grants access to change meta fields (like _id) through request
93
102
  SET_META_FIELDS = "set_meta_fields"
94
103
 
95
- def __str__(self):
104
+ def __str__(self) -> str:
96
105
  return self.value
97
106
 
98
107
 
99
108
  class AuthorizationServer(rfc6749.AuthorizationServer):
100
109
  def __init__(self, context):
101
- super().__init__(
102
- query_client=self._query_client,
103
- generate_token=rfc6750.BearerToken(
110
+ super().__init__()
111
+ self.register_grant(grants.ClientCredentialsGrant)
112
+ self.register_token_generator(
113
+ "default",
114
+ rfc6750.BearerToken(
104
115
  access_token_generator=self._generate_token,
105
116
  expires_generator=self._get_expires_in,
106
117
  ),
107
- save_token=self._save_token,
108
118
  )
109
- self.register_grant(grants.ClientCredentialsGrant)
110
119
  self._context = context
111
120
  self._private_key = load_key(context, KeyType.private, required=False)
112
121
 
113
- def enabled(self):
122
+ def enabled(self) -> bool:
114
123
  return self._private_key is not None
115
124
 
116
- def create_oauth2_request(self, request):
125
+ def create_oauth2_request(self, request: StarletteOAuth2Data) -> OAuth2Request:
117
126
  return get_auth_request(request)
118
127
 
119
- def handle_response(self, status_code, payload, headers) -> JSONResponse:
128
+ def handle_response(self, status_code: int, payload: Any, headers: Any) -> JSONResponse:
120
129
  return JSONResponse(payload, status_code=status_code, headers=dict(headers))
121
130
 
122
131
  def handle_error_response(
@@ -130,19 +139,19 @@ class AuthorizationServer(rfc6749.AuthorizationServer):
130
139
  def send_signal(self, *args, **kwargs):
131
140
  pass
132
141
 
133
- def _query_client(self, client_name):
142
+ def query_client(self, client_name: str) -> Client:
134
143
  path = get_clients_path(self._context.get("config"))
135
144
  return query_client(path, client_name, is_name=True)
136
145
 
137
- def _save_token(self, token, request):
146
+ def save_token(self, token, request):
138
147
  pass
139
148
 
140
- def _get_expires_in(self, client, grant_type):
149
+ def _get_expires_in(self, client: Client, grant_type: str) -> int:
141
150
  return int(datetime.timedelta(days=10).total_seconds())
142
151
 
143
- def _generate_token(self, client: Client, grant_type, user, scope, **kwargs):
152
+ def _generate_token(self, grant_type: str, client: Client, user: str, scope: str, **kwargs) -> str:
144
153
  expires_in = self._get_expires_in(client, grant_type)
145
- scopes = scope.split() if scope else []
154
+ scopes = set(scope.split()) if scope else set()
146
155
  return create_access_token(self._context, self._private_key, client.id, expires_in, scopes)
147
156
 
148
157
 
@@ -152,9 +161,8 @@ class ResourceProtector(rfc6749.ResourceProtector):
152
161
  context: Context,
153
162
  Validator: Type[rfc6750.BearerTokenValidator],
154
163
  ):
155
- self.TOKEN_VALIDATORS = {
156
- Validator.TOKEN_TYPE: Validator(context),
157
- }
164
+ super().__init__()
165
+ self.register_token_validator(Validator(context))
158
166
 
159
167
 
160
168
  class BearerTokenValidator(rfc6750.BearerTokenValidator):
@@ -163,15 +171,9 @@ class BearerTokenValidator(rfc6750.BearerTokenValidator):
163
171
  self._context = context
164
172
  self._public_key = load_key(context, KeyType.public)
165
173
 
166
- def authenticate_token(self, token_string: str):
174
+ def authenticate_token(self, token_string: str) -> Token:
167
175
  return Token(token_string, self)
168
176
 
169
- def request_invalid(self, request):
170
- return False
171
-
172
- def token_revoked(self, token):
173
- return False
174
-
175
177
 
176
178
  class Client(rfc6749.ClientMixin):
177
179
  id: str
@@ -195,21 +197,45 @@ class Client(rfc6749.ClientMixin):
195
197
  self.scopes = set(scopes)
196
198
  self.backends = backends
197
199
 
198
- def __repr__(self):
200
+ # Auth method used for token endpoint.
201
+ # More info: token_endpoint_auth_method https://datatracker.ietf.org/doc/html/rfc7591#autoid-5
202
+ self.token_endpoint_auth_method = "client_secret_basic"
203
+
204
+ # Allowed grant types.
205
+ # More info: grant_types https://datatracker.ietf.org/doc/html/rfc7591#autoid-5
206
+ self.grant_types = ["client_credentials"]
207
+
208
+ def __repr__(self) -> str:
199
209
  cls = type(self)
200
210
  return f"{cls.__module__}.{cls.__name__}(id={self.id!r})"
201
211
 
202
- def check_client_secret(self, client_secret):
212
+ def get_client_id(self) -> str:
213
+ return self.id
214
+
215
+ def get_allowed_scope(self, scope: str) -> str:
216
+ scopes = set(scope_to_list(scope))
217
+ unknown_scopes = scopes - self.scopes
218
+ if unknown_scopes:
219
+ log.warning("requested unknown scopes: %s", ", ".join(sorted(unknown_scopes)))
220
+ unknown_scopes = ", ".join(sorted(unknown_scopes))
221
+ raise InvalidScopes(scopes=unknown_scopes)
222
+ else:
223
+ result = list_to_scope(scopes)
224
+ return result
225
+
226
+ def check_client_secret(self, client_secret: Any) -> bool:
203
227
  log.debug(f"Incorrect client {self.id!r} secret hash.")
204
228
  return passwords.verify(client_secret, self.secret_hash)
205
229
 
206
- def check_token_endpoint_auth_method(self, method: str):
207
- return method == "client_secret_basic"
230
+ def check_endpoint_auth_method(self, method: str, endpoint: str) -> bool:
231
+ if endpoint == "token":
232
+ return method == self.token_endpoint_auth_method
233
+ return False
208
234
 
209
- def check_grant_type(self, grant_type: str):
210
- return grant_type == "client_credentials"
235
+ def check_grant_type(self, grant_type: str) -> bool:
236
+ return grant_type in self.grant_types
211
237
 
212
- def check_requested_scopes(self, scopes: set):
238
+ def check_requested_scopes(self, scopes: set) -> bool:
213
239
  unknown_scopes = scopes - self.scopes
214
240
  if unknown_scopes:
215
241
  log.warning("requested unknown scopes: %s", ", ".join(sorted(unknown_scopes)))
@@ -226,22 +252,32 @@ class Token(rfc6749.TokenMixin):
226
252
  except JoseError as e:
227
253
  raise InvalidToken(error=str(e))
228
254
 
255
+ self.expires_in = self._token["exp"] - self._token["iat"]
256
+ self.client_id = self.get_aud()
257
+
229
258
  self._validator = validator
230
259
 
231
- def valid_scope(self, scope, *, operator="AND"):
232
- if self._validator.scope_insufficient(self, scope, operator):
233
- return False
234
- else:
235
- return True
260
+ def valid_scope(self, scope: SCOPE_TYPE) -> bool:
261
+ required_scopes = scope_to_list(scope)
262
+ return not self._validator.scope_insufficient(self.get_scope(), required_scopes)
263
+
264
+ def check_scope(self, scope: SCOPE_TYPE):
265
+ token_scopes = set(scope_to_list(self._token.get("scope", "")))
266
+ if any(token_scope for token_scope in token_scopes if token_scope.startswith(DEPRECATED_SCOPE_PREFIX)):
267
+ log.warning(
268
+ "Deprecation warning: using 'spinta_*' scopes is deprecated and will be removed in a future version."
269
+ )
236
270
 
237
- def check_scope(self, scope, *, operator="AND"):
238
- if not self.valid_scope(scope, operator=operator):
271
+ if not self.valid_scope(scope):
239
272
  client_id = self._token["aud"]
240
273
 
274
+ operator = "OR"
241
275
  if isinstance(scope, str):
276
+ operator = "AND"
242
277
  scope = [scope]
243
-
244
- missing_scopes = ", ".join(sorted(scope))
278
+ missing_scopes = ", ".join(
279
+ sorted([single_scope for single_scope in scope if not single_scope.startswith(DEPRECATED_SCOPE_PREFIX)])
280
+ )
245
281
 
246
282
  # FIXME: this should be wrapped into UserError.
247
283
  if operator == "AND":
@@ -253,51 +289,110 @@ class Token(rfc6749.TokenMixin):
253
289
  else:
254
290
  raise Exception(f"Unknown operator {operator}.")
255
291
 
256
- def get_expires_at(self):
257
- return self._token["exp"]
258
-
259
- def get_scope(self):
260
- return self._token.get("scope", "")
292
+ # No longer mandatory, but will keep it, since it is used in other places.
293
+ def get_client_id(self) -> str:
294
+ return self.get_aud()
261
295
 
262
- def get_sub(self): # User.
296
+ def get_sub(self) -> str: # User.
263
297
  return self._token.get("sub", "")
264
298
 
265
- def get_aud(self): # Client.
299
+ def get_aud(self) -> str: # Client.
266
300
  return self._token.get("aud", "")
267
301
 
268
- def get_jti(self):
302
+ def get_jti(self) -> str:
269
303
  return self._token.get("jti", "")
270
304
 
271
- def get_client_id(self):
272
- return self.get_aud()
305
+ # Currently required implementations for authlib >= 1.0
306
+ # https://gist.github.com/lepture/506bfc29b827fae87981fc58eff2393e#token-model
307
+
308
+ def get_scope(self) -> str:
309
+ return self._token.get("scope", "")
310
+
311
+ def check_client(self, client) -> bool:
312
+ return self.get_aud() == client.id
313
+
314
+ def get_expires_in(self) -> int:
315
+ return self.expires_in
316
+
317
+ def is_revoked(self) -> bool:
318
+ return False
319
+
320
+ def is_expired(self) -> bool:
321
+ return time.time() > self._token["exp"]
273
322
 
274
323
 
275
324
  class AdminToken(rfc6749.TokenMixin):
276
- def valid_scope(self, scope, **kwargs):
325
+ def valid_scope(self, scope: SCOPE_TYPE, **kwargs) -> bool:
277
326
  return True
278
327
 
279
- def check_scope(self, scope, **kwargs):
328
+ def check_scope(self, scope: SCOPE_TYPE, **kwargs):
280
329
  pass
281
330
 
282
- def get_sub(self): # User.
331
+ def get_sub(self) -> str: # User.
283
332
  return "admin"
284
333
 
285
- def get_aud(self): # Client.
334
+ def get_aud(self) -> str: # Client.
286
335
  return "admin"
287
336
 
288
- def get_jti(self):
337
+ def get_jti(self) -> str:
289
338
  return "admin"
290
339
 
291
- def get_client_id(self):
340
+ def get_client_id(self) -> str:
292
341
  return self.get_aud()
293
342
 
294
343
 
344
+ @dataclasses.dataclass
345
+ class StarletteOAuth2Data:
346
+ method: str
347
+ uri: str
348
+ headers: Headers
349
+ query: QueryParams
350
+ form: FormData
351
+
352
+
353
+ class StarletteOAuth2Payload(OAuth2Payload):
354
+ # Implementation was taken from DjangoOAuth2Payload
355
+
356
+ def __init__(self, data: StarletteOAuth2Data):
357
+ self.query = data.query
358
+ self.form = data.form
359
+
360
+ @property
361
+ def data(self) -> dict:
362
+ data = {}
363
+ data.update(self.query)
364
+ data.update(self.form)
365
+ return data
366
+
367
+ @cached_property
368
+ def datalist(self) -> dict:
369
+ values = defaultdict(list)
370
+ for k in self.query:
371
+ values[k].extend(self.query.getlist(k))
372
+ for k in self.form:
373
+ values[k].extend(self.form.getlist(k))
374
+ return values
375
+
376
+
377
+ class StarletteOAuth2Request(OAuth2Request):
378
+ def __init__(self, data: StarletteOAuth2Data):
379
+ super().__init__(method=data.method, uri=data.uri, headers=data.headers)
380
+ self.payload = StarletteOAuth2Payload(data)
381
+ self._data = data
382
+
383
+ @property
384
+ def args(self) -> QueryParams:
385
+ return self._data.query
386
+
387
+ @property
388
+ def form(self) -> FormData:
389
+ return self._data.form
390
+
391
+
295
392
  def authenticate_token(protector: ResourceProtector, token: str, type_: str) -> Token:
296
393
  type_ = type_.lower()
297
- if type_ not in protector.TOKEN_VALIDATORS:
298
- raise UnsupportedTokenTypeError()
299
-
300
- return protector.TOKEN_VALIDATORS[type_].authenticate_token(token)
394
+ validator = protector.get_token_validator(type_)
395
+ return validator.authenticate_token(token)
301
396
 
302
397
 
303
398
  def get_auth_token(context: Context) -> Token:
@@ -357,13 +452,8 @@ def get_token_from_http_basic_auth(context: Context, request: OAuth2Request):
357
452
  return create_client_access_token(context, client)
358
453
 
359
454
 
360
- def get_auth_request(request: dict) -> OAuth2Request:
361
- return OAuth2Request(
362
- request["method"],
363
- request["url"],
364
- request["body"],
365
- request["headers"],
366
- )
455
+ def get_auth_request(data: StarletteOAuth2Data) -> StarletteOAuth2Request:
456
+ return StarletteOAuth2Request(data)
367
457
 
368
458
 
369
459
  def create_key_pair():
@@ -397,8 +487,7 @@ def load_key(context: Context, key_type: KeyType, *, required: bool = True):
397
487
  keys = [k for k in key["keys"] if k["alg"] == "RS512"]
398
488
  key = keys[0]
399
489
 
400
- key = jwk.loads(key)
401
- return key
490
+ return JsonWebKey.import_key(key)
402
491
 
403
492
 
404
493
  def create_client_access_token(context: Context, client: Union[str, Client]):
@@ -457,13 +546,14 @@ def check_scope(context: Context, scope: Union[Scopes, str]):
457
546
  if isinstance(scope, Scopes):
458
547
  scope = scope.value
459
548
 
460
- token.check_scope(f"{config.scope_prefix}{scope}")
549
+ token.check_scope([f"{config.scope_prefix}{scope}", f"{config.scope_prefix_udts}:{scope}"])
461
550
 
462
551
 
463
552
  def get_scope_name(
464
553
  context: Context,
465
554
  node: Union[Namespace, Model, Property],
466
555
  action: Action,
556
+ is_udts: bool = False,
467
557
  ) -> str:
468
558
  config = context.get("config")
469
559
 
@@ -472,18 +562,24 @@ def get_scope_name(
472
562
  elif isinstance(node, Model):
473
563
  name = node.model_type()
474
564
  elif isinstance(node, Property):
475
- name = node.model.model_type() + "_" + node.place
565
+ name = node.model.model_type() + "/@" + node.place if is_udts else node.model.model_type() + "_" + node.place
476
566
  else:
477
567
  raise Exception(f"Unknown node type {node}.")
478
568
 
569
+ if is_udts:
570
+ template = "{prefix}{name}/:{action}" if name else "{prefix}:{action}"
571
+ else:
572
+ template = "{prefix}{name}_{action}" if name else "{prefix}{action}"
573
+
479
574
  return name_to_scope(
480
- "{prefix}{name}_{action}" if name else "{prefix}{action}",
575
+ template,
481
576
  name,
482
577
  maxlen=config.scope_max_length,
483
578
  params={
484
- "prefix": config.scope_prefix,
485
- "action": action.value,
579
+ "prefix": config.scope_prefix_udts if is_udts else config.scope_prefix,
580
+ "action": "create" if action.value == "insert" and is_udts else action.value,
486
581
  },
582
+ is_udts=is_udts,
487
583
  )
488
584
 
489
585
 
@@ -520,7 +616,6 @@ def authorized(
520
616
  ):
521
617
  config: Config = context.get("config")
522
618
  token = context.get("auth.token")
523
-
524
619
  # Unauthorized clients can only access open nodes.
525
620
  unauthorized = token.get_client_id() == get_default_auth_client_id(context)
526
621
  open_node = node.access >= Access.open
@@ -559,13 +654,14 @@ def authorized(
559
654
  scope_formatter = scope_formatter or config.scope_formatter
560
655
  if not isinstance(action, (list, tuple)):
561
656
  action = [action]
562
- scopes = [scope_formatter(context, scope, act) for act in action for scope in scopes]
563
-
657
+ scopes = [
658
+ scope_formatter(context, scope, act, is_udts) for act in action for scope in scopes for is_udts in [False, True]
659
+ ]
564
660
  # Check if client has at least one of required scopes.
565
661
  if throw:
566
- token.check_scope(scopes, operator="OR")
662
+ token.check_scope(scopes)
567
663
  else:
568
- return token.valid_scope(scopes, operator="OR")
664
+ return token.valid_scope(scopes)
569
665
 
570
666
 
571
667
  def auth_server_keys_exists(path: pathlib.Path):
@@ -598,11 +694,16 @@ def gen_auth_server_keys(
598
694
  create = True
599
695
 
600
696
  if create:
601
- key = create_key_pair()
602
- keys = (key, key.public_key())
603
- for k, file in zip(keys, files):
604
- with file.open("w") as f:
605
- json.dump(jwk.dumps(k), f, indent=4, ensure_ascii=False)
697
+ private_key = create_key_pair()
698
+ public_key = private_key.public_key()
699
+
700
+ with files[0].open("w") as f:
701
+ result = JsonWebKey.import_key(private_key, {"kty": "RSA"})
702
+ json.dump(result.as_dict(is_private=True), f, indent=4, ensure_ascii=False)
703
+
704
+ with files[1].open("w") as f:
705
+ result = JsonWebKey.import_key(public_key, {"kty": "RSA"})
706
+ json.dump(result.as_dict(), f, indent=4, ensure_ascii=False)
606
707
 
607
708
  return files
608
709