castor-extractor 0.21.7__py3-none-any.whl → 0.22.0__py3-none-any.whl

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.

Potentially problematic release.


This version of castor-extractor might be problematic. Click here for more details.

Files changed (131) hide show
  1. CHANGELOG.md +8 -0
  2. castor_extractor/commands/__init__.py +0 -3
  3. castor_extractor/commands/file_check.py +1 -2
  4. castor_extractor/file_checker/column.py +5 -5
  5. castor_extractor/file_checker/file.py +7 -7
  6. castor_extractor/file_checker/file_test.py +2 -2
  7. castor_extractor/file_checker/templates/generic_warehouse.py +4 -6
  8. castor_extractor/knowledge/confluence/client/client.py +2 -1
  9. castor_extractor/knowledge/confluence/extract.py +3 -2
  10. castor_extractor/knowledge/notion/client/client.py +3 -2
  11. castor_extractor/knowledge/notion/extract.py +3 -2
  12. castor_extractor/quality/soda/client/client.py +2 -1
  13. castor_extractor/quality/soda/client/pagination.py +1 -3
  14. castor_extractor/types.py +3 -3
  15. castor_extractor/uploader/env.py +2 -2
  16. castor_extractor/uploader/upload.py +4 -3
  17. castor_extractor/uploader/utils.py +1 -1
  18. castor_extractor/utils/client/abstract.py +2 -1
  19. castor_extractor/utils/client/api/auth.py +2 -2
  20. castor_extractor/utils/client/api/auth_test.py +2 -2
  21. castor_extractor/utils/client/api/client.py +8 -3
  22. castor_extractor/utils/client/api/pagination.py +3 -2
  23. castor_extractor/utils/client/api/safe_request.py +5 -5
  24. castor_extractor/utils/collection.py +7 -11
  25. castor_extractor/utils/dbt/client.py +3 -3
  26. castor_extractor/utils/dbt/client_test.py +2 -2
  27. castor_extractor/utils/deprecate.py +1 -2
  28. castor_extractor/utils/files.py +5 -5
  29. castor_extractor/utils/formatter.py +5 -4
  30. castor_extractor/utils/json_stream_write.py +2 -1
  31. castor_extractor/utils/object.py +2 -1
  32. castor_extractor/utils/pager/pager.py +2 -4
  33. castor_extractor/utils/pager/pager_on_id.py +2 -1
  34. castor_extractor/utils/pager/pager_on_id_test.py +5 -5
  35. castor_extractor/utils/pager/pager_test.py +3 -3
  36. castor_extractor/utils/retry.py +4 -3
  37. castor_extractor/utils/retry_test.py +2 -3
  38. castor_extractor/utils/safe.py +3 -3
  39. castor_extractor/utils/salesforce/client.py +2 -1
  40. castor_extractor/utils/salesforce/credentials.py +1 -3
  41. castor_extractor/utils/store.py +2 -1
  42. castor_extractor/utils/string.py +2 -2
  43. castor_extractor/utils/string_test.py +1 -3
  44. castor_extractor/utils/type.py +3 -2
  45. castor_extractor/utils/validation.py +4 -4
  46. castor_extractor/utils/write.py +2 -2
  47. castor_extractor/visualization/domo/client/client.py +8 -7
  48. castor_extractor/visualization/domo/client/credentials.py +2 -2
  49. castor_extractor/visualization/domo/client/endpoints.py +2 -2
  50. castor_extractor/visualization/domo/extract.py +3 -2
  51. castor_extractor/visualization/looker/api/client.py +17 -16
  52. castor_extractor/visualization/looker/api/utils.py +2 -2
  53. castor_extractor/visualization/looker/assets.py +1 -3
  54. castor_extractor/visualization/looker/extract.py +4 -3
  55. castor_extractor/visualization/looker/fields.py +3 -3
  56. castor_extractor/visualization/looker/multithreading.py +3 -3
  57. castor_extractor/visualization/metabase/assets.py +1 -3
  58. castor_extractor/visualization/metabase/client/api/client.py +8 -7
  59. castor_extractor/visualization/metabase/extract.py +3 -2
  60. castor_extractor/visualization/metabase/types.py +1 -3
  61. castor_extractor/visualization/mode/client/client.py +6 -6
  62. castor_extractor/visualization/mode/extract.py +2 -2
  63. castor_extractor/visualization/powerbi/assets.py +1 -3
  64. castor_extractor/visualization/powerbi/client/client.py +12 -11
  65. castor_extractor/visualization/powerbi/client/credentials.py +3 -3
  66. castor_extractor/visualization/powerbi/client/endpoints.py +2 -2
  67. castor_extractor/visualization/powerbi/extract.py +3 -2
  68. castor_extractor/visualization/qlik/assets.py +1 -3
  69. castor_extractor/visualization/qlik/client/constants.py +1 -3
  70. castor_extractor/visualization/qlik/client/engine/error.py +1 -3
  71. castor_extractor/visualization/qlik/client/master.py +3 -3
  72. castor_extractor/visualization/qlik/client/rest.py +12 -12
  73. castor_extractor/visualization/qlik/extract.py +4 -3
  74. castor_extractor/visualization/salesforce_reporting/client/rest.py +3 -2
  75. castor_extractor/visualization/salesforce_reporting/client/soql.py +1 -3
  76. castor_extractor/visualization/salesforce_reporting/extract.py +3 -2
  77. castor_extractor/visualization/sigma/client/client.py +11 -8
  78. castor_extractor/visualization/sigma/client/credentials.py +1 -3
  79. castor_extractor/visualization/sigma/client/pagination.py +1 -1
  80. castor_extractor/visualization/sigma/extract.py +3 -2
  81. castor_extractor/visualization/tableau/assets.py +1 -2
  82. castor_extractor/visualization/tableau/client/client.py +1 -2
  83. castor_extractor/visualization/tableau/client/client_utils.py +3 -2
  84. castor_extractor/visualization/tableau/client/credentials.py +3 -3
  85. castor_extractor/visualization/tableau/client/safe_mode.py +1 -2
  86. castor_extractor/visualization/tableau/extract.py +2 -2
  87. castor_extractor/visualization/tableau/gql_fields.py +3 -3
  88. castor_extractor/visualization/tableau/tsc_fields.py +1 -2
  89. castor_extractor/visualization/tableau/types.py +3 -3
  90. castor_extractor/visualization/tableau_revamp/client/client.py +6 -1
  91. castor_extractor/visualization/tableau_revamp/client/client_metadata_api.py +56 -9
  92. castor_extractor/visualization/tableau_revamp/client/client_rest_api.py +3 -3
  93. castor_extractor/visualization/tableau_revamp/client/client_tsc.py +3 -2
  94. castor_extractor/visualization/tableau_revamp/client/errors.py +5 -0
  95. castor_extractor/visualization/tableau_revamp/client/gql_queries.py +1 -3
  96. castor_extractor/visualization/tableau_revamp/client/rest_fields.py +1 -3
  97. castor_extractor/visualization/tableau_revamp/extract.py +2 -2
  98. castor_extractor/visualization/thoughtspot/client/client.py +3 -2
  99. castor_extractor/visualization/thoughtspot/client/utils.py +1 -1
  100. castor_extractor/visualization/thoughtspot/extract.py +3 -2
  101. castor_extractor/warehouse/abstract/asset.py +4 -5
  102. castor_extractor/warehouse/abstract/extract.py +4 -3
  103. castor_extractor/warehouse/abstract/query.py +4 -4
  104. castor_extractor/warehouse/bigquery/client.py +8 -8
  105. castor_extractor/warehouse/bigquery/extract.py +1 -1
  106. castor_extractor/warehouse/bigquery/query.py +2 -2
  107. castor_extractor/warehouse/bigquery/types.py +2 -4
  108. castor_extractor/warehouse/databricks/api_client.py +15 -14
  109. castor_extractor/warehouse/databricks/client.py +16 -16
  110. castor_extractor/warehouse/databricks/extract.py +4 -4
  111. castor_extractor/warehouse/databricks/format.py +12 -12
  112. castor_extractor/warehouse/databricks/lineage.py +11 -11
  113. castor_extractor/warehouse/databricks/pagination.py +2 -2
  114. castor_extractor/warehouse/databricks/types.py +4 -4
  115. castor_extractor/warehouse/databricks/utils.py +5 -4
  116. castor_extractor/warehouse/mysql/query.py +2 -2
  117. castor_extractor/warehouse/postgres/query.py +2 -2
  118. castor_extractor/warehouse/redshift/client.py +1 -1
  119. castor_extractor/warehouse/redshift/query.py +2 -2
  120. castor_extractor/warehouse/salesforce/client.py +8 -8
  121. castor_extractor/warehouse/salesforce/extract.py +3 -4
  122. castor_extractor/warehouse/salesforce/format.py +8 -7
  123. castor_extractor/warehouse/salesforce/format_test.py +2 -4
  124. castor_extractor/warehouse/snowflake/query.py +5 -5
  125. castor_extractor/warehouse/sqlserver/client.py +1 -1
  126. castor_extractor/warehouse/sqlserver/query.py +2 -2
  127. {castor_extractor-0.21.7.dist-info → castor_extractor-0.22.0.dist-info}/METADATA +11 -6
  128. {castor_extractor-0.21.7.dist-info → castor_extractor-0.22.0.dist-info}/RECORD +131 -131
  129. {castor_extractor-0.21.7.dist-info → castor_extractor-0.22.0.dist-info}/LICENCE +0 -0
  130. {castor_extractor-0.21.7.dist-info → castor_extractor-0.22.0.dist-info}/WHEEL +0 -0
  131. {castor_extractor-0.21.7.dist-info → castor_extractor-0.22.0.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
1
- from typing import List, Optional
1
+ from typing import Optional
2
2
 
3
3
  from ..abstract import (
4
4
  CATALOG_ASSETS,
@@ -14,7 +14,7 @@ DB_FILTERED_ASSETS = (
14
14
  )
15
15
 
16
16
 
17
- def _database_filter(db_list: Optional[List[str]], allow: bool) -> str:
17
+ def _database_filter(db_list: Optional[list[str]], allow: bool) -> str:
18
18
  if not db_list:
19
19
  return ""
20
20
  keyword = "IN" if allow else "NOT IN"
@@ -34,8 +34,8 @@ class SnowflakeQueryBuilder(AbstractQueryBuilder):
34
34
  def __init__(
35
35
  self,
36
36
  time_filter: Optional[TimeFilter] = None,
37
- db_allowed: Optional[List[str]] = None,
38
- db_blocked: Optional[List[str]] = None,
37
+ db_allowed: Optional[list[str]] = None,
38
+ db_blocked: Optional[list[str]] = None,
39
39
  fetch_transient: Optional[bool] = False,
40
40
  ):
41
41
  super().__init__(time_filter=time_filter)
@@ -52,7 +52,7 @@ class SnowflakeQueryBuilder(AbstractQueryBuilder):
52
52
 
53
53
  return statement
54
54
 
55
- def build(self, asset: WarehouseAsset) -> List[ExtractionQuery]:
55
+ def build(self, asset: WarehouseAsset) -> list[ExtractionQuery]:
56
56
  query = self.build_default(asset)
57
57
 
58
58
  if asset in DB_FILTERED_ASSETS:
@@ -1,4 +1,4 @@
1
- from typing import Iterator
1
+ from collections.abc import Iterator
2
2
 
3
3
  from sqlalchemy import text
4
4
 
@@ -1,4 +1,4 @@
1
- from typing import List, Optional
1
+ from typing import Optional
2
2
 
3
3
  from ..abstract import (
4
4
  AbstractQueryBuilder,
@@ -19,6 +19,6 @@ class MSSQLQueryBuilder(AbstractQueryBuilder):
19
19
  ):
20
20
  super().__init__(time_filter=time_filter)
21
21
 
22
- def build(self, asset: WarehouseAsset) -> List[ExtractionQuery]:
22
+ def build(self, asset: WarehouseAsset) -> list[ExtractionQuery]:
23
23
  query = self.build_default(asset)
24
24
  return [query]
@@ -1,16 +1,15 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: castor-extractor
3
- Version: 0.21.7
3
+ Version: 0.22.0
4
4
  Summary: Extract your metadata assets.
5
5
  Home-page: https://www.castordoc.com/
6
6
  License: EULA
7
7
  Author: Castor
8
8
  Author-email: support@castordoc.com
9
- Requires-Python: >=3.8,<3.13
9
+ Requires-Python: >=3.9,<3.13
10
10
  Classifier: License :: Other/Proprietary License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.8
14
13
  Classifier: Programming Language :: Python :: 3.9
15
14
  Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
@@ -39,10 +38,8 @@ Requires-Dist: google-resumable-media (>=2.0.3,<3.0.0)
39
38
  Requires-Dist: googleapis-common-protos (>=1.53.0,<2.0.0)
40
39
  Requires-Dist: looker-sdk (>=24.16.0,<24.17.0) ; extra == "looker" or extra == "all"
41
40
  Requires-Dist: msal (>=1.20.0,<2.0.0) ; extra == "powerbi" or extra == "all"
42
- Requires-Dist: numpy (<1.25) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "bigquery" or extra == "databricks" or extra == "all")
43
41
  Requires-Dist: numpy (<2) ; extra == "bigquery" or extra == "databricks" or extra == "all"
44
42
  Requires-Dist: numpy (>=1.26) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "bigquery" or extra == "databricks" or extra == "all")
45
- Requires-Dist: pandas (<2.1) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "databricks" or extra == "all")
46
43
  Requires-Dist: pandas (>=2.1) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "databricks" or extra == "all")
47
44
  Requires-Dist: psycopg2-binary (>=2.0.0,<3.0.0) ; extra == "metabase" or extra == "postgres" or extra == "redshift" or extra == "all"
48
45
  Requires-Dist: pycryptodome (>=3.0.0,<4.0.0) ; extra == "metabase" or extra == "all"
@@ -52,7 +49,7 @@ Requires-Dist: pymssql (>=2.2.11,<3.0.0) ; extra == "sqlserver" or extra == "all
52
49
  Requires-Dist: pymysql[rsa] (>=1.1.0,<2.0.0) ; extra == "mysql" or extra == "all"
53
50
  Requires-Dist: python-dateutil (>=2.0.0,<=3.0.0)
54
51
  Requires-Dist: requests (>=2.0.0,<3.0.0)
55
- Requires-Dist: setuptools (>=75.3.0,<75.4.0)
52
+ Requires-Dist: setuptools (>=75.6)
56
53
  Requires-Dist: snowflake-connector-python (>=3.4.0,<4.0.0) ; extra == "snowflake" or extra == "all"
57
54
  Requires-Dist: snowflake-sqlalchemy (!=1.2.5,<2.0.0) ; extra == "snowflake" or extra == "all"
58
55
  Requires-Dist: sqlalchemy (>=1.4,<1.5)
@@ -208,6 +205,14 @@ For any questions or bug report, contact us at [support@castordoc.com](mailto:su
208
205
 
209
206
  # Changelog
210
207
 
208
+ ## 0.22.0 - 2024-12-04
209
+
210
+ * Stop supporting python3.8
211
+
212
+ ## 0.21.9 - 2024-12-04
213
+
214
+ * Tableau: fix handling of timeout retry
215
+
211
216
  ## 0.21.8 - 2024-11-26
212
217
 
213
218
  * Redshift: improve deduplication of columns