spinta 0.2.dev7__tar.gz → 0.2.dev9__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 (723) hide show
  1. {spinta-0.2.dev7 → spinta-0.2.dev9}/PKG-INFO +7 -6
  2. {spinta-0.2.dev7 → spinta-0.2.dev9}/pyproject.toml +3 -3
  3. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/api/__init__.py +27 -10
  4. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/api/validators.py +5 -3
  5. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/auth.py +182 -27
  6. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/admin.py +1 -1
  7. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/auth.py +30 -2
  8. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/data.py +7 -1
  9. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/errors.py +0 -9
  10. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/backends/postgresql/commands.py +1 -1
  11. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/commands.py +1 -1
  12. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/helpers.py +1 -1
  13. spinta-0.2.dev9/spinta/cli/helpers/message.py +15 -0
  14. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/sync.py +41 -8
  15. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/keymap.py +7 -1
  16. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/main.py +1 -1
  17. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/migrate.py +1 -1
  18. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/pull.py +1 -1
  19. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/push.py +12 -4
  20. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/upgrade.py +1 -1
  21. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/components.py +15 -1
  22. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/config.py +6 -1
  23. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +19 -3
  24. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/components.py +3 -7
  25. spinta-0.2.dev9/spinta/datasets/backends/sql/backends/oracle/helpers.py +62 -0
  26. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/cast.py +23 -1
  27. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/components.py +9 -0
  28. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/keymaps/sync.py +30 -11
  29. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/param/components.py +0 -1
  30. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/param/ufuncs.py +0 -10
  31. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/exceptions.py +2 -2
  32. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/helpers.py +4 -2
  33. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/config.py +11 -0
  34. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/loadbuilder/ufuncs.py +19 -0
  35. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/resultbuilder/ufuncs.py +19 -2
  36. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/response.py +39 -3
  37. spinta-0.2.dev7/spinta/datasets/backends/sql/helpers.py +0 -0
  38. {spinta-0.2.dev7 → spinta-0.2.dev9}/LICENSE +0 -0
  39. {spinta-0.2.dev7 → spinta-0.2.dev9}/README.rst +0 -0
  40. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/__init__.py +0 -0
  41. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/__main__.py +0 -0
  42. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/accesslog/__init__.py +0 -0
  43. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/accesslog/file.py +0 -0
  44. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/accesslog/python.py +0 -0
  45. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/api/inspect.py +0 -0
  46. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/api/schema.py +0 -0
  47. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/asgi.py +0 -0
  48. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/__init__.py +0 -0
  49. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/components.py +0 -0
  50. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/constants.py +0 -0
  51. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/__init__.py +0 -0
  52. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/__init__.py +0 -0
  53. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/bootstrap.py +0 -0
  54. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/changes.py +0 -0
  55. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/decode.py +0 -0
  56. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/encode.py +0 -0
  57. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/init.py +0 -0
  58. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/load.py +0 -0
  59. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/migrate.py +0 -0
  60. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/read.py +0 -0
  61. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/validate.py +0 -0
  62. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/wait.py +0 -0
  63. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/wipe.py +0 -0
  64. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/commands/write.py +0 -0
  65. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/fs/components.py +0 -0
  66. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/helpers.py +0 -0
  67. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/__init__.py +0 -0
  68. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/__init__.py +0 -0
  69. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/auth.py +0 -0
  70. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/bootstrap.py +0 -0
  71. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/changes.py +0 -0
  72. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/check.py +0 -0
  73. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/encode.py +0 -0
  74. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/init.py +0 -0
  75. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/load.py +0 -0
  76. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/manifest.py +0 -0
  77. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/read.py +0 -0
  78. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/wait.py +0 -0
  79. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/wipe.py +0 -0
  80. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/commands/write.py +0 -0
  81. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/memory/components.py +0 -0
  82. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/__init__.py +0 -0
  83. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/__init__.py +0 -0
  84. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/bootstrap.py +0 -0
  85. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/changes.py +0 -0
  86. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/encode.py +0 -0
  87. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/freeze.py +0 -0
  88. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/init.py +0 -0
  89. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/load.py +0 -0
  90. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/migrate.py +0 -0
  91. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/read.py +0 -0
  92. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/validate.py +0 -0
  93. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/wait.py +0 -0
  94. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/wipe.py +0 -0
  95. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/commands/write.py +0 -0
  96. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/components.py +0 -0
  97. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/helpers.py +0 -0
  98. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/__init__.py +0 -0
  99. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/array/__init__.py +0 -0
  100. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/array/write.py +0 -0
  101. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/file/__init__.py +0 -0
  102. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/file/write.py +0 -0
  103. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/object/__init__.py +0 -0
  104. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/types/object/write.py +0 -0
  105. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
  106. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/ufuncs/components.py +0 -0
  107. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
  108. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/__init__.py +0 -0
  109. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/__init__.py +0 -0
  110. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
  111. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/changes.py +0 -0
  112. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/init.py +0 -0
  113. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/load.py +0 -0
  114. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/read.py +0 -0
  115. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/wait.py +0 -0
  116. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/wipe.py +0 -0
  117. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/commands/write.py +0 -0
  118. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/nobackend/components.py +0 -0
  119. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/__init__.py +0 -0
  120. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/__init__.py +0 -0
  121. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
  122. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/changes.py +0 -0
  123. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/column.py +0 -0
  124. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/encode.py +0 -0
  125. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/freeze.py +0 -0
  126. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/init.py +0 -0
  127. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/link.py +0 -0
  128. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/load.py +0 -0
  129. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/manifest.py +0 -0
  130. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
  131. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
  132. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
  133. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
  134. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
  135. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
  136. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
  137. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
  138. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
  139. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
  140. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
  141. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
  142. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/read.py +0 -0
  143. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/redirect.py +0 -0
  144. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/summary.py +0 -0
  145. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/validate.py +0 -0
  146. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/wait.py +0 -0
  147. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/wipe.py +0 -0
  148. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/commands/write.py +0 -0
  149. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/components.py +0 -0
  150. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/constants.py +0 -0
  151. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/files.py +0 -0
  152. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/__init__.py +0 -0
  153. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/changes.py +0 -0
  154. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
  155. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/extractors.py +0 -0
  156. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/manifest.py +0 -0
  157. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
  158. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
  159. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
  160. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/name.py +0 -0
  161. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/redirect.py +0 -0
  162. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/helpers/validate.py +0 -0
  163. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/sqlalchemy.py +0 -0
  164. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/__init__.py +0 -0
  165. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array/__init__.py +0 -0
  166. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array/freeze.py +0 -0
  167. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array/init.py +0 -0
  168. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array/wipe.py +0 -0
  169. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array/write.py +0 -0
  170. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
  171. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
  172. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
  173. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/backref/init.py +0 -0
  174. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/denorm/init.py +0 -0
  175. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
  176. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/file/__init__.py +0 -0
  177. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/file/freeze.py +0 -0
  178. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/file/init.py +0 -0
  179. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/file/read.py +0 -0
  180. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/file/write.py +0 -0
  181. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
  182. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
  183. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/geometry/helpers.py +0 -0
  184. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/geometry/init.py +0 -0
  185. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/geometry/write.py +0 -0
  186. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/object/__init__.py +0 -0
  187. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/object/freeze.py +0 -0
  188. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/object/init.py +0 -0
  189. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/object/read.py +0 -0
  190. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/object/wipe.py +0 -0
  191. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
  192. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/ref/freeze.py +0 -0
  193. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/ref/init.py +0 -0
  194. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/ref/validate.py +0 -0
  195. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/text/__init__.py +0 -0
  196. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/types/text/init.py +0 -0
  197. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
  198. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/components.py +0 -0
  199. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
  200. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
  201. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  202. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
  203. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
  204. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
  205. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
  206. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/backends/types/__init__.py +0 -0
  207. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/__init__.py +0 -0
  208. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/config.py +0 -0
  209. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/get.py +0 -0
  210. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/__init__.py +0 -0
  211. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/__init__.py +0 -0
  212. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/components.py +0 -0
  213. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/registry.py +0 -0
  214. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
  215. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
  216. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
  217. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/auth.py +0 -0
  218. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/data.py +0 -0
  219. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/__init__.py +0 -0
  220. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/backends/__init__.py +0 -0
  221. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
  222. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
  223. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
  224. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/export/components.py +0 -0
  225. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/manifest.py +0 -0
  226. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/migrate.py +0 -0
  227. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/__init__.py +0 -0
  228. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/components.py +0 -0
  229. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/delete.py +0 -0
  230. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/error.py +0 -0
  231. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/read.py +0 -0
  232. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/state.py +0 -0
  233. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/utils.py +0 -0
  234. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/push/write.py +0 -0
  235. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/script/__init__.py +0 -0
  236. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/script/components.py +0 -0
  237. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/script/core.py +0 -0
  238. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/script/helpers.py +0 -0
  239. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/script/registry.py +0 -0
  240. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/store.py +0 -0
  241. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/__init__.py +0 -0
  242. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/api_helpers.py +0 -0
  243. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
  244. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
  245. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
  246. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
  247. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
  248. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
  249. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/controllers/synchronization/catalog_to_agent.py +0 -0
  250. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/enum.py +0 -0
  251. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/sync/helpers.py +0 -0
  252. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/typer.py +0 -0
  253. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/__init__.py +0 -0
  254. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/components.py +0 -0
  255. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/registry.py +0 -0
  256. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
  257. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
  258. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
  259. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
  260. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
  261. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
  262. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
  263. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
  264. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
  265. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/init.py +0 -0
  266. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/inspect.py +0 -0
  267. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/manifest.py +0 -0
  268. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/pii.py +0 -0
  269. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/server.py +0 -0
  270. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/show.py +0 -0
  271. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/cli/sync.py +0 -0
  272. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/client.py +0 -0
  273. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/__init__.py +0 -0
  274. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/auth.py +0 -0
  275. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/helpers.py +0 -0
  276. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/read.py +0 -0
  277. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/search.py +0 -0
  278. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/version.py +0 -0
  279. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/commands/write.py +0 -0
  280. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/compat.py +0 -0
  281. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/config.yml +0 -0
  282. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/__init__.py +0 -0
  283. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/access.py +0 -0
  284. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/config.py +0 -0
  285. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/context.py +0 -0
  286. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/enums.py +0 -0
  287. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/core/ufuncs.py +0 -0
  288. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/__init__.py +0 -0
  289. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/__init__.py +0 -0
  290. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/__init__.py +0 -0
  291. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
  292. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
  293. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
  294. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
  295. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
  296. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
  297. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
  298. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
  299. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
  300. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
  301. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
  302. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
  303. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
  304. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
  305. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
  306. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
  307. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
  308. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
  309. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
  310. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
  311. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
  312. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/commands/read.py +0 -0
  313. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/components.py +0 -0
  314. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
  315. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
  316. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
  317. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
  318. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +0 -0
  319. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
  320. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/helpers.py +0 -0
  321. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/notimpl/__init__.py +0 -0
  322. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
  323. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
  324. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
  325. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/notimpl/components.py +0 -0
  326. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/__init__.py +0 -0
  327. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
  328. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
  329. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
  330. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
  331. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
  332. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
  333. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
  334. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
  335. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
  336. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
  337. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
  338. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
  339. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
  340. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
  341. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
  342. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
  343. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
  344. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
  345. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
  346. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
  347. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
  348. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
  349. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
  350. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
  351. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
  352. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
  353. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
  354. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
  355. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
  356. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
  357. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
  358. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
  359. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
  360. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
  361. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
  362. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  363. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
  364. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
  365. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
  366. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
  367. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
  368. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
  369. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
  370. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
  371. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
  372. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/column.py +0 -0
  373. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/init.py +0 -0
  374. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/load.py +0 -0
  375. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/read.py +0 -0
  376. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/commands/wait.py +0 -0
  377. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/components.py +0 -0
  378. {spinta-0.2.dev7/spinta/datasets/backends/sql/backends/oracle → spinta-0.2.dev9/spinta/datasets/backends/sql}/helpers.py +0 -0
  379. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
  380. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
  381. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
  382. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
  383. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
  384. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
  385. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
  386. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
  387. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
  388. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
  389. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/__init__.py +0 -0
  390. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
  391. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
  392. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
  393. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
  394. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/components.py +0 -0
  395. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
  396. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
  397. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
  398. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/wsdl/__init__.py +0 -0
  399. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
  400. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
  401. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/backends/wsdl/components.py +0 -0
  402. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/__init__.py +0 -0
  403. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/check.py +0 -0
  404. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/error.py +0 -0
  405. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/inspect.py +0 -0
  406. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/link.py +0 -0
  407. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/load.py +0 -0
  408. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/commands/wipe.py +0 -0
  409. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/enums.py +0 -0
  410. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/helpers.py +0 -0
  411. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/__init__.py +0 -0
  412. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/commands/__init__.py +0 -0
  413. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/commands/manifest.py +0 -0
  414. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/commands/merge.py +0 -0
  415. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/components.py +0 -0
  416. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/inspect/helpers.py +0 -0
  417. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/keymaps/__init__.py +0 -0
  418. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/keymaps/components.py +0 -0
  419. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/keymaps/redis.py +0 -0
  420. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
  421. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/datasets/utils.py +0 -0
  422. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/__init__.py +0 -0
  423. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/comments/__init__.py +0 -0
  424. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/comments/components.py +0 -0
  425. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/comments/helpers.py +0 -0
  426. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/enum/__init__.py +0 -0
  427. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/enum/commands.py +0 -0
  428. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/enum/components.py +0 -0
  429. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/enum/helpers.py +0 -0
  430. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/enum/ufuncs.py +0 -0
  431. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/lang/__init__.py +0 -0
  432. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/lang/components.py +0 -0
  433. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/lang/helpers.py +0 -0
  434. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/param/__init__.py +0 -0
  435. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/param/helpers.py +0 -0
  436. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/prefix/__init__.py +0 -0
  437. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/prefix/commands/__init__.py +0 -0
  438. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/prefix/commands/load.py +0 -0
  439. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/prefix/components.py +0 -0
  440. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dimensions/prefix/helpers.py +0 -0
  441. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/dispatcher.py +0 -0
  442. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/fetcher.py +0 -0
  443. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/__init__.py +0 -0
  444. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/ascii/__init__.py +0 -0
  445. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/ascii/commands.py +0 -0
  446. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/ascii/components.py +0 -0
  447. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/ascii/helpers.py +0 -0
  448. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/components.py +0 -0
  449. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/csv/__init__.py +0 -0
  450. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/csv/commands.py +0 -0
  451. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/csv/components.py +0 -0
  452. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/helpers.py +0 -0
  453. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/html/__init__.py +0 -0
  454. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/html/commands.py +0 -0
  455. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/html/components.py +0 -0
  456. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/html/helpers.py +0 -0
  457. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/json/__init__.py +0 -0
  458. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/json/commands.py +0 -0
  459. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/json/components.py +0 -0
  460. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/jsonlines/__init__.py +0 -0
  461. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/jsonlines/commands.py +0 -0
  462. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/jsonlines/components.py +0 -0
  463. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/rdf/commands.py +0 -0
  464. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/rdf/components.py +0 -0
  465. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/xlsx/__init__.py +0 -0
  466. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/xlsx/commands.py +0 -0
  467. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/formats/xlsx/components.py +0 -0
  468. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/hacks/__init__.py +0 -0
  469. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/hacks/spyna.py +0 -0
  470. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/hacks/urlparams.py +0 -0
  471. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/handlers.py +0 -0
  472. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/logging_config.py +0 -0
  473. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifest/_ns.yml +0 -0
  474. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifest/_schema/version.yml +0 -0
  475. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifest/_schema.yml +0 -0
  476. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifest/_txn.yml +0 -0
  477. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/__init__.py +0 -0
  478. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/__init__.py +0 -0
  479. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/__init__.py +0 -0
  480. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/bootstrap.py +0 -0
  481. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/configure.py +0 -0
  482. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/freeze.py +0 -0
  483. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/load.py +0 -0
  484. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/manifest.py +0 -0
  485. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/migrate.py +0 -0
  486. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/commands/sync.py +0 -0
  487. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/components.py +0 -0
  488. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/backend/helpers.py +0 -0
  489. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/__init__.py +0 -0
  490. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/auth.py +0 -0
  491. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/check.py +0 -0
  492. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/error.py +0 -0
  493. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/init.py +0 -0
  494. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/inspect.py +0 -0
  495. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/link.py +0 -0
  496. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/load.py +0 -0
  497. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/manifest.py +0 -0
  498. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/migrate.py +0 -0
  499. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/commands/read.py +0 -0
  500. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/components.py +0 -0
  501. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/__init__.py +0 -0
  502. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/commands/__init__.py +0 -0
  503. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/commands/configure.py +0 -0
  504. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/commands/load.py +0 -0
  505. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/components.py +0 -0
  506. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/dict/helpers.py +0 -0
  507. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/helpers.py +0 -0
  508. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal/__init__.py +0 -0
  509. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal/commands/__init__.py +0 -0
  510. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal/commands/configure.py +0 -0
  511. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal/commands/load.py +0 -0
  512. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal/components.py +0 -0
  513. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/__init__.py +0 -0
  514. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
  515. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/auth.py +0 -0
  516. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/backend.py +0 -0
  517. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
  518. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/configure.py +0 -0
  519. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/load.py +0 -0
  520. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
  521. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/commands/read.py +0 -0
  522. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/components.py +0 -0
  523. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/internal_sql/helpers.py +0 -0
  524. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/memory/__init__.py +0 -0
  525. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/memory/commands/__init__.py +0 -0
  526. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/memory/commands/configure.py +0 -0
  527. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/memory/commands/load.py +0 -0
  528. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/memory/components.py +0 -0
  529. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/mermaid/__init__.py +0 -0
  530. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/mermaid/components.py +0 -0
  531. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/mermaid/helpers.py +0 -0
  532. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/__init__.py +0 -0
  533. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/commands/__init__.py +0 -0
  534. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/commands/configure.py +0 -0
  535. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/commands/load.py +0 -0
  536. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/components.py +0 -0
  537. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/helpers.py +0 -0
  538. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/openapi_config.py +0 -0
  539. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/open_api/openapi_generator.py +0 -0
  540. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
  541. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/rdf/commands/configure.py +0 -0
  542. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/rdf/commands/load.py +0 -0
  543. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/rdf/components.py +0 -0
  544. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/rdf/helpers.py +0 -0
  545. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/__init__.py +0 -0
  546. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/commands/__init__.py +0 -0
  547. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/commands/configure.py +0 -0
  548. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/commands/load.py +0 -0
  549. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/sql/components.py +0 -0
  550. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/__init__.py +0 -0
  551. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/commands/__init__.py +0 -0
  552. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
  553. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/commands/configure.py +0 -0
  554. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/commands/load.py +0 -0
  555. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/components.py +0 -0
  556. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/constants.py +0 -0
  557. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/formats/__init__.py +0 -0
  558. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/formats/gsheets.py +0 -0
  559. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/tabular/helpers.py +0 -0
  560. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/__init__.py +0 -0
  561. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/commands/__init__.py +0 -0
  562. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/commands/configure.py +0 -0
  563. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/commands/load.py +0 -0
  564. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/components.py +0 -0
  565. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd/helpers.py +0 -0
  566. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/__init__.py +0 -0
  567. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/commands/__init__.py +0 -0
  568. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/commands/configure.py +0 -0
  569. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/commands/load.py +0 -0
  570. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/components.py +0 -0
  571. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/xsd2/helpers.py +0 -0
  572. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/__init__.py +0 -0
  573. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/__init__.py +0 -0
  574. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
  575. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/configure.py +0 -0
  576. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/freeze.py +0 -0
  577. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/load.py +0 -0
  578. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/manifest.py +0 -0
  579. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/migrate.py +0 -0
  580. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/commands/sync.py +0 -0
  581. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/components.py +0 -0
  582. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/manifests/yaml/helpers.py +0 -0
  583. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/methods.py +0 -0
  584. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/middlewares.py +0 -0
  585. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/migrations/__init__.py +0 -0
  586. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/migrations/schema/__init__.py +0 -0
  587. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/migrations/schema/alembic.py +0 -0
  588. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/naming/__init__.py +0 -0
  589. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/naming/components.py +0 -0
  590. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/naming/helpers.py +0 -0
  591. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/naming/ufuncts.py +0 -0
  592. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/nodes.py +0 -0
  593. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/renderer.py +0 -0
  594. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/spyna.py +0 -0
  595. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/templates/base.html +0 -0
  596. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/templates/data.html +0 -0
  597. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/templates/error.html +0 -0
  598. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/templates/form.html +0 -0
  599. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/__init__.py +0 -0
  600. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/cli.py +0 -0
  601. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/client.py +0 -0
  602. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/config.py +0 -0
  603. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/context.py +0 -0
  604. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/csv.py +0 -0
  605. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/data.py +0 -0
  606. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/datasets.py +0 -0
  607. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/dtypes.py +0 -0
  608. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/manifest.py +0 -0
  609. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/push.py +0 -0
  610. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/pytest.py +0 -0
  611. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/request.py +0 -0
  612. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/tabular.py +0 -0
  613. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/types/__init__.py +0 -0
  614. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/types/geometry.py +0 -0
  615. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/ufuncs.py +0 -0
  616. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/testing/utils.py +0 -0
  617. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/__init__.py +0 -0
  618. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/array/__init__.py +0 -0
  619. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/array/check.py +0 -0
  620. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/array/link.py +0 -0
  621. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/array/resolve.py +0 -0
  622. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/backref/__init__.py +0 -0
  623. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/backref/link.py +0 -0
  624. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/command.py +0 -0
  625. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/datatype.py +0 -0
  626. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/denorm/__init__.py +0 -0
  627. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/denorm/check.py +0 -0
  628. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/denorm/link.py +0 -0
  629. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/file/__init__.py +0 -0
  630. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/file/components.py +0 -0
  631. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/file/decode.py +0 -0
  632. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/file/helpers.py +0 -0
  633. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/geometry/__init__.py +0 -0
  634. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/geometry/components.py +0 -0
  635. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/geometry/constants.py +0 -0
  636. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/geometry/helpers.py +0 -0
  637. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/geometry/load.py +0 -0
  638. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/helpers.py +0 -0
  639. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/inherit/__init__.py +0 -0
  640. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/inherit/check.py +0 -0
  641. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/model.py +0 -0
  642. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/namespace.py +0 -0
  643. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/object/__init__.py +0 -0
  644. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/object/check.py +0 -0
  645. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/object/link.py +0 -0
  646. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/partial/__init__.py +0 -0
  647. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/partial/link.py +0 -0
  648. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/ref/__init__.py +0 -0
  649. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/ref/check.py +0 -0
  650. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/ref/link.py +0 -0
  651. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/ref/resolve.py +0 -0
  652. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/store.py +0 -0
  653. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/text/__init__.py +0 -0
  654. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/text/check.py +0 -0
  655. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/text/components.py +0 -0
  656. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/text/helpers.py +0 -0
  657. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/types/text/load.py +0 -0
  658. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/typing.py +0 -0
  659. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/__init__.py +0 -0
  660. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/binds.py +0 -0
  661. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/changebase/__init__.py +0 -0
  662. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/changebase/components.py +0 -0
  663. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/changebase/helpers.py +0 -0
  664. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/changebase/ufuncs.py +0 -0
  665. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/common.py +0 -0
  666. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/components.py +0 -0
  667. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/helpers.py +0 -0
  668. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
  669. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/linkbuilder/components.py +0 -0
  670. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
  671. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
  672. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/loadbuilder/components.py +0 -0
  673. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
  674. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
  675. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/propertyresolver/components.py +0 -0
  676. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
  677. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/querybuilder/__init__.py +0 -0
  678. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/querybuilder/components.py +0 -0
  679. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/querybuilder/helpers.py +0 -0
  680. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
  681. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
  682. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
  683. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
  684. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
  685. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
  686. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/resultbuilder/components.py +0 -0
  687. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
  688. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/summaryenv/__init__.py +0 -0
  689. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/summaryenv/components.py +0 -0
  690. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
  691. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/units/__init__.py +0 -0
  692. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/units/components.py +0 -0
  693. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/units/helpers.py +0 -0
  694. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/urlparams.py +0 -0
  695. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/__init__.py +0 -0
  696. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/aiotools.py +0 -0
  697. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/changes.py +0 -0
  698. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/config.py +0 -0
  699. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/data.py +0 -0
  700. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/encoding.py +0 -0
  701. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/enums.py +0 -0
  702. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/errors.py +0 -0
  703. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/functools.py +0 -0
  704. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/idgen.py +0 -0
  705. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/imports.py +0 -0
  706. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/itertools.py +0 -0
  707. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/json.py +0 -0
  708. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/naming.py +0 -0
  709. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/nestedstruct.py +0 -0
  710. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/nin.py +0 -0
  711. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/passwords.py +0 -0
  712. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/path.py +0 -0
  713. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/refs.py +0 -0
  714. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/schema.py +0 -0
  715. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/scopes.py +0 -0
  716. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/sqlalchemy.py +0 -0
  717. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/sqlite.py +0 -0
  718. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/starlette.py +0 -0
  719. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/streams.py +0 -0
  720. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/tree.py +0 -0
  721. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/types.py +0 -0
  722. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/units.py +0 -0
  723. {spinta-0.2.dev7 → spinta-0.2.dev9}/spinta/utils/url.py +0 -0
@@ -1,12 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: spinta
3
- Version: 0.2.dev7
3
+ Version: 0.2.dev9
4
4
  Summary: A platform for describing, extracting, transforming, loading and serving open data.
5
- Home-page: https://github.com/atviriduomenys/spinta
6
5
  License: MIT
6
+ License-File: LICENSE
7
7
  Author: Mantas Zimnickas
8
8
  Author-email: sirexas@gmail.com
9
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >=3.10,<4.0
10
10
  Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Environment :: Web Environment
@@ -16,11 +16,11 @@ Classifier: License :: OSI Approved :: MIT License
16
16
  Classifier: Operating System :: POSIX
17
17
  Classifier: Operating System :: POSIX :: Linux
18
18
  Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
24
  Classifier: Topic :: Database
25
25
  Classifier: Topic :: Database :: Database Engines/Servers
26
26
  Classifier: Topic :: Database :: Front-Ends
@@ -69,7 +69,7 @@ Requires-Dist: sqlalchemy (>=1.4,<1.5)
69
69
  Requires-Dist: sqlalchemy-utils (<=0.41.2)
70
70
  Requires-Dist: sqlean-py (<=3.49.1)
71
71
  Requires-Dist: sqlparse
72
- Requires-Dist: starlette (>=0.40)
72
+ Requires-Dist: starlette (>=0.49.1)
73
73
  Requires-Dist: tabulate
74
74
  Requires-Dist: toposort
75
75
  Requires-Dist: tqdm
@@ -82,6 +82,7 @@ Requires-Dist: xmltodict
82
82
  Requires-Dist: zeep (>=4.3.1,<5.0.0)
83
83
  Project-URL: Bug Tracker, https://github.com/atviriduomenys/spinta/issues
84
84
  Project-URL: Documentation, https://spinta.readthedocs.io/
85
+ Project-URL: Homepage, https://github.com/atviriduomenys/spinta
85
86
  Project-URL: Repository, https://github.com/atviriduomenys/spinta
86
87
  Description-Content-Type: text/x-rst
87
88
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "spinta"
3
- version = "0.2dev7"
3
+ version = "0.2dev9"
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"
@@ -34,7 +34,7 @@ spinta = "spinta.cli.main:app"
34
34
 
35
35
 
36
36
  [tool.poetry.dependencies]
37
- python = "^3.9"
37
+ python = "^3.10"
38
38
  aiofiles = "*"
39
39
  # https://github.com/atviriduomenys/spinta/issues/675
40
40
  # 0.x -> 1.x upgrade changed their implementation API, so we can no longer support 0.x.
@@ -54,7 +54,7 @@ requests = "*"
54
54
  setuptools = "*"
55
55
  setuptools-scm = "*"
56
56
  # https://github.com/encode/starlette/security/advisories/GHSA-f96h-pmfr-66vw
57
- starlette = ">=0.40"
57
+ starlette = ">=0.49.1"
58
58
  pydantic = "*"
59
59
  toposort = "*"
60
60
  tqdm = "*"
@@ -19,7 +19,7 @@ from starlette.templating import Jinja2Templates
19
19
 
20
20
  from spinta import components, commands
21
21
  from spinta.accesslog import create_accesslog
22
- from spinta.api.validators import ClientAddData, ClientPatchData, ClientSecretPatchData
22
+ from spinta.api.validators import ClientAddData, ClientPatchData, ClientSecretPatchData, ClientBackendsData
23
23
  from spinta.auth import (
24
24
  AuthorizationServer,
25
25
  check_scope,
@@ -33,6 +33,9 @@ from spinta.auth import (
33
33
  Scopes,
34
34
  authenticate_token,
35
35
  StarletteOAuth2Data,
36
+ KeyType,
37
+ load_key_from_file,
38
+ has_scope,
36
39
  )
37
40
  from spinta.auth import BearerTokenValidator
38
41
  from spinta.auth import ResourceProtector
@@ -96,6 +99,20 @@ async def auth_token(request: Request):
96
99
  raise NoAuthServer()
97
100
 
98
101
 
102
+ async def get_verification_keys(request: Request) -> JSONResponse:
103
+ context = request.state.context
104
+ config = context.get("config")
105
+ content: dict = {"keys": []}
106
+ if config.token_validation_key:
107
+ if "keys" in config.token_validation_key:
108
+ content["keys"] += config.token_validation_key["keys"]
109
+ else:
110
+ content["keys"] = [config.token_validation_key]
111
+ elif default_key := load_key_from_file(config, KeyType.public):
112
+ content["keys"].append(default_key)
113
+ return JSONResponse(content=content)
114
+
115
+
99
116
  def _auth_accesslog(context: Context, request: Request, payload: dict, output_format: str):
100
117
  access_token = payload.get("access_token")
101
118
  if not access_token:
@@ -175,7 +192,6 @@ async def auth_clients_add(request: Request) -> JSONResponse:
175
192
  client_id,
176
193
  client_data["secret"],
177
194
  client_data.get("scopes"),
178
- client_data.get("backends"),
179
195
  )
180
196
 
181
197
  return JSONResponse(
@@ -183,7 +199,6 @@ async def auth_clients_add(request: Request) -> JSONResponse:
183
199
  "client_id": client_["client_id"],
184
200
  "client_name": name,
185
201
  "scopes": client_["scopes"],
186
- "backends": client_["backends"],
187
202
  }
188
203
  )
189
204
 
@@ -246,15 +261,16 @@ async def auth_clients_patch_specific(request: Request) -> JSONResponse:
246
261
  context = _auth_client_context(request)
247
262
  token = context.get("auth.token")
248
263
  client_id = request.path_params["client"]
264
+ is_own_client = client_id == token.get_client_id()
249
265
 
250
- validator_class = ClientPatchData
251
- try:
252
- check_scope(context, Scopes.AUTH_CLIENTS)
253
- except InsufficientScopeError:
266
+ if has_scope(context, Scopes.AUTH_CLIENTS, raise_error=False):
267
+ validator_class = ClientPatchData
268
+ elif has_scope(context, Scopes.CLIENT_BACKENDS_UPDATE_SELF, raise_error=False) and is_own_client:
269
+ validator_class = ClientBackendsData
270
+ elif is_own_client: # Requests without scope can only change its own secret
254
271
  validator_class = ClientSecretPatchData
255
- # Requests without AUTH_CLIENTS scope can only change its own secret
256
- if client_id != token.get_client_id():
257
- raise InsufficientPermission(scope=Scopes.AUTH_CLIENTS)
272
+ else:
273
+ raise InsufficientPermission(scope=Scopes.AUTH_CLIENTS)
258
274
 
259
275
  config = context.get("config")
260
276
  commands.load(context, config)
@@ -425,6 +441,7 @@ def init(context: Context):
425
441
  Route("/favicon.ico", favicon, methods=["GET"]),
426
442
  Route("/version", version, methods=["GET"]),
427
443
  Route("/auth/token", auth_token, methods=["POST"]),
444
+ Route("/.well-known/jwks.json", get_verification_keys, methods=["GET"]),
428
445
  Route("/_srid/{srid:int}/{x:spinta_float}/{y:spinta_float}", srid_check, methods=["GET"]),
429
446
  Route("/auth/clients", auth_clients_get_all, methods=["GET"]),
430
447
  Route("/auth/clients", auth_clients_add, methods=["POST"]),
@@ -7,7 +7,6 @@ class ClientAddData(BaseModel):
7
7
  client_name: Optional[str] = None
8
8
  secret: str = Field(..., min_length=1)
9
9
  scopes: Optional[list[str]] = None
10
- backends: Optional[dict[str, dict[str, Any]]] = None
11
10
 
12
11
  model_config = ConfigDict(extra="forbid")
13
12
 
@@ -18,7 +17,10 @@ class ClientSecretPatchData(BaseModel):
18
17
  model_config = ConfigDict(extra="forbid")
19
18
 
20
19
 
21
- class ClientPatchData(ClientSecretPatchData):
20
+ class ClientBackendsData(ClientSecretPatchData):
21
+ backends: Optional[dict[str, dict[str, Any]]] = None
22
+
23
+
24
+ class ClientPatchData(ClientBackendsData):
22
25
  client_name: Optional[str] = None
23
26
  scopes: Optional[list[str]] = None
24
- backends: Optional[dict[str, dict[str, Any]]] = None
@@ -13,14 +13,15 @@ import uuid
13
13
  from collections import defaultdict
14
14
  from functools import cached_property
15
15
  from threading import Lock
16
- from typing import Set, Any
16
+ from typing import Set, Any, TypedDict, Literal
17
17
  from typing import Type
18
18
  from typing import Union, List, Tuple
19
19
 
20
+ import requests
20
21
  import ruamel.yaml
21
- from authlib.jose import JsonWebKey
22
+ from authlib.jose import JsonWebKey, RSAKey, JWTClaims
22
23
  from authlib.jose import jwt
23
- from authlib.jose.errors import JoseError
24
+ from authlib.jose.errors import JoseError, DecodeError, InvalidTokenError, BadSignatureError
24
25
  from authlib.oauth2 import OAuth2Error
25
26
  from authlib.oauth2 import OAuth2Request
26
27
  from authlib.oauth2 import rfc6749
@@ -34,6 +35,7 @@ from cachetools.keys import hashkey
34
35
  from cryptography.hazmat.backends import default_backend
35
36
  from cryptography.hazmat.primitives.asymmetric import rsa
36
37
  from multipledispatch import dispatch
38
+ from requests import RequestException
37
39
  from starlette.datastructures import FormData, QueryParams, Headers
38
40
  from starlette.exceptions import HTTPException
39
41
  from starlette.responses import JSONResponse
@@ -77,6 +79,20 @@ DEPRECATED_SCOPE_PREFIX = "spinta_"
77
79
 
78
80
  # Scope types taken from authlib.oauth2.rfc6749.util.scope_to_list
79
81
  SCOPE_TYPE = Union[tuple, list, set, str, None]
82
+ Kid = str # key id
83
+
84
+
85
+ class JWK(TypedDict):
86
+ kid: str
87
+ kty: str
88
+ alg: str
89
+ use: str
90
+ n: str
91
+ e: str
92
+
93
+
94
+ class JWKS(TypedDict):
95
+ keys: List[JWK]
80
96
 
81
97
 
82
98
  class KeyType(enum.Enum):
@@ -92,6 +108,9 @@ class Scopes(enum.Enum):
92
108
  # Grants access to manipulate client files through API
93
109
  AUTH_CLIENTS = "auth_clients"
94
110
 
111
+ # Grants access to change its own client file backends
112
+ CLIENT_BACKENDS_UPDATE_SELF = "client_backends_update_self"
113
+
95
114
  # Grants access to generate inspect files through API
96
115
  INSPECT = "inspect"
97
116
 
@@ -165,11 +184,103 @@ class ResourceProtector(rfc6749.ResourceProtector):
165
184
  self.register_token_validator(Validator(context))
166
185
 
167
186
 
187
+ def load_all_public_keys(context: Context) -> list[RSAKey]:
188
+ config = context.get("config")
189
+ token_validation_key = config.token_validation_key
190
+ token_validation_keys_download_url = config.token_validation_keys_download_url
191
+
192
+ if isinstance(token_validation_key, dict) and token_validation_key:
193
+ local_public_keys: list[RSAKey] = []
194
+ if "keys" in token_validation_key:
195
+ for key in token_validation_key["keys"]:
196
+ local_public_keys.append(JsonWebKey.import_key(key))
197
+ else:
198
+ local_public_keys = [JsonWebKey.import_key(token_validation_key)]
199
+ return local_public_keys
200
+ elif token_validation_keys_download_url:
201
+ return load_downloaded_public_keys(context)
202
+ else:
203
+ return [load_key(context, KeyType.public)]
204
+
205
+
206
+ def load_downloaded_public_keys(context: Context) -> list[RSAKey]:
207
+ config = context.get("config")
208
+ if not config.downloaded_public_keys_file:
209
+ log.error("config.downloaded_public_keys_file is not set")
210
+ return []
211
+ if not config.downloaded_public_keys_file.exists():
212
+ log.error(f"File {config.downloaded_public_keys_file} does not exist")
213
+ return []
214
+
215
+ with config.downloaded_public_keys_file.open() as f:
216
+ return [JsonWebKey.import_key(key) for key in json.load(f)["keys"]]
217
+
218
+
219
+ def download_and_store_public_keys(context: Context) -> JWKS | None:
220
+ config = context.get("config")
221
+ if not config.token_validation_keys_download_url:
222
+ return None
223
+ log.info("Downloading public keys from %s", config.token_validation_keys_download_url)
224
+ try:
225
+ response = requests.get(config.token_validation_keys_download_url)
226
+ except RequestException as e:
227
+ log.exception(
228
+ f"Failed to download public keys from {config.token_validation_keys_download_url}. Exception: {e}"
229
+ )
230
+ return None
231
+ if not response.ok or "keys" not in response.json():
232
+ log.error(
233
+ f"Failed to download public keys from {config.token_validation_keys_download_url}. Response: {response.text}"
234
+ )
235
+ return None
236
+
237
+ jwks: JWKS = response.json()
238
+
239
+ if not os.path.exists(config.downloaded_public_keys_file):
240
+ log.warning(f"Warning: {config.downloaded_public_keys_file=} does not exist. Creating it now.")
241
+ os.makedirs(os.path.dirname(config.downloaded_public_keys_file), exist_ok=True)
242
+ with open(config.downloaded_public_keys_file, "x") as f:
243
+ json.dump({}, f)
244
+
245
+ with open(config.downloaded_public_keys_file, "w") as f:
246
+ json.dump(jwks, f, indent=4)
247
+ log.info(f"Successfully downloaded public keys ({jwks}) from {config.downloaded_public_keys_file=}")
248
+
249
+ return jwks
250
+
251
+
168
252
  class BearerTokenValidator(rfc6750.BearerTokenValidator):
169
- def __init__(self, context):
253
+ def __init__(self, context: Context):
170
254
  super().__init__()
171
255
  self._context = context
172
- self._public_key = load_key(context, KeyType.public)
256
+ self._default_public_key: RSAKey = load_key(context, KeyType.public)
257
+ self._all_public_keys: list[RSAKey] = load_all_public_keys(context)
258
+
259
+ def decode_token(self, token_string: str) -> JWTClaims:
260
+ if not token_string:
261
+ raise InvalidToken("Token string is required")
262
+
263
+ try:
264
+ token_header = decode_unverified_header(token_string)
265
+ if kid := token_header.get("key"):
266
+ for key in self._all_public_keys:
267
+ if key.kid and str(key.kid) == str(kid):
268
+ return jwt.decode(token_string, key)
269
+
270
+ token_kty = decode_kty_from_alg(token_header["alg"])
271
+ for key in self._all_public_keys:
272
+ is_not_encryption_key = key.tokens.get("use") != "enc"
273
+ key_algorithm = key.tokens.get("alg")
274
+ is_same_algorithm = key_algorithm and token_header["alg"] == key_algorithm
275
+ is_same_algorithm_type = key.kty and key.kty == token_kty
276
+ if is_not_encryption_key and (is_same_algorithm or is_same_algorithm_type):
277
+ try:
278
+ return jwt.decode(token_string, key)
279
+ except BadSignatureError:
280
+ continue
281
+ except (JoseError, DecodeError, InvalidTokenError) as e:
282
+ raise InvalidToken(error=str(e))
283
+ raise InvalidToken(f"No public key found for token {token_header=}")
173
284
 
174
285
  def authenticate_token(self, token_string: str) -> Token:
175
286
  return Token(token_string, self)
@@ -245,12 +356,34 @@ class Client(rfc6749.ClientMixin):
245
356
  return True
246
357
 
247
358
 
359
+ def decode_unverified_header(token: str) -> dict[str, Any]:
360
+ try:
361
+ if isinstance(token, bytes):
362
+ token = token.decode("utf-8")
363
+
364
+ header_b64 = token.split(".")[0]
365
+
366
+ # Add padding if missing
367
+ header_b64 += "=" * (-len(header_b64) % 4)
368
+ header_bytes = base64.urlsafe_b64decode(header_b64)
369
+
370
+ return json.loads(header_bytes)
371
+ except (UnicodeDecodeError, DecodeError, json.JSONDecodeError, ValueError, IndexError) as e:
372
+ raise InvalidToken(token=token) from e
373
+
374
+
375
+ def decode_kty_from_alg(alg: str) -> Literal["RSA", "EC", None]:
376
+ """Get Key Type from Token Algorithm."""
377
+ if alg.startswith("RS"):
378
+ return "RSA"
379
+ if alg.startswith("ES"):
380
+ return "EC"
381
+ return None
382
+
383
+
248
384
  class Token(rfc6749.TokenMixin):
249
385
  def __init__(self, token_string, validator: BearerTokenValidator):
250
- try:
251
- self._token = jwt.decode(token_string, validator._public_key)
252
- except JoseError as e:
253
- raise InvalidToken(error=str(e))
386
+ self._token = validator.decode_token(token_string)
254
387
 
255
388
  self.expires_in = self._token["exp"] - self._token["iat"]
256
389
  self.client_id = self.get_aud()
@@ -460,9 +593,18 @@ def create_key_pair():
460
593
  return rsa.generate_private_key(public_exponent=65537, key_size=2048, backend=default_backend())
461
594
 
462
595
 
463
- def load_key(context: Context, key_type: KeyType, *, required: bool = True):
596
+ def load_key_from_file(config: Config, key_type: KeyType) -> dict | None:
597
+ keypath = config.config_path / "keys" / f"{key_type.value}.json"
598
+ if keypath.exists():
599
+ with keypath.open() as f:
600
+ return json.load(f)
601
+ return None
602
+
603
+
604
+ def load_key(context: Context, key_type: KeyType, *, required: bool = True) -> RSAKey | None:
464
605
  key = None
465
606
  config = context.get("config")
607
+ default_key = load_key_from_file(config, key_type)
466
608
 
467
609
  # Public key can be set via configuration.
468
610
  if key_type == KeyType.public:
@@ -470,22 +612,23 @@ def load_key(context: Context, key_type: KeyType, *, required: bool = True):
470
612
 
471
613
  # Load key from a file.
472
614
  if key is None:
473
- keypath = config.config_path / "keys" / f"{key_type.value}.json"
474
- if keypath.exists():
475
- with keypath.open() as f:
476
- key = json.load(f)
615
+ key = default_key
616
+
617
+ if isinstance(key, dict) and "keys" in key:
618
+ # Left for backwards compatibility in case private/public file has multiple keys.
619
+ keys = [k for k in key["keys"] if k["alg"] == "RS512"]
620
+ if keys:
621
+ key = keys[0]
622
+ elif key != default_key:
623
+ key = default_key
624
+ else:
625
+ key = None
477
626
 
478
627
  if key is None:
479
628
  if required:
480
629
  raise NoTokenValidationKey(key_type=key_type.value)
481
630
  else:
482
- return
483
-
484
- if isinstance(key, dict) and "keys" in key:
485
- # XXX: Maybe I should load all keys and then pick right one by algorithm
486
- # used in token?
487
- keys = [k for k in key["keys"] if k["alg"] == "RS512"]
488
- key = keys[0]
631
+ return None
489
632
 
490
633
  return JsonWebKey.import_key(key)
491
634
 
@@ -549,6 +692,18 @@ def check_scope(context: Context, scope: Union[Scopes, str]):
549
692
  token.check_scope([f"{config.scope_prefix}{scope}", f"{config.scope_prefix_udts}:{scope}"])
550
693
 
551
694
 
695
+ def has_scope(context: Context, scope: Scopes | str, raise_error: bool = True) -> bool:
696
+ valid_scope = False
697
+ try:
698
+ check_scope(context, scope)
699
+ valid_scope = True
700
+ except InsufficientScopeError as error:
701
+ if raise_error:
702
+ raise error
703
+
704
+ return valid_scope
705
+
706
+
552
707
  def get_scope_name(
553
708
  context: Context,
554
709
  node: Union[Namespace, Model, Property],
@@ -811,7 +966,7 @@ def delete_client_file(path: pathlib.Path, client_id: str):
811
966
  Remove only empty folders
812
967
  """
813
968
  else:
814
- raise (InvalidClientError(description="Invalid client id or secret"))
969
+ raise InvalidClientError(description="Invalid client id or secret")
815
970
 
816
971
 
817
972
  def update_client_file(
@@ -861,7 +1016,7 @@ def update_client_file(
861
1016
  yml.dump(keymap, keymap_path)
862
1017
  return new_data
863
1018
  else:
864
- raise (InvalidClientError(description="Invalid client id or secret"))
1019
+ raise InvalidClientError(description="Invalid client id or secret")
865
1020
 
866
1021
 
867
1022
  def get_client_id_from_name(path: pathlib.Path, client_name: str):
@@ -940,13 +1095,13 @@ def _client_file_cache_key(path: pathlib.Path, client: str, *args, is_name: bool
940
1095
  if is_name:
941
1096
  client_id = get_client_id_from_name(path, client)
942
1097
  if client_id is None:
943
- raise (InvalidClientError(description="Invalid client name"))
1098
+ raise InvalidClientError(description="Invalid client name")
944
1099
 
945
1100
  client = client_id
946
1101
 
947
1102
  client_file = get_client_file_path(path, client)
948
1103
  if not client_file.exists():
949
- raise (InvalidClientError(description="Invalid client id or secret"))
1104
+ raise InvalidClientError(description="Invalid client id or secret")
950
1105
 
951
1106
  time_ = os.path.getmtime(client_file)
952
1107
  key += tuple([time_])
@@ -977,7 +1132,7 @@ def query_client(path: pathlib.Path, client: str, is_name: bool = False) -> Clie
977
1132
  if is_name:
978
1133
  client_id = get_client_id_from_name(path, client)
979
1134
  if client_id is None:
980
- raise (InvalidClientError(description="Invalid client name"))
1135
+ raise InvalidClientError(description="Invalid client name")
981
1136
 
982
1137
  client = client_id
983
1138
  client_file = get_client_file_path(path, client)
@@ -988,7 +1143,7 @@ def query_client(path: pathlib.Path, client: str, is_name: bool = False) -> Clie
988
1143
  try:
989
1144
  data = yaml.load(client_file)
990
1145
  except FileNotFoundError:
991
- raise (InvalidClientError(description="Invalid client id or secret"))
1146
+ raise InvalidClientError(description="Client file not found. Invalid client id or secret")
992
1147
  if not isinstance(data, dict):
993
1148
  raise InvalidClientFileFormat(client_file=client_file.name, client_file_type=type(data))
994
1149
  if not isinstance(data["scopes"], list):
@@ -64,7 +64,7 @@ def admin(
64
64
 
65
65
  load_config(context, ensure_config_dir=ensure_config_dir)
66
66
 
67
- if scripts is None:
67
+ if not scripts:
68
68
  echo("At least one script needs to be specified", err=True)
69
69
  sys.exit(1)
70
70
 
@@ -12,13 +12,18 @@ from typer import Typer
12
12
  from typer import echo
13
13
 
14
14
  from spinta import commands
15
- from spinta.auth import KeyFileExists, get_clients_path, ensure_client_folders_exist
15
+ from spinta.auth import (
16
+ KeyFileExists,
17
+ get_clients_path,
18
+ ensure_client_folders_exist,
19
+ download_and_store_public_keys,
20
+ )
16
21
  from spinta.auth import KeyType
17
22
  from spinta.auth import create_client_file
18
23
  from spinta.auth import gen_auth_server_keys
19
24
  from spinta.auth import load_key
20
25
  from spinta.cli.helpers.auth import require_auth
21
- from spinta.cli.helpers.errors import cli_error
26
+ from spinta.cli.helpers.message import cli_error
22
27
  from spinta.cli.helpers.store import load_config
23
28
  from spinta.client import get_access_token
24
29
  from spinta.client import get_client_credentials
@@ -26,6 +31,10 @@ from spinta.components import Context
26
31
  from spinta.core.context import configure_context
27
32
 
28
33
 
34
+ key = Typer()
35
+
36
+
37
+ @key.command("generate", short_help="Generate client token validation keys.")
29
38
  def genkeys(
30
39
  ctx: TyperContext,
31
40
  path: pathlib.Path = Option(None, "--path", "-p", help=("directory where client YAML files are stored")),
@@ -52,6 +61,25 @@ def genkeys(
52
61
  click.echo(f"Public key saved to {pub}.")
53
62
 
54
63
 
64
+ @key.command("download", short_help="Download client token validation keys.")
65
+ def download_keys(ctx: TyperContext):
66
+ context: Context = ctx.obj
67
+ config = context.get("config")
68
+ commands.load(context, config)
69
+ if not config.token_validation_keys_download_url:
70
+ echo("Error, config.token_validation_keys_download_url is not set.")
71
+ return
72
+ if not config.downloaded_public_keys_file:
73
+ echo("Error, config.downloaded_public_keys_file is not set.")
74
+ return
75
+
76
+ keys = download_and_store_public_keys(context)
77
+ if keys:
78
+ echo(f"Successfully downloaded and stored public keys: {keys}.")
79
+ else:
80
+ echo("Failed to download public keys. Check the logs.")
81
+
82
+
55
83
  token = Typer()
56
84
 
57
85
 
@@ -15,7 +15,8 @@ from spinta.backends import Backend
15
15
  from spinta.backends.helpers import validate_and_return_transaction
16
16
  from spinta.cli.helpers.auth import require_auth
17
17
  from spinta.cli.helpers.data import process_stream, count_rows
18
- from spinta.cli.helpers.errors import cli_error, ErrorCounter
18
+ from spinta.cli.helpers.errors import ErrorCounter
19
+ from spinta.cli.helpers.message import cli_error
19
20
  from spinta.cli.helpers.export.components import CounterManager
20
21
  from spinta.cli.helpers.export.helpers import (
21
22
  validate_and_return_shallow_backend,
@@ -129,6 +130,9 @@ def export_(
129
130
  commands.validate_export_output(context, fmt or backend, output)
130
131
  access = get_enum_by_name(Access, access)
131
132
 
133
+ max_retries = config.sync_retry_count
134
+ delay_range = config.sync_retry_delay_range
135
+
132
136
  with context:
133
137
  require_auth(context)
134
138
  error_counter = ErrorCounter(max_count=max_error_count)
@@ -169,6 +173,8 @@ def export_(
169
173
  no_progress_bar=no_progress_bar,
170
174
  reset_cid=ignore_sync_cid,
171
175
  timeout=(connect_timeout, read_timeout),
176
+ max_retries=max_retries,
177
+ delay_range=delay_range,
172
178
  )
173
179
  else:
174
180
  dependant_models = extract_dependant_nodes(context, models, True)
@@ -1,7 +1,3 @@
1
- from typer import Exit
2
- from typer import echo
3
-
4
-
5
1
  class ErrorCounter:
6
2
  count: int
7
3
  max_error_count: int
@@ -21,8 +17,3 @@ class ErrorCounter:
21
17
 
22
18
  def has_reached_max(self) -> bool:
23
19
  return self.count >= self.max_error_count
24
-
25
-
26
- def cli_error(message: str):
27
- echo(message, err=True)
28
- raise Exit(code=1)
@@ -7,7 +7,7 @@ import aiofiles
7
7
 
8
8
  from spinta import commands
9
9
  from spinta.backends.postgresql.components import PostgreSQL
10
- from spinta.cli.helpers.errors import cli_error
10
+ from spinta.cli.helpers.message import cli_error
11
11
  from spinta.cli.helpers.export.backends.postgresql.components import PostgresqlExportMetadata
12
12
  from spinta.cli.helpers.export.backends.postgresql.helpers import (
13
13
  split_data,
@@ -2,7 +2,7 @@ from typing import Optional, Union
2
2
 
3
3
  from spinta import commands
4
4
  from spinta.backends import Backend
5
- from spinta.cli.helpers.errors import cli_error
5
+ from spinta.cli.helpers.message import cli_error
6
6
  from spinta.components import Context, Model, DataSubItem, Property
7
7
  from spinta.core.enums import Access
8
8
  from spinta.formats.components import Format
@@ -6,7 +6,7 @@ from typer import echo
6
6
  from spinta import commands
7
7
  from spinta.backends import Backend
8
8
  from spinta.cli.helpers.data import read_model_data
9
- from spinta.cli.helpers.errors import cli_error
9
+ from spinta.cli.helpers.message import cli_error
10
10
  from spinta.cli.helpers.export.components import CounterManager
11
11
  from spinta.commands import build_data_patch_for_export
12
12
  from spinta.components import Context, Model, pagination_enabled, DataItem
@@ -0,0 +1,15 @@
1
+ import tqdm
2
+ from click import echo
3
+ from click.exceptions import Exit
4
+
5
+
6
+ def cli_error(message: str):
7
+ echo(message, err=True)
8
+ raise Exit(code=1)
9
+
10
+
11
+ def cli_message(message: str, progress_bar: tqdm.tqdm = None):
12
+ if progress_bar is not None:
13
+ progress_bar.write(message)
14
+ else:
15
+ echo(message)