spinta 0.2.dev21__tar.gz → 0.2.dev23__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 (749) hide show
  1. {spinta-0.2.dev21 → spinta-0.2.dev23}/PKG-INFO +1 -1
  2. {spinta-0.2.dev21 → spinta-0.2.dev23}/pyproject.toml +1 -1
  3. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/auth.py +33 -26
  4. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/admin.py +12 -8
  5. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/components.py +1 -0
  6. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/registry.py +4 -0
  7. spinta-0.2.dev23/spinta/cli/helpers/admin/scripts/enums.py +148 -0
  8. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/message.py +6 -2
  9. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/script/components.py +1 -1
  10. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/script/core.py +5 -7
  11. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/script/helpers.py +2 -2
  12. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/schemas.py +3 -2
  13. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/components.py +2 -1
  14. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/config.py +2 -1
  15. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +1 -1
  16. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +13 -1
  17. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/commands/read.py +5 -0
  18. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +21 -6
  19. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/helpers.py +25 -2
  20. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/exceptions.py +6 -0
  21. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/client.py +0 -2
  22. spinta-0.2.dev23/spinta/testing/csv.py +13 -0
  23. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/config.py +5 -0
  24. spinta-0.2.dev23/spinta/types/partial/link.py +63 -0
  25. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/ref/link.py +3 -1
  26. spinta-0.2.dev21/spinta/testing/csv.py +0 -8
  27. spinta-0.2.dev21/spinta/types/partial/link.py +0 -48
  28. {spinta-0.2.dev21 → spinta-0.2.dev23}/LICENSE +0 -0
  29. {spinta-0.2.dev21 → spinta-0.2.dev23}/README.rst +0 -0
  30. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/__init__.py +0 -0
  31. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/__main__.py +0 -0
  32. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/accesslog/__init__.py +0 -0
  33. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/accesslog/file.py +0 -0
  34. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/accesslog/python.py +0 -0
  35. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/adapters/__init__.py +0 -0
  36. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/adapters/rc/__init__.py +0 -0
  37. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/adapters/rc/signature_adapter.py +0 -0
  38. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/adapters/soap_plugins.py +0 -0
  39. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/api/__init__.py +0 -0
  40. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/api/inspect.py +0 -0
  41. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/api/schema.py +0 -0
  42. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/api/validators.py +0 -0
  43. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/asgi.py +0 -0
  44. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/__init__.py +0 -0
  45. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/components.py +0 -0
  46. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/constants.py +0 -0
  47. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/__init__.py +0 -0
  48. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/__init__.py +0 -0
  49. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/bootstrap.py +0 -0
  50. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/changes.py +0 -0
  51. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/decode.py +0 -0
  52. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/encode.py +0 -0
  53. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/init.py +0 -0
  54. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/load.py +0 -0
  55. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/migrate.py +0 -0
  56. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/read.py +0 -0
  57. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/validate.py +0 -0
  58. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/wait.py +0 -0
  59. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/wipe.py +0 -0
  60. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/commands/write.py +0 -0
  61. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/fs/components.py +0 -0
  62. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/helpers.py +0 -0
  63. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/__init__.py +0 -0
  64. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/__init__.py +0 -0
  65. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/auth.py +0 -0
  66. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/bootstrap.py +0 -0
  67. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/changes.py +0 -0
  68. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/check.py +0 -0
  69. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/encode.py +0 -0
  70. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/init.py +0 -0
  71. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/load.py +0 -0
  72. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/manifest.py +0 -0
  73. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/read.py +0 -0
  74. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/wait.py +0 -0
  75. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/wipe.py +0 -0
  76. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/commands/write.py +0 -0
  77. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/memory/components.py +0 -0
  78. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/__init__.py +0 -0
  79. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/__init__.py +0 -0
  80. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/bootstrap.py +0 -0
  81. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/changes.py +0 -0
  82. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/encode.py +0 -0
  83. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/init.py +0 -0
  84. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/load.py +0 -0
  85. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/migrate.py +0 -0
  86. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/read.py +0 -0
  87. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/validate.py +0 -0
  88. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/wait.py +0 -0
  89. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/wipe.py +0 -0
  90. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/commands/write.py +0 -0
  91. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/components.py +0 -0
  92. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/helpers.py +0 -0
  93. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/__init__.py +0 -0
  94. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/array/__init__.py +0 -0
  95. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/array/write.py +0 -0
  96. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/file/__init__.py +0 -0
  97. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/file/write.py +0 -0
  98. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/object/__init__.py +0 -0
  99. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/types/object/write.py +0 -0
  100. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
  101. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/ufuncs/components.py +0 -0
  102. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
  103. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/__init__.py +0 -0
  104. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/__init__.py +0 -0
  105. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
  106. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/changes.py +0 -0
  107. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/init.py +0 -0
  108. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/load.py +0 -0
  109. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/read.py +0 -0
  110. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/wait.py +0 -0
  111. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/wipe.py +0 -0
  112. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/commands/write.py +0 -0
  113. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/nobackend/components.py +0 -0
  114. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/__init__.py +0 -0
  115. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/__init__.py +0 -0
  116. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
  117. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/changes.py +0 -0
  118. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/column.py +0 -0
  119. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/encode.py +0 -0
  120. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/init.py +0 -0
  121. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/link.py +0 -0
  122. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/load.py +0 -0
  123. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/manifest.py +0 -0
  124. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
  125. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
  126. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
  127. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
  128. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
  129. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
  130. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
  131. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
  132. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
  133. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
  134. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
  135. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
  136. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
  137. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
  138. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/read.py +0 -0
  139. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/redirect.py +0 -0
  140. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/summary.py +0 -0
  141. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/validate.py +0 -0
  142. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/wait.py +0 -0
  143. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/wipe.py +0 -0
  144. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/commands/write.py +0 -0
  145. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/components.py +0 -0
  146. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/constants.py +0 -0
  147. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/files.py +0 -0
  148. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/__init__.py +0 -0
  149. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/changes.py +0 -0
  150. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
  151. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/extractors.py +0 -0
  152. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/manifest.py +0 -0
  153. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
  154. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
  155. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/migrate/cast.py +0 -0
  156. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
  157. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/migrate/name.py +0 -0
  158. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/name.py +0 -0
  159. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/redirect.py +0 -0
  160. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/type.py +0 -0
  161. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/helpers/validate.py +0 -0
  162. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/sqlalchemy.py +0 -0
  163. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/__init__.py +0 -0
  164. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array/__init__.py +0 -0
  165. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array/init.py +0 -0
  166. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array/wipe.py +0 -0
  167. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array/write.py +0 -0
  168. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
  169. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
  170. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
  171. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/backref/init.py +0 -0
  172. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
  173. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/denorm/init.py +0 -0
  174. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
  175. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
  176. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/file/__init__.py +0 -0
  177. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/file/init.py +0 -0
  178. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/file/read.py +0 -0
  179. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/file/write.py +0 -0
  180. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
  181. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
  182. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/geometry/init.py +0 -0
  183. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/geometry/write.py +0 -0
  184. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/object/__init__.py +0 -0
  185. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/object/init.py +0 -0
  186. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/object/read.py +0 -0
  187. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/object/wipe.py +0 -0
  188. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
  189. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/ref/init.py +0 -0
  190. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/ref/validate.py +0 -0
  191. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/text/__init__.py +0 -0
  192. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/types/text/init.py +0 -0
  193. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
  194. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/components.py +0 -0
  195. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
  196. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
  197. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  198. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
  199. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
  200. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
  201. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
  202. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/backends/types/__init__.py +0 -0
  203. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/__init__.py +0 -0
  204. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/auth.py +0 -0
  205. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/config.py +0 -0
  206. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/data.py +0 -0
  207. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/get.py +0 -0
  208. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/__init__.py +0 -0
  209. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/__init__.py +0 -0
  210. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
  211. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
  212. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
  213. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/auth.py +0 -0
  214. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/data.py +0 -0
  215. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/errors.py +0 -0
  216. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/__init__.py +0 -0
  217. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/backends/__init__.py +0 -0
  218. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
  219. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
  220. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
  221. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
  222. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/commands.py +0 -0
  223. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/components.py +0 -0
  224. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/export/helpers.py +0 -0
  225. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/manifest.py +0 -0
  226. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/migrate.py +0 -0
  227. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/__init__.py +0 -0
  228. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/components.py +0 -0
  229. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/delete.py +0 -0
  230. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/error.py +0 -0
  231. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/read.py +0 -0
  232. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/state.py +0 -0
  233. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/sync.py +0 -0
  234. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/utils.py +0 -0
  235. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/push/write.py +0 -0
  236. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/script/__init__.py +0 -0
  237. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/script/registry.py +0 -0
  238. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/store.py +0 -0
  239. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/__init__.py +0 -0
  240. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/api_helpers.py +0 -0
  241. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
  242. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
  243. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
  244. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
  245. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
  246. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
  247. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
  248. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
  249. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/enum.py +0 -0
  250. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/sync/helpers.py +0 -0
  251. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/typer.py +0 -0
  252. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/__init__.py +0 -0
  253. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/components.py +0 -0
  254. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/registry.py +0 -0
  255. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
  256. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
  257. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
  258. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
  259. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
  260. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
  261. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
  262. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
  263. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
  264. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
  265. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
  266. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
  267. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/init.py +0 -0
  268. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/inspect.py +0 -0
  269. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/keymap.py +0 -0
  270. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/main.py +0 -0
  271. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/manifest.py +0 -0
  272. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/migrate.py +0 -0
  273. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/pii.py +0 -0
  274. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/pull.py +0 -0
  275. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/push.py +0 -0
  276. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/server.py +0 -0
  277. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/show.py +0 -0
  278. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/sync.py +0 -0
  279. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/cli/upgrade.py +0 -0
  280. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/client.py +0 -0
  281. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/__init__.py +0 -0
  282. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/auth.py +0 -0
  283. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/helpers.py +0 -0
  284. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/read.py +0 -0
  285. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/search.py +0 -0
  286. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/version.py +0 -0
  287. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/commands/write.py +0 -0
  288. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/compat.py +0 -0
  289. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/config.yml +0 -0
  290. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/__init__.py +0 -0
  291. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/access.py +0 -0
  292. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/config.py +0 -0
  293. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/context.py +0 -0
  294. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/enums.py +0 -0
  295. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/core/ufuncs.py +0 -0
  296. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/__init__.py +0 -0
  297. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/__init__.py +0 -0
  298. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/__init__.py +0 -0
  299. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
  300. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
  301. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
  302. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
  303. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
  304. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
  305. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
  306. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
  307. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
  308. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
  309. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
  310. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
  311. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
  312. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
  313. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
  314. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
  315. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
  316. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
  317. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
  318. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
  319. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
  320. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/commands/check.py +0 -0
  321. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/components.py +0 -0
  322. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
  323. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
  324. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
  325. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
  326. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
  327. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/notimpl/__init__.py +0 -0
  328. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
  329. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
  330. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
  331. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/notimpl/components.py +0 -0
  332. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/__init__.py +0 -0
  333. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
  334. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
  335. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
  336. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
  337. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
  338. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
  339. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
  340. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
  341. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
  342. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
  343. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
  344. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
  345. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
  346. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
  347. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
  348. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
  349. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
  350. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
  351. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
  352. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
  353. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
  354. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
  355. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
  356. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
  357. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
  358. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
  359. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/types/__init__.py +0 -0
  360. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/types/geometry/__init__.py +0 -0
  361. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
  362. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
  363. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
  364. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
  365. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
  366. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
  367. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
  368. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
  369. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
  370. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
  371. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
  372. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  373. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
  374. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
  375. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
  376. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
  377. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
  378. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
  379. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
  380. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
  381. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
  382. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
  383. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
  384. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
  385. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
  386. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
  387. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
  388. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/ufuncs/__init__.py +0 -0
  389. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/__init__.py +0 -0
  390. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
  391. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
  392. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
  393. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
  394. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
  395. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
  396. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
  397. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
  398. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
  399. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
  400. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
  401. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/cast.py +0 -0
  402. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/column.py +0 -0
  403. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/init.py +0 -0
  404. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/load.py +0 -0
  405. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/read.py +0 -0
  406. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/commands/wait.py +0 -0
  407. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/components.py +0 -0
  408. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/helpers.py +0 -0
  409. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
  410. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
  411. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
  412. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
  413. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
  414. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
  415. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
  416. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
  417. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
  418. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
  419. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/__init__.py +0 -0
  420. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
  421. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
  422. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
  423. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
  424. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/components.py +0 -0
  425. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
  426. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
  427. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
  428. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/wsdl/__init__.py +0 -0
  429. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
  430. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
  431. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/backends/wsdl/components.py +0 -0
  432. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/__init__.py +0 -0
  433. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/check.py +0 -0
  434. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/error.py +0 -0
  435. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/inspect.py +0 -0
  436. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/link.py +0 -0
  437. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/load.py +0 -0
  438. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/commands/wipe.py +0 -0
  439. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/components.py +0 -0
  440. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/enums.py +0 -0
  441. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/helpers.py +0 -0
  442. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/__init__.py +0 -0
  443. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/commands/__init__.py +0 -0
  444. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/commands/manifest.py +0 -0
  445. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/commands/merge.py +0 -0
  446. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/components.py +0 -0
  447. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/inspect/helpers.py +0 -0
  448. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/keymaps/__init__.py +0 -0
  449. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/keymaps/components.py +0 -0
  450. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/keymaps/redis.py +0 -0
  451. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
  452. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/keymaps/sync.py +0 -0
  453. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/datasets/utils.py +0 -0
  454. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/__init__.py +0 -0
  455. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/comments/__init__.py +0 -0
  456. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/comments/components.py +0 -0
  457. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/comments/helpers.py +0 -0
  458. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/enum/__init__.py +0 -0
  459. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/enum/commands.py +0 -0
  460. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/enum/components.py +0 -0
  461. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/enum/helpers.py +0 -0
  462. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/enum/ufuncs.py +0 -0
  463. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/lang/__init__.py +0 -0
  464. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/lang/components.py +0 -0
  465. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/lang/helpers.py +0 -0
  466. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/param/__init__.py +0 -0
  467. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/param/components.py +0 -0
  468. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/param/helpers.py +0 -0
  469. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/param/ufuncs.py +0 -0
  470. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/prefix/__init__.py +0 -0
  471. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/prefix/commands/__init__.py +0 -0
  472. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/prefix/commands/load.py +0 -0
  473. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/prefix/components.py +0 -0
  474. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dimensions/prefix/helpers.py +0 -0
  475. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/dispatcher.py +0 -0
  476. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/fetcher.py +0 -0
  477. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/__init__.py +0 -0
  478. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/ascii/__init__.py +0 -0
  479. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/ascii/commands.py +0 -0
  480. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/ascii/components.py +0 -0
  481. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/ascii/helpers.py +0 -0
  482. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/components.py +0 -0
  483. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/csv/__init__.py +0 -0
  484. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/csv/commands.py +0 -0
  485. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/csv/components.py +0 -0
  486. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/helpers.py +0 -0
  487. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/html/__init__.py +0 -0
  488. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/html/commands.py +0 -0
  489. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/html/components.py +0 -0
  490. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/html/helpers.py +0 -0
  491. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/json/__init__.py +0 -0
  492. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/json/commands.py +0 -0
  493. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/json/components.py +0 -0
  494. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/jsonlines/__init__.py +0 -0
  495. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/jsonlines/commands.py +0 -0
  496. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/jsonlines/components.py +0 -0
  497. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/rdf/commands.py +0 -0
  498. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/rdf/components.py +0 -0
  499. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/xlsx/__init__.py +0 -0
  500. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/xlsx/commands.py +0 -0
  501. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/formats/xlsx/components.py +0 -0
  502. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/hacks/__init__.py +0 -0
  503. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/hacks/spyna.py +0 -0
  504. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/hacks/urlparams.py +0 -0
  505. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/handlers.py +0 -0
  506. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/logging_config.py +0 -0
  507. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifest/_ns.yml +0 -0
  508. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifest/_schema/version.yml +0 -0
  509. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifest/_schema.yml +0 -0
  510. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifest/_txn.yml +0 -0
  511. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/__init__.py +0 -0
  512. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/__init__.py +0 -0
  513. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/__init__.py +0 -0
  514. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/bootstrap.py +0 -0
  515. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/configure.py +0 -0
  516. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/load.py +0 -0
  517. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/manifest.py +0 -0
  518. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/migrate.py +0 -0
  519. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/commands/sync.py +0 -0
  520. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/components.py +0 -0
  521. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/backend/helpers.py +0 -0
  522. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/__init__.py +0 -0
  523. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/auth.py +0 -0
  524. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/check.py +0 -0
  525. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/error.py +0 -0
  526. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/init.py +0 -0
  527. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/inspect.py +0 -0
  528. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/link.py +0 -0
  529. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/load.py +0 -0
  530. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/manifest.py +0 -0
  531. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/migrate.py +0 -0
  532. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/commands/read.py +0 -0
  533. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/components.py +0 -0
  534. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/__init__.py +0 -0
  535. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/commands/__init__.py +0 -0
  536. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/commands/configure.py +0 -0
  537. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/commands/load.py +0 -0
  538. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/components.py +0 -0
  539. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/dict/helpers.py +0 -0
  540. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/helpers.py +0 -0
  541. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal/__init__.py +0 -0
  542. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal/commands/__init__.py +0 -0
  543. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal/commands/configure.py +0 -0
  544. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal/commands/load.py +0 -0
  545. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal/components.py +0 -0
  546. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/__init__.py +0 -0
  547. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
  548. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/auth.py +0 -0
  549. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/backend.py +0 -0
  550. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
  551. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/configure.py +0 -0
  552. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/load.py +0 -0
  553. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
  554. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/commands/read.py +0 -0
  555. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/components.py +0 -0
  556. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/internal_sql/helpers.py +0 -0
  557. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/memory/__init__.py +0 -0
  558. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/memory/commands/__init__.py +0 -0
  559. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/memory/commands/configure.py +0 -0
  560. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/memory/commands/load.py +0 -0
  561. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/memory/components.py +0 -0
  562. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/mermaid/__init__.py +0 -0
  563. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/mermaid/components.py +0 -0
  564. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/mermaid/helpers.py +0 -0
  565. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/__init__.py +0 -0
  566. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/commands/__init__.py +0 -0
  567. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/commands/configure.py +0 -0
  568. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/commands/load.py +0 -0
  569. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/components.py +0 -0
  570. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/helpers.py +0 -0
  571. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/openapi_config.py +0 -0
  572. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/open_api/openapi_generator.py +0 -0
  573. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
  574. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/rdf/commands/configure.py +0 -0
  575. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/rdf/commands/load.py +0 -0
  576. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/rdf/components.py +0 -0
  577. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/rdf/helpers.py +0 -0
  578. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/__init__.py +0 -0
  579. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/commands/__init__.py +0 -0
  580. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/commands/configure.py +0 -0
  581. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/commands/load.py +0 -0
  582. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/components.py +0 -0
  583. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/sql/helpers.py +0 -0
  584. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/__init__.py +0 -0
  585. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/commands/__init__.py +0 -0
  586. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
  587. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/commands/configure.py +0 -0
  588. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/commands/load.py +0 -0
  589. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/components.py +0 -0
  590. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/constants.py +0 -0
  591. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/formats/__init__.py +0 -0
  592. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/formats/gsheets.py +0 -0
  593. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/tabular/helpers.py +0 -0
  594. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/__init__.py +0 -0
  595. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/commands/__init__.py +0 -0
  596. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/commands/configure.py +0 -0
  597. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/commands/load.py +0 -0
  598. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/components.py +0 -0
  599. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd/helpers.py +0 -0
  600. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/xsd2/commands/load.py +0 -0
  601. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/__init__.py +0 -0
  602. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/__init__.py +0 -0
  603. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
  604. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/configure.py +0 -0
  605. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/load.py +0 -0
  606. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/manifest.py +0 -0
  607. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/migrate.py +0 -0
  608. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/commands/sync.py +0 -0
  609. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/components.py +0 -0
  610. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/manifests/yaml/helpers.py +0 -0
  611. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/methods.py +0 -0
  612. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/middlewares.py +0 -0
  613. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/naming/__init__.py +0 -0
  614. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/naming/components.py +0 -0
  615. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/naming/helpers.py +0 -0
  616. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/naming/ufuncts.py +0 -0
  617. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/nodes.py +0 -0
  618. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/renderer.py +0 -0
  619. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/spyna.py +0 -0
  620. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/templates/base.html +0 -0
  621. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/templates/data.html +0 -0
  622. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/templates/error.html +0 -0
  623. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/templates/form.html +0 -0
  624. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/__init__.py +0 -0
  625. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/cli.py +0 -0
  626. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/config.py +0 -0
  627. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/context.py +0 -0
  628. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/data.py +0 -0
  629. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/datasets.py +0 -0
  630. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/dtypes.py +0 -0
  631. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/manifest.py +0 -0
  632. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/migration.py +0 -0
  633. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/push.py +0 -0
  634. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/pytest.py +0 -0
  635. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/request.py +0 -0
  636. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/tabular.py +0 -0
  637. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/types/__init__.py +0 -0
  638. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/types/geometry.py +0 -0
  639. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/ufuncs.py +0 -0
  640. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/testing/utils.py +0 -0
  641. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/__init__.py +0 -0
  642. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/array/__init__.py +0 -0
  643. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/array/check.py +0 -0
  644. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/array/link.py +0 -0
  645. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/array/resolve.py +0 -0
  646. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/backref/__init__.py +0 -0
  647. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/backref/link.py +0 -0
  648. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/command.py +0 -0
  649. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/datatype.py +0 -0
  650. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/denorm/__init__.py +0 -0
  651. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/denorm/check.py +0 -0
  652. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/denorm/link.py +0 -0
  653. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/file/__init__.py +0 -0
  654. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/file/components.py +0 -0
  655. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/file/decode.py +0 -0
  656. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/file/helpers.py +0 -0
  657. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/geometry/__init__.py +0 -0
  658. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/geometry/components.py +0 -0
  659. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/geometry/constants.py +0 -0
  660. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/geometry/helpers.py +0 -0
  661. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/geometry/load.py +0 -0
  662. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/helpers.py +0 -0
  663. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/inherit/__init__.py +0 -0
  664. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/inherit/check.py +0 -0
  665. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/model.py +0 -0
  666. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/namespace.py +0 -0
  667. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/object/__init__.py +0 -0
  668. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/object/check.py +0 -0
  669. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/object/link.py +0 -0
  670. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/partial/__init__.py +0 -0
  671. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/ref/__init__.py +0 -0
  672. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/ref/check.py +0 -0
  673. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/ref/resolve.py +0 -0
  674. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/store.py +0 -0
  675. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/text/__init__.py +0 -0
  676. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/text/check.py +0 -0
  677. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/text/components.py +0 -0
  678. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/text/helpers.py +0 -0
  679. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/types/text/load.py +0 -0
  680. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/typing.py +0 -0
  681. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/__init__.py +0 -0
  682. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/binds.py +0 -0
  683. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/changebase/__init__.py +0 -0
  684. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/changebase/components.py +0 -0
  685. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/changebase/helpers.py +0 -0
  686. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/changebase/ufuncs.py +0 -0
  687. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/common.py +0 -0
  688. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/components.py +0 -0
  689. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/helpers.py +0 -0
  690. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
  691. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/linkbuilder/components.py +0 -0
  692. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
  693. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
  694. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/loadbuilder/components.py +0 -0
  695. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
  696. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
  697. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
  698. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/propertyresolver/components.py +0 -0
  699. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
  700. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/querybuilder/__init__.py +0 -0
  701. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/querybuilder/components.py +0 -0
  702. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/querybuilder/helpers.py +0 -0
  703. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
  704. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
  705. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
  706. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
  707. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
  708. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
  709. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/resultbuilder/components.py +0 -0
  710. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
  711. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
  712. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/summaryenv/__init__.py +0 -0
  713. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/summaryenv/components.py +0 -0
  714. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
  715. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/units/__init__.py +0 -0
  716. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/units/components.py +0 -0
  717. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/units/helpers.py +0 -0
  718. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/urlparams.py +0 -0
  719. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/__init__.py +0 -0
  720. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/aiotools.py +0 -0
  721. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/changes.py +0 -0
  722. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/collections.py +0 -0
  723. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/config.py +0 -0
  724. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/data.py +0 -0
  725. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/encoding.py +0 -0
  726. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/enums.py +0 -0
  727. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/errors.py +0 -0
  728. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/functools.py +0 -0
  729. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/idgen.py +0 -0
  730. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/imports.py +0 -0
  731. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/itertools.py +0 -0
  732. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/json.py +0 -0
  733. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/naming.py +0 -0
  734. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/nestedstruct.py +0 -0
  735. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/nin.py +0 -0
  736. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/passwords.py +0 -0
  737. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/path.py +0 -0
  738. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/refs.py +0 -0
  739. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/response.py +0 -0
  740. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/schema.py +0 -0
  741. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/scopes.py +0 -0
  742. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/sqlalchemy.py +0 -0
  743. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/sqlite.py +0 -0
  744. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/starlette.py +0 -0
  745. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/streams.py +0 -0
  746. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/tree.py +0 -0
  747. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/types.py +0 -0
  748. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/units.py +0 -0
  749. {spinta-0.2.dev21 → spinta-0.2.dev23}/spinta/utils/url.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spinta
3
- Version: 0.2.dev21
3
+ Version: 0.2.dev23
4
4
  Summary: A platform for describing, extracting, transforming, loading and serving open data.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "spinta"
3
- version = "0.2dev21"
3
+ version = "0.2dev23"
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"
@@ -58,6 +58,7 @@ from spinta.exceptions import (
58
58
  InvalidClientsKeymapStructure,
59
59
  InvalidScopes,
60
60
  InvalidClientFileFormat,
61
+ ModelNotFound,
61
62
  )
62
63
  from spinta.utils import passwords
63
64
  from spinta.utils.config import get_clients_path, get_keymap_path, get_id_path, get_helpers_path
@@ -858,40 +859,46 @@ def authorized(
858
859
  scope_formatter: ScopeFormatterFunc = None,
859
860
  ):
860
861
  config: Config = context.get("config")
862
+
863
+ # Disable access to nodes that have lower access level than config.access
864
+ if config.access > node.access:
865
+ if throw:
866
+ raise ModelNotFound(model=node.name)
867
+ return False
868
+
861
869
  token = context.get("auth.token")
862
- # Unauthorized clients can only access open nodes.
863
- unauthorized = token.get_client_id() == get_default_auth_client_id(context)
864
- open_node = node.access >= Access.open
865
- if unauthorized and not open_node:
870
+
871
+ # Unauthenticated clients can only access nodes if spinta config.access is open.
872
+ unauthenticated = token.get_client_id() == get_default_auth_client_id(context)
873
+
874
+ if unauthenticated and config.access < Access.open:
866
875
  if throw:
867
876
  raise AuthorizedClientsOnly()
868
877
  else:
869
878
  return False
870
879
 
871
- # Private nodes can only be accessed with explicit node scope.
880
+ # Add explicit node scope
872
881
  scopes = [node]
873
882
 
874
- # Protected and higher level nodes can be accessed with parent nodes scopes.
875
- if node.access > Access.private:
876
- ns = None
877
-
878
- if isinstance(node, Property):
879
- # Hidden nodes also require explicit scope.
880
- # XXX: `hidden` parameter should only be used for API control, not
881
- # access control. See docs.
882
- if not node.hidden:
883
- scopes.append(node.model)
884
- scopes.append(node.model.ns)
885
- ns = node.model.ns
886
- elif isinstance(node, Model):
887
- scopes.append(node.ns)
888
- ns = node.ns
889
- elif isinstance(node, Namespace):
890
- ns = node
891
-
892
- # Add all parent namespace scopes too.
893
- if ns:
894
- scopes.extend(ns.parents())
883
+ # Add parent node scopes
884
+ ns = None
885
+ if isinstance(node, Property):
886
+ # Hidden nodes also require explicit scope.
887
+ # XXX: `hidden` parameter should only be used for API control, not
888
+ # access control. See docs.
889
+ if not node.hidden:
890
+ scopes.append(node.model)
891
+ scopes.append(node.model.ns)
892
+ ns = node.model.ns
893
+ elif isinstance(node, Model):
894
+ scopes.append(node.ns)
895
+ ns = node.ns
896
+ elif isinstance(node, Namespace):
897
+ ns = node
898
+
899
+ # Add all parent namespace scopes too.
900
+ if ns:
901
+ scopes.extend(ns.parents())
895
902
 
896
903
  # Build scope names.
897
904
  scope_formatter = scope_formatter or config.scope_formatter
@@ -2,15 +2,14 @@ from __future__ import annotations
2
2
 
3
3
  import logging
4
4
  import pathlib
5
- import sys
6
5
  from typing import Optional, List
7
6
 
8
7
  from typer import Context as TyperContext, Argument
9
8
  from typer import Option
10
- from typer import echo
11
9
 
12
10
  from spinta.cli.helpers.admin.components import ADMIN_SCRIPT_TYPE
13
11
  from spinta.cli.helpers.admin.registry import admin_script_registry
12
+ from spinta.cli.helpers.message import cli_error
14
13
  from spinta.cli.helpers.script.components import ScriptStatusCache
15
14
  from spinta.cli.helpers.script.core import run_specific_script
16
15
  from spinta.cli.helpers.script.helpers import sort_scripts_by_required
@@ -48,26 +47,30 @@ def admin(
48
47
  False,
49
48
  "-c",
50
49
  "--check",
51
- help=("Only runs script checks, skipping execution part (used to find out what scripts are needed to run)."),
50
+ help="Only runs script checks, skipping execution part (used to find out what scripts are needed to run).",
52
51
  ),
53
52
  input_path: Optional[pathlib.Path] = Option(
54
53
  None,
55
54
  "-i",
56
55
  "--input",
57
- help=("Path to input file (some scripts might require extra data). If not given, script will read from stdin."),
56
+ help="Path to input file (some scripts might require extra data). If not given, script will read from stdin.",
57
+ ),
58
+ output_path: Optional[pathlib.Path] = Option(
59
+ None,
60
+ "-o",
61
+ "--output",
62
+ help="Path to output file (some scripts might write extra data). If not given, script will write to stdout.",
58
63
  ),
59
64
  ):
60
65
  context = configure_context(ctx.obj)
61
66
 
62
67
  if force and check_only:
63
- echo("Cannot run force mode with check only mode", err=True)
64
- sys.exit(1)
68
+ cli_error("Cannot run force mode with check only mode")
65
69
 
66
70
  load_config(context, ensure_config_dir=ensure_config_dir)
67
71
 
68
72
  if not scripts:
69
- echo("At least one script needs to be specified", err=True)
70
- sys.exit(1)
73
+ cli_error("At least one script needs to be specified")
71
74
 
72
75
  script_objects = {}
73
76
  for script in scripts:
@@ -86,5 +89,6 @@ def admin(
86
89
  script_name=script,
87
90
  check_only=check_only,
88
91
  input_path=input_path,
92
+ output_path=output_path,
89
93
  status_cache=status_cache,
90
94
  )
@@ -15,3 +15,4 @@ class AdminScript(ScriptBase):
15
15
  class Script(enum.Enum):
16
16
  DEDUPLICATE = "deduplicate"
17
17
  CHANGELOG = "changelog"
18
+ ENUM_LIST = "enum_list"
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  from spinta.cli.helpers.admin.components import AdminScript, Script, ADMIN_SCRIPT_TYPE
4
4
  from spinta.cli.helpers.admin.scripts.changelog import migrate_changelog_duplicates, cli_requires_changelog_migrations
5
5
  from spinta.cli.helpers.admin.scripts.deduplicate import migrate_duplicates, cli_requires_deduplicate_migrations
6
+ from spinta.cli.helpers.admin.scripts.enums import gather_invalid_enum_values
6
7
  from spinta.cli.helpers.script.components import ScriptTarget, ScriptTag
7
8
  from spinta.cli.helpers.script.registry import script_registry
8
9
  from spinta.cli.helpers.upgrade.components import Script as UpgradeScript, UPGRADE_SCRIPT_TYPE
@@ -29,3 +30,6 @@ script_registry.register(
29
30
  targets={ScriptTarget.BACKEND.value},
30
31
  )
31
32
  )
33
+ script_registry.register(
34
+ AdminScript(name=Script.ENUM_LIST.value, run=gather_invalid_enum_values, targets={ScriptTarget.BACKEND.value})
35
+ )
@@ -0,0 +1,148 @@
1
+ import csv
2
+ import pathlib
3
+ import sys
4
+ from contextlib import nullcontext
5
+ from typing import Iterator
6
+
7
+ from multipledispatch import dispatch
8
+ from dataclasses import dataclass, field
9
+
10
+ from spinta import commands
11
+ from spinta.backends import Backend
12
+ from spinta.backends.postgresql.components import PostgreSQL
13
+ from spinta.cli.helpers.script.helpers import ensure_store_is_loaded
14
+ from spinta.components import Context, Model, Property
15
+ from spinta.core.ufuncs import Expr
16
+ from spinta.manifests.components import Manifest
17
+
18
+ import sqlalchemy as sa
19
+
20
+ from spinta.ufuncs.resultbuilder.components import EnumResultBuilder
21
+
22
+
23
+ @dispatch(Backend, Property)
24
+ def gather_unique_property_values() -> list:
25
+ raise NotImplementedError
26
+
27
+
28
+ @dispatch(PostgreSQL, Property)
29
+ def gather_unique_property_values(backend: PostgreSQL, prop: Property) -> list:
30
+ table = backend.get_table(prop)
31
+ column = backend.get_column(table, prop)
32
+ result = backend.engine.execute(sa.select(column).distinct()).scalars().all()
33
+ return result
34
+
35
+
36
+ @dispatch(Property)
37
+ def gather_unique_property_values(prop: Property) -> list:
38
+ return gather_unique_property_values(prop.dtype.backend, prop)
39
+
40
+
41
+ def get_models_with_enums(context: Context, manifest: Manifest) -> Iterator[Model]:
42
+ for model in commands.get_models(context, manifest).values():
43
+ for prop in model.flatprops.values():
44
+ if prop.enum:
45
+ yield model
46
+ break
47
+
48
+
49
+ @dataclass
50
+ class InvalidEnumProperty:
51
+ prop: Property
52
+ invalid_values: list = field(default_factory=list)
53
+
54
+ def add_invalid_value(self, value: object):
55
+ if value not in self.invalid_values:
56
+ self.invalid_values.append(value)
57
+
58
+
59
+ @dataclass
60
+ class InvalidEnumModel:
61
+ model: Model
62
+ enum_props: dict[str, InvalidEnumProperty] = field(default_factory=dict)
63
+
64
+ def add_invalid_value(self, prop: Property, value: object):
65
+ self.get_prop(prop).add_invalid_value(value)
66
+
67
+ def get_prop(self, prop: Property) -> InvalidEnumProperty:
68
+ if prop.place not in self.enum_props:
69
+ self.enum_props[prop.place] = InvalidEnumProperty(prop=prop)
70
+ return self.enum_props[prop.place]
71
+
72
+
73
+ def gather_invalid_enum_values(context: Context, output_path: pathlib.Path | None = None, **kwargs):
74
+ store = ensure_store_is_loaded(context)
75
+ manifest = store.manifest
76
+ invalid_models = {}
77
+ with context:
78
+ for model in get_models_with_enums(context, manifest):
79
+ enum_model = InvalidEnumModel(model=model)
80
+ for prop in model.flatprops.values():
81
+ if not prop.enum:
82
+ continue
83
+
84
+ enum_contains_expr = any(isinstance(enum.prepare, Expr) for enum in prop.enum.values())
85
+ values = gather_unique_property_values(prop)
86
+ for value in values:
87
+ if value is None and not prop.dtype.required:
88
+ continue
89
+ elif value is None:
90
+ enum_model.add_invalid_value(prop, value)
91
+ continue
92
+
93
+ if str(value) in prop.enum:
94
+ continue
95
+
96
+ check_value = value
97
+ if enum_contains_expr:
98
+ for enum in prop.enum.values():
99
+ env = EnumResultBuilder(context).init(value)
100
+ val = env.resolve(enum.prepare)
101
+ if env.has_value_changed:
102
+ check_value = val
103
+ break
104
+
105
+ if str(check_value) not in prop.enum:
106
+ enum_model.add_invalid_value(prop, value)
107
+
108
+ if enum_model.enum_props:
109
+ invalid_models[model.model_type()] = enum_model
110
+
111
+ output_invalid_enums_to_csv(invalid_models, output_path)
112
+
113
+
114
+ def output_invalid_enums_to_csv(invalid_models: dict, output_path: pathlib.Path | None = None):
115
+ stream_ctx = open(output_path, "w") if output_path else nullcontext(sys.stdout)
116
+ with stream_ctx as stream:
117
+ writer = csv.DictWriter(stream, fieldnames=["model", "property", "invalid_value"], lineterminator="\n")
118
+ writer.writeheader()
119
+ for model_key, model in sorted(invalid_models.items()):
120
+ model_written = False
121
+
122
+ for prop_name, prop in model.enum_props.items():
123
+ it = iter(prop.invalid_values)
124
+ first = next(it, None)
125
+ if first is None:
126
+ continue
127
+
128
+ model_name = ""
129
+ if not model_written:
130
+ model_name = model_key
131
+ model_written = True
132
+
133
+ writer.writerow(
134
+ {
135
+ "model": model_name,
136
+ "property": prop_name,
137
+ "invalid_value": first,
138
+ }
139
+ )
140
+
141
+ for value in it:
142
+ writer.writerow(
143
+ {
144
+ "model": "",
145
+ "property": "",
146
+ "invalid_value": value,
147
+ }
148
+ )
@@ -1,3 +1,5 @@
1
+ import sys
2
+
1
3
  import tqdm
2
4
  from click import echo
3
5
  from click.exceptions import Exit
@@ -9,7 +11,9 @@ def cli_error(message: str):
9
11
 
10
12
 
11
13
  def cli_message(message: str, progress_bar: tqdm.tqdm = None):
14
+ # https://pubs.opengroup.org/onlinepubs/9799919799/
15
+ # This documentation states that `stderr` should be used for diagnostic messages (in our case status)
12
16
  if progress_bar is not None:
13
- progress_bar.write(message)
17
+ progress_bar.write(message, file=sys.stderr)
14
18
  else:
15
- echo(message)
19
+ echo(message, err=True)
@@ -31,7 +31,7 @@ class _ScriptMeta(type):
31
31
 
32
32
  class ScriptBase(metaclass=_ScriptMeta):
33
33
  """
34
- Represents an script with optional preconditions and target constraints.
34
+ Represents a script with optional preconditions and target constraints.
35
35
 
36
36
  Targets and tags are mainly used to be able to filter specific scripts. Main use case would be to set target as
37
37
  specific object, like sqlalchemy keymap and tag as migration, so then you could filter all database migration
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from click import echo
4
-
3
+ from spinta.cli.helpers.message import cli_message
5
4
  from spinta.cli.helpers.script.components import ScriptStatus, ScriptBase, ScriptStatusCache
6
5
  from spinta.cli.helpers.script.helpers import sort_scripts_by_required, script_check_status_message
7
6
  from spinta.cli.helpers.script.registry import script_registry
@@ -54,7 +53,7 @@ def run_specific_script(
54
53
  if force:
55
54
  status = ScriptStatus.FORCED
56
55
 
57
- echo(script_check_status_message(script_name, status))
56
+ cli_message(script_check_status_message(script_name, status))
58
57
  if status in (ScriptStatus.FORCED, ScriptStatus.REQUIRED) and not check_only:
59
58
  script.run(context, destructive=destructive, **kwargs)
60
59
  if status_cache is not None:
@@ -73,7 +72,7 @@ def check_script(
73
72
  script = script.value
74
73
 
75
74
  if not script_registry.contains(script_type, script):
76
- echo(f"Warning: {script_type!r} script {script!r} was not found", err=True)
75
+ cli_message(f"Warning: {script_type!r} script {script!r} was not found")
77
76
  return ScriptStatus.SKIPPED
78
77
 
79
78
  script = script_registry.get(script_type, script)
@@ -92,9 +91,8 @@ def check_script(
92
91
  ScriptStatus.REQUIRED,
93
92
  ScriptStatus.SKIPPED,
94
93
  ):
95
- echo(
96
- f"Warning: {required_script_type!r} script {required_script!r} requirement is not met for {script.name!r} script",
97
- err=True,
94
+ cli_message(
95
+ f"Warning: {script_type!r} script {required_script!r} requirement is not met for {script.name!r} script",
98
96
  )
99
97
  return ScriptStatus.SKIPPED
100
98
 
@@ -2,8 +2,8 @@ from __future__ import annotations
2
2
 
3
3
  from collections import defaultdict, deque
4
4
 
5
- from typer import echo
6
5
 
6
+ from spinta.cli.helpers.message import cli_message
7
7
  from spinta.cli.helpers.script.components import ScriptStatus
8
8
  from spinta.cli.helpers.upgrade.components import UpgradeScript
9
9
  from spinta.components import Context, Store
@@ -44,7 +44,7 @@ def sort_scripts_by_required(scripts: dict[str, UpgradeScript]) -> dict:
44
44
 
45
45
  if len(result) != len(data):
46
46
  unresolved = set(data) - set(result)
47
- echo(f"Warning: Dependency cycle detected or unresolved dependencies in: {unresolved}", err=True)
47
+ cli_message(f"Warning: Dependency cycle detected or unresolved dependencies in: {unresolved}")
48
48
  # Extend results, potentially might cause errors, because of cycles
49
49
  result.extend(unresolved)
50
50
 
@@ -1,8 +1,6 @@
1
1
  from contextlib import ExitStack
2
2
  from typing import Generator
3
3
 
4
- from alembic.operations import Operations
5
- from alembic.runtime.migration import MigrationContext
6
4
  from click import echo
7
5
  from sqlalchemy.engine import Inspector
8
6
  from tqdm import tqdm
@@ -105,6 +103,9 @@ def gather_associated_tables(backend: PostgreSQL, table_identifier: TableIdentif
105
103
 
106
104
 
107
105
  def migrate_schemas(context: Context, **kwargs):
106
+ from alembic.operations import Operations
107
+ from alembic.runtime.migration import MigrationContext
108
+
108
109
  ensure_store_is_loaded(context)
109
110
  store = context.get("store")
110
111
 
@@ -1095,7 +1095,8 @@ class Config:
1095
1095
  scope_log: bool
1096
1096
  check_contract_scopes: bool
1097
1097
  default_auth_client: str
1098
- default_access_level: str
1098
+ default_access_level: Access
1099
+ access: Access
1099
1100
  http_basic_auth: bool
1100
1101
  token_validation_key: dict | None = None
1101
1102
  token_validation_keys_download_url: str | None = None
@@ -344,7 +344,8 @@ CONFIG = {
344
344
  },
345
345
  "config_path": pathlib.Path("tests/config"),
346
346
  "default_auth_client": "baa448a8-205c-4faa-a048-a10e4b32a136",
347
- "default_access_level": "protected",
347
+ "default_access_level": "open",
348
+ "access": "open",
348
349
  "sync_retry_count": 0,
349
350
  },
350
351
  },
@@ -164,7 +164,7 @@ def getall(
164
164
  builder.update(model=model, params={param.name: param for param in resource.params}, url_query_params=query)
165
165
 
166
166
  props = {}
167
- for prop in model.properties.values():
167
+ for prop in model.flatprops.values():
168
168
  if prop.external and prop.external.name:
169
169
  root_source = _get_prop_full_source(model.external.name, prop.external.name)
170
170
  props[prop.external.name] = {
@@ -21,7 +21,9 @@ from spinta.typing import ObjectData
21
21
  from spinta.ufuncs.querybuilder.components import QueryParams
22
22
 
23
23
 
24
- def _get_data_soap(url: str, backend: Soap, soap_request_body: dict, extra_headers: dict) -> list[dict]:
24
+ def _get_data_soap(
25
+ url: str, backend: Soap, soap_request_body: dict, extra_headers: dict, source: str | None = None
26
+ ) -> list[dict]:
25
27
  for key, value in soap_request_body.items():
26
28
  if isinstance(value, MakeCDATA):
27
29
  soap_request_body[key] = value()
@@ -38,6 +40,15 @@ def _get_data_soap(url: str, backend: Soap, soap_request_body: dict, extra_heade
38
40
  except zeep.exceptions.Error as e:
39
41
  raise UnexpectedErrorReadingData(exception=type(e).__name__, message=str(e))
40
42
 
43
+ if isinstance(response_data, dict):
44
+ for part in source.split("/"):
45
+ if not part:
46
+ continue
47
+ if part in response_data:
48
+ response_data = response_data[part]
49
+ else:
50
+ response_data = []
51
+ break
41
52
  if response_data and not isinstance(response_data, list):
42
53
  response_data = [response_data]
43
54
 
@@ -137,6 +148,7 @@ def getall(
137
148
  backend=backend,
138
149
  soap_request_body=builder.soap_request_body,
139
150
  extra_headers=http_headers,
151
+ source=model.external.name,
140
152
  )
141
153
  .flatten()
142
154
  .to_dataframe(meta=meta)
@@ -276,6 +276,11 @@ def dask_get_all(
276
276
  val = _get_row_value(context, row, sel, env.params)
277
277
  if sel.prop:
278
278
  if isinstance(sel.prop.dtype, PrimaryKey):
279
+ if isinstance(val, list):
280
+ val = [
281
+ list_value.get("_id", list_value) if isinstance(list_value, dict) else list_value
282
+ for list_value in val
283
+ ]
279
284
  val = keymap.encode(sel.prop.model.model_type(), val)
280
285
  elif isinstance(sel.prop.dtype, Ref):
281
286
  val = handle_ref_key_assignment(context, keymap, env, val, sel.prop.dtype)
@@ -336,12 +336,15 @@ def select(env: DaskDataFrameQueryBuilder, selected: Selected) -> Selected:
336
336
 
337
337
  @ufunc.resolver(DaskDataFrameQueryBuilder, Ref, GetAttr)
338
338
  def select(env: DaskDataFrameQueryBuilder, dtype: Ref, prep: GetAttr) -> Selected | None:
339
- prep = env.call("select", prep)
340
- if prep is not None:
341
- return Selected(
342
- prop=dtype.prop,
343
- prep=prep,
344
- )
339
+ resolved_prep = env.call("select", prep)
340
+
341
+ result = {}
342
+ result["_id"] = Selected(prop=dtype.prop, prep=resolved_prep)
343
+ for prop in dtype.properties.values():
344
+ sel = env.call("select", prop)
345
+ result[prop.name] = sel
346
+
347
+ return Selected(prop=dtype.prop, prep=result)
345
348
 
346
349
 
347
350
  @ufunc.resolver(DaskDataFrameQueryBuilder, Ref, object)
@@ -353,6 +356,18 @@ def select(env: DaskDataFrameQueryBuilder, dtype: Ref, prep: Any) -> Selected:
353
356
  )
354
357
 
355
358
 
359
+ @ufunc.resolver(DaskDataFrameQueryBuilder, Ref)
360
+ def select(env: DaskDataFrameQueryBuilder, dtype: Ref) -> Selected:
361
+ prep = {}
362
+ prep["_id"] = Selected(item=dtype.prop.external.name, prop=dtype.prop)
363
+
364
+ for prop in dtype.properties.values():
365
+ sel = env.call("select", prop)
366
+ prep[prop.name] = sel
367
+
368
+ return Selected(prop=dtype.prop, prep=prep)
369
+
370
+
356
371
  @ufunc.resolver(DaskDataFrameQueryBuilder, GetAttr)
357
372
  def select(env: DaskDataFrameQueryBuilder, attr: GetAttr) -> Selected:
358
373
  resolved = env.resolve_property(attr)
@@ -14,6 +14,10 @@ from spinta.utils.schema import NA
14
14
 
15
15
 
16
16
  def handle_ref_key_assignment(context: Context, keymap: KeyMap, env: Env, value: Any, ref: Ref) -> dict:
17
+ original_value = value
18
+ if isinstance(value, dict):
19
+ value = value["_id"]
20
+
17
21
  keymap_name = ref.model.model_type()
18
22
  if ref.refprops != ref.model.external.pkeys:
19
23
  keymap_name = f"{keymap_name}.{'_'.join(prop.name for prop in ref.refprops)}"
@@ -55,7 +59,16 @@ def handle_ref_key_assignment(context: Context, keymap: KeyMap, env: Env, value:
55
59
 
56
60
  # FIXME Quick hack when trying to get `Internal` model keys while running in `External` mode (should probably return error, or None)
57
61
  if ref_model.mode == Mode.external and not check_if_model_has_backend_and_source(ref_model):
58
- return {"_id": keymap.encode(keymap_name, target_value)}
62
+ val = {"_id": keymap.encode(keymap_name, target_value)}
63
+ if isinstance(original_value, dict):
64
+ for nested_prop_name, nested_prop in ref.properties.items():
65
+ nested_value = original_value[nested_prop_name]
66
+ if isinstance(nested_value, dict):
67
+ nested_value = handle_ref_key_assignment(
68
+ context, keymap, env, nested_value, nested_prop.dtype
69
+ )
70
+ val[nested_prop_name] = nested_value
71
+ return val
59
72
 
60
73
  expr_parts = ["select()"]
61
74
  for i, prop in enumerate(ref.refprops):
@@ -67,7 +80,10 @@ def handle_ref_key_assignment(context: Context, keymap: KeyMap, env: Env, value:
67
80
  for row in rows:
68
81
  if val is not None:
69
82
  raise MultiplePrimaryKeyCandidatesFound(ref, values=target_value)
70
- val = row["_id"]
83
+ if "_id" in row:
84
+ val = row["_id"]
85
+ else:
86
+ val = keymap.encode(keymap_name, target_value)
71
87
  found_value = True
72
88
 
73
89
  if not found_value:
@@ -84,6 +100,13 @@ def handle_ref_key_assignment(context: Context, keymap: KeyMap, env: Env, value:
84
100
  values = values[0]
85
101
  val[prop] = values
86
102
  i = i + count
103
+
104
+ if isinstance(original_value, dict):
105
+ for nested_prop_name, nested_prop in ref.properties.items():
106
+ nested_value = original_value[nested_prop_name]
107
+ if isinstance(nested_value, dict):
108
+ nested_value = handle_ref_key_assignment(context, keymap, env, nested_value, nested_prop.dtype)
109
+ val[nested_prop_name] = nested_value
87
110
  return val
88
111
 
89
112
 
@@ -1223,3 +1223,9 @@ class SourceOrPrepareNotAllowed(UserError):
1223
1223
  template = """
1224
1224
  The source {source} was not expected. Delete it from the manifest or update the prepare function to allow it.
1225
1225
  """
1226
+
1227
+
1228
+ class PartialIncorrectProperty(BaseError):
1229
+ template = (
1230
+ "The composite property {property} is not correct. Check if all parts of the composite property are present."
1231
+ )
@@ -94,7 +94,6 @@ def create_remote_server(
94
94
  {
95
95
  "config_path": confdir,
96
96
  "default_auth_client": None,
97
- "default_access_level": "protected",
98
97
  }
99
98
  )
100
99
  context = create_test_context(rc)
@@ -294,7 +293,6 @@ def create_rc(
294
293
  },
295
294
  # tests/config/clients/3388ea36-4a4f-4821-900a-b574c8829d52.yml
296
295
  "default_auth_client": "3388ea36-4a4f-4821-900a-b574c8829d52",
297
- "default_access_level": "protected",
298
296
  }
299
297
  )
300
298
 
@@ -0,0 +1,13 @@
1
+ import pathlib
2
+
3
+ from requests.models import Response
4
+
5
+
6
+ def parse_csv(resp: Response) -> list[list[str]]:
7
+ resp.raise_for_status()
8
+ return [line.strip().split(",") for line in resp.text.splitlines()]
9
+
10
+
11
+ def read_csv(path: pathlib.Path) -> list[list[str]]:
12
+ with path.open("r") as f:
13
+ return [line.strip().split(",") for line in f.readlines()]