dbhose-airflow 0.0.2.0__py3-none-any.whl → 0.0.2.2__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.
Files changed (41) hide show
  1. dbhose_airflow/LOGO +9 -0
  2. dbhose_airflow/__init__.py +28 -4
  3. dbhose_airflow/chunk_query.py +14 -0
  4. dbhose_airflow/ddl/clickhouse.sql +81 -0
  5. dbhose_airflow/ddl/greenplum.sql +229 -0
  6. dbhose_airflow/ddl/postgres.sql +209 -0
  7. dbhose_airflow/dq/clickhouse/empty.sql +1 -0
  8. dbhose_airflow/dq/clickhouse/future.sql +34 -0
  9. dbhose_airflow/dq/clickhouse/infinity.sql +34 -0
  10. dbhose_airflow/dq/clickhouse/nan.sql +34 -0
  11. dbhose_airflow/dq/clickhouse/sum.sql +72 -0
  12. dbhose_airflow/dq/clickhouse/total.sql +1 -0
  13. dbhose_airflow/dq/clickhouse/uniq.sql +1 -0
  14. dbhose_airflow/dq/greenplum/empty.sql +1 -0
  15. dbhose_airflow/dq/greenplum/future.sql +55 -0
  16. dbhose_airflow/dq/greenplum/infinity.sql +60 -0
  17. dbhose_airflow/dq/greenplum/nan.sql +58 -0
  18. dbhose_airflow/dq/greenplum/sum.sql +63 -0
  19. dbhose_airflow/dq/greenplum/total.sql +1 -0
  20. dbhose_airflow/dq/greenplum/uniq.sql +2 -0
  21. dbhose_airflow/dq/postgres/empty.sql +1 -0
  22. dbhose_airflow/dq/postgres/future.sql +55 -0
  23. dbhose_airflow/dq/postgres/infinity.sql +60 -0
  24. dbhose_airflow/dq/postgres/nan.sql +58 -0
  25. dbhose_airflow/dq/postgres/sum.sql +63 -0
  26. dbhose_airflow/dq/postgres/total.sql +1 -0
  27. dbhose_airflow/dq/postgres/uniq.sql +2 -0
  28. dbhose_airflow/move/clickhouse/delete.sql +81 -0
  29. dbhose_airflow/move/clickhouse/replace.sql +24 -0
  30. dbhose_airflow/move/greenplum/delete.sql +10 -0
  31. dbhose_airflow/move/greenplum/replace.sql +60 -0
  32. dbhose_airflow/move/postgres/delete.sql +10 -0
  33. dbhose_airflow/move/postgres/replace.sql +60 -0
  34. dbhose_airflow/move_method.py +1 -0
  35. {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/METADATA +3 -3
  36. dbhose_airflow-0.0.2.2.dist-info/RECORD +43 -0
  37. {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/licenses/CHANGELOG.md +14 -0
  38. dbhose_airflow-0.0.2.0.dist-info/RECORD +0 -11
  39. {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/WHEEL +0 -0
  40. {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/licenses/README.md +0 -0
  41. {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,81 @@
1
+ with
2
+ splitByChar(',', replaceAll('{filter_by}', ' ', '')) as columns,
3
+ length(columns) as columns_count,
4
+ (
5
+ select groupArray(tuple({filter_by}))
6
+ from (
7
+ select distinct {filter_by}
8
+ from {table_temp}
9
+ )
10
+ ) as values_tuples
11
+ select
12
+ true as is_avaliable,
13
+ 'ALTER TABLE {table_dest} DELETE WHERE ' ||
14
+ if(columns_count > 1, '(' || arrayStringConcat(columns, ', ') || ')', arrayStringConcat(columns, ', ')) ||
15
+ ' IN (' ||
16
+ arrayStringConcat(
17
+ arrayDistinct(
18
+ arrayMap(
19
+ tuple ->
20
+ if(columns_count = 1,
21
+ (case
22
+ when isNull(tuple.1) then 'NULL'
23
+ when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
24
+ else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
25
+ end),
26
+ if(columns_count = 2,
27
+ '(' ||
28
+ (case
29
+ when isNull(tuple.1) then 'NULL'
30
+ when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
31
+ else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
32
+ end) || ', ' ||
33
+ (case
34
+ when isNull(tuple.2) then 'NULL'
35
+ when toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.2)
36
+ else '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
37
+ end) || ')',
38
+ if(columns_count = 3,
39
+ '(' ||
40
+ (case
41
+ when isNull(tuple.1) then 'NULL'
42
+ when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
43
+ else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
44
+ end) || ', ' ||
45
+ (case
46
+ when isNull(tuple.2) then 'NULL'
47
+ when toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.2)
48
+ else '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
49
+ end) || ', ' ||
50
+ (case
51
+ WHEN isNull(tuple.3) THEN 'NULL'
52
+ WHEN toTypeName(tuple.3) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.3)
53
+ ELSE '\'' || replaceAll(toString(tuple.3), '\'', '\\\'') || '\''
54
+ END) || ')',
55
+ '(' ||
56
+ (CASE
57
+ WHEN isNull(tuple.1) THEN 'NULL'
58
+ WHEN toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.1)
59
+ ELSE '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
60
+ END) || ', ' ||
61
+ (CASE
62
+ WHEN isNull(tuple.2) THEN 'NULL'
63
+ WHEN toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.2)
64
+ ELSE '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
65
+ END) || ', ' ||
66
+ (case
67
+ when isNull(tuple.3) then 'NULL'
68
+ when toTypeName(tuple.3) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.3)
69
+ else '\'' || replaceAll(toString(tuple.3), '\'', '\\\'') || '\''
70
+ end) || ', ' ||
71
+ (case
72
+ when isNull(tuple.4) then 'NULL'
73
+ when toTypeName(tuple.4) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.4)
74
+ else '\'' || replaceAll(toString(tuple.4), '\'', '\\\'') || '\''
75
+ end) || ')'
76
+ ))),
77
+ values_tuples
78
+ )
79
+ ),
80
+ ', '
81
+ ) || ');\nINSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
@@ -0,0 +1,24 @@
1
+ with
2
+ '{table_temp}' as table_temp
3
+ , '{table_dest}' as table_dest
4
+ , partitions as (
5
+ select partition
6
+ from system.parts
7
+ where database = splitByChar('.', table_temp)[1]
8
+ and table = splitByChar('.', table_temp)[2]
9
+ and partition <> 'tuple()'
10
+ and active
11
+ order by partition
12
+ )
13
+ select
14
+ toBool(count() > 0) as is_avaliable
15
+ , if(
16
+ is_avaliable
17
+ , 'alter table ' || table_dest || ' ' ||
18
+ arrayStringConcat(
19
+ arrayMap(
20
+ p -> 'replace partition ' || p || ' from ' || table_temp
21
+ , groupArray(partition)
22
+ ), ', ')
23
+ , '') as move_query
24
+ from partitions
@@ -0,0 +1,10 @@
1
+ with filter_columns as (
2
+ select array_length(string_to_array('{filter_by}', ', '), 1) as col_count
3
+ )
4
+ select
5
+ true as is_avaliable,
6
+ 'DELETE FROM {table_dest} WHERE EXISTS(' || E'\nSELECT 1 FROM {table_temp}\nWHERE ' ||
7
+ (select string_agg('{table_dest}.' || trim(col) || ' = {table_temp}.' || trim(col), E'\nAND ')
8
+ from unnest(string_to_array('{filter_by}', ',')) as col) || E'\n);\n' ||
9
+ E'INSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
10
+ from filter_columns
@@ -0,0 +1,60 @@
1
+ with
2
+ matching_partitions as (
3
+ select
4
+ table_partition
5
+ , partition_constraint
6
+ from (
7
+ select
8
+ child.relname as table_partition
9
+ , pg_get_expr(child.relpartbound, child.oid) as partition_constraint
10
+ from pg_inherits
11
+ join pg_class child
12
+ on pg_inherits.inhrelid = child.oid
13
+ where pg_inherits.inhparent = '{table_dest}'::regclass
14
+ ) as dest_tbl
15
+ join (
16
+ select
17
+ pg_get_expr(child.relpartbound, child.oid) as partition_constraint
18
+ , child.oid as partition_oid
19
+ from pg_inherits
20
+ join pg_class child
21
+ on pg_inherits.inhrelid = child.oid
22
+ where pg_inherits.inhparent = '{table_temp}'::regclass
23
+ ) as temp_tbl
24
+ using(partition_constraint)
25
+ where exists (
26
+ select 1
27
+ from pg_class
28
+ where oid = temp_tbl.partition_oid
29
+ and reltuples > 0
30
+ )
31
+ ),
32
+ detach_commands as (
33
+ select string_agg(
34
+ 'ALTER TABLE {table_dest} DETACH PARTITION ' ||
35
+ table_partition || ';'
36
+ , E'\n'
37
+ ) as commands
38
+ from matching_partitions
39
+ ),
40
+ attach_commands as (
41
+ select string_agg(
42
+ 'ALTER TABLE {table_dest} ATTACH PARTITION {table_temp} ' ||
43
+ partition_constraint || ';'
44
+ , E'\n'
45
+ ) as commands
46
+ from matching_partitions
47
+ ),
48
+ drop_commands as (
49
+ select string_agg(
50
+ 'DROP TABLE ' || table_partition || ';'
51
+ , E'\n'
52
+ ) as commands
53
+ from matching_partitions
54
+ )
55
+ select
56
+ (select case when count(*) > 0 then true else false end
57
+ from matching_partitions) as is_avaliable
58
+ , (select commands from detach_commands) || E'\n' ||
59
+ (select commands from attach_commands) || E'\n' ||
60
+ (select commands from drop_commands) as move_query
@@ -0,0 +1,10 @@
1
+ with filter_columns as (
2
+ select array_length(string_to_array('{filter_by}', ', '), 1) as col_count
3
+ )
4
+ select
5
+ true as is_avaliable,
6
+ 'DELETE FROM {table_dest} WHERE EXISTS(' || E'\nSELECT 1 FROM {table_temp}\nWHERE ' ||
7
+ (select string_agg('{table_dest}.' || trim(col) || ' = {table_temp}.' || trim(col), E'\nAND ')
8
+ from unnest(string_to_array('{filter_by}', ',')) as col) || E'\n);\n' ||
9
+ E'INSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
10
+ from filter_columns
@@ -0,0 +1,60 @@
1
+ with
2
+ matching_partitions as (
3
+ select
4
+ table_partition
5
+ , partition_constraint
6
+ from (
7
+ select
8
+ child.relname as table_partition
9
+ , pg_get_expr(child.relpartbound, child.oid) as partition_constraint
10
+ from pg_inherits
11
+ join pg_class child
12
+ on pg_inherits.inhrelid = child.oid
13
+ where pg_inherits.inhparent = '{table_dest}'::regclass
14
+ ) as dest_tbl
15
+ join (
16
+ select
17
+ pg_get_expr(child.relpartbound, child.oid) as partition_constraint
18
+ , child.oid as partition_oid
19
+ from pg_inherits
20
+ join pg_class child
21
+ on pg_inherits.inhrelid = child.oid
22
+ where pg_inherits.inhparent = '{table_temp}'::regclass
23
+ ) as temp_tbl
24
+ using(partition_constraint)
25
+ where exists (
26
+ select 1
27
+ from pg_class
28
+ where oid = temp_tbl.partition_oid
29
+ and reltuples > 0
30
+ )
31
+ ),
32
+ detach_commands as (
33
+ select string_agg(
34
+ 'ALTER TABLE {table_dest} DETACH PARTITION ' ||
35
+ table_partition || ';'
36
+ , E'\n'
37
+ ) as commands
38
+ from matching_partitions
39
+ ),
40
+ attach_commands as (
41
+ select string_agg(
42
+ 'ALTER TABLE {table_dest} ATTACH PARTITION {table_temp} ' ||
43
+ partition_constraint || ';'
44
+ , E'\n'
45
+ ) as commands
46
+ from matching_partitions
47
+ ),
48
+ drop_commands as (
49
+ select string_agg(
50
+ 'DROP TABLE ' || table_partition || ';'
51
+ , E'\n'
52
+ ) as commands
53
+ from matching_partitions
54
+ )
55
+ select
56
+ (select case when count(*) > 0 then true else false end
57
+ from matching_partitions) as is_avaliable
58
+ , (select commands from detach_commands) || E'\n' ||
59
+ (select commands from attach_commands) || E'\n' ||
60
+ (select commands from drop_commands) as move_query
@@ -18,3 +18,4 @@ class MoveMethod(MoveType, Enum):
18
18
  custom = MoveType("custom", False, False, True)
19
19
  delete = MoveType("delete", True, True, False)
20
20
  replace = MoveType("replace", True, False, False)
21
+ rewrite = MoveType("rewrite", False, False, False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbhose_airflow
3
- Version: 0.0.2.0
3
+ Version: 0.0.2.2
4
4
  Summary: airflow class for exchanging data between DBMSs in native binary formats.
5
5
  Home-page: https://github.com/0xMihalich/dbhose_airflow
6
6
  Author: 0xMihalich
@@ -9,8 +9,8 @@ Description-Content-Type: text/markdown
9
9
  License-File: README.md
10
10
  License-File: CHANGELOG.md
11
11
  Requires-Dist: apache-airflow>=2.4.3
12
- Requires-Dist: native-dumper==0.3.3.0
13
- Requires-Dist: pgpack-dumper==0.3.3.0
12
+ Requires-Dist: native-dumper==0.3.3.1
13
+ Requires-Dist: pgpack-dumper==0.3.3.1
14
14
  Dynamic: author
15
15
  Dynamic: author-email
16
16
  Dynamic: description
@@ -0,0 +1,43 @@
1
+ dbhose_airflow/LOGO,sha256=zfn071DUmSt3OzqIN-knPqoYDqUNbxO2ALfdDaEII6A,783
2
+ dbhose_airflow/__init__.py,sha256=-vyzywoaV3-AjGNxBp97UnFZ0O7A-Qr40Cg0UMvF91c,15298
3
+ dbhose_airflow/airflow_connect.py,sha256=unsRItnK4Q_ieMiGKEsCw8Q_8wkaXdVOfaSWLNRyujM,906
4
+ dbhose_airflow/chunk_query.py,sha256=qtR6FM0SAEHzm08o6AzMZepyzJ3J8qd_itdFY0YJQRg,275
5
+ dbhose_airflow/dq_check.py,sha256=VoAw8qieA5LM1a7jaMPO3AQ7QXe_-ThZ8Gy868ozjHw,689
6
+ dbhose_airflow/dumper.py,sha256=9BEJ36yUJ9gH5PiVirLXymSKPOgABtp7Ee8U6MtEckY,1843
7
+ dbhose_airflow/move_method.py,sha256=EkrDy2VCbL78zfZZhwWH0gF4Ijno20FP1mRfjiABrkk,532
8
+ dbhose_airflow/ddl/clickhouse.sql,sha256=HKIB2GhWgAGlipC4vS5EUI-YcmFnG34u5nm4bTyDkkU,2617
9
+ dbhose_airflow/ddl/greenplum.sql,sha256=F_tCfaTz8YJ4bt2XPWa3Xln4Pe7ar8SKj-eznc3gWqs,9322
10
+ dbhose_airflow/ddl/postgres.sql,sha256=qylCEgaY0UqcBtRwan5jH8CD3MCKVtaLqThodSgteR0,8256
11
+ dbhose_airflow/dq/clickhouse/empty.sql,sha256=noHKmdqwhOGWqU30qW1lQDShOPPtu80FXDVZ-Qjxzmo,96
12
+ dbhose_airflow/dq/clickhouse/future.sql,sha256=_pXiaR2TsEk0ZNU911rRJe0HCOy9oSHG21kxDtZ2AxU,846
13
+ dbhose_airflow/dq/clickhouse/infinity.sql,sha256=nrb1Pgaik7ty3egXIU49gf0N-9TCq-OvjlFCZZKHVn0,836
14
+ dbhose_airflow/dq/clickhouse/nan.sql,sha256=oe1lUWGXqBrEfVH2JauCgAqD_NVJVAl62i8fMkpkDgE,855
15
+ dbhose_airflow/dq/clickhouse/sum.sql,sha256=wwtLpuaszzs-bpkiB2zmAHEvlH6cWCD7HDQcHy7pZAo,1559
16
+ dbhose_airflow/dq/clickhouse/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
17
+ dbhose_airflow/dq/clickhouse/uniq.sql,sha256=ZhyRgqBVEPxzfnpFAbAUB71Vt4OFoR22hyawF52NMDE,115
18
+ dbhose_airflow/dq/greenplum/empty.sql,sha256=bSlS58_VtWz8F3hJfbaXZArVV9QLrFCXUJmghWB52TQ,99
19
+ dbhose_airflow/dq/greenplum/future.sql,sha256=nN361zV_Cr8MxRk5n7_xN9-OGAgptY9BbuftacXV_uE,1590
20
+ dbhose_airflow/dq/greenplum/infinity.sql,sha256=pWx-vlloZ6fGPWPIx1MKgwia66p9P-I_HaOUOwavYIM,1699
21
+ dbhose_airflow/dq/greenplum/nan.sql,sha256=J96yT0LKlgCE0NfbDtpBIy4sIXw7DHBfy9Td2cs_JPo,1560
22
+ dbhose_airflow/dq/greenplum/sum.sql,sha256=1uq6V2hXn3HJhQrAM_id0FCZd-fbbfdXUNLTMJyDBso,1642
23
+ dbhose_airflow/dq/greenplum/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
24
+ dbhose_airflow/dq/greenplum/uniq.sql,sha256=myYh7TTc-c-ixnXwMibopz4bMr9qnkvU-29nt89cq8o,227
25
+ dbhose_airflow/dq/postgres/empty.sql,sha256=bSlS58_VtWz8F3hJfbaXZArVV9QLrFCXUJmghWB52TQ,99
26
+ dbhose_airflow/dq/postgres/future.sql,sha256=nN361zV_Cr8MxRk5n7_xN9-OGAgptY9BbuftacXV_uE,1590
27
+ dbhose_airflow/dq/postgres/infinity.sql,sha256=pWx-vlloZ6fGPWPIx1MKgwia66p9P-I_HaOUOwavYIM,1699
28
+ dbhose_airflow/dq/postgres/nan.sql,sha256=J96yT0LKlgCE0NfbDtpBIy4sIXw7DHBfy9Td2cs_JPo,1560
29
+ dbhose_airflow/dq/postgres/sum.sql,sha256=1uq6V2hXn3HJhQrAM_id0FCZd-fbbfdXUNLTMJyDBso,1642
30
+ dbhose_airflow/dq/postgres/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
31
+ dbhose_airflow/dq/postgres/uniq.sql,sha256=myYh7TTc-c-ixnXwMibopz4bMr9qnkvU-29nt89cq8o,227
32
+ dbhose_airflow/move/clickhouse/delete.sql,sha256=qyQ3YrDqBx4AhRMqEvcfIJAP4UauVEys_BshuMsCgUs,4316
33
+ dbhose_airflow/move/clickhouse/replace.sql,sha256=B44YbVK3wcCOPhAp8-_yX3yxnpTjpJF7xx_fCRRxIBE,666
34
+ dbhose_airflow/move/greenplum/delete.sql,sha256=OJJqu3CmbipMUl_Oyw48yzRSfzchzyu4YAcu9gAscFc,502
35
+ dbhose_airflow/move/greenplum/replace.sql,sha256=Pk9g-3SBC78bB_s8ECh_6tPDqTvL1wxKNjzrTakfrL0,1976
36
+ dbhose_airflow/move/postgres/delete.sql,sha256=OJJqu3CmbipMUl_Oyw48yzRSfzchzyu4YAcu9gAscFc,502
37
+ dbhose_airflow/move/postgres/replace.sql,sha256=Pk9g-3SBC78bB_s8ECh_6tPDqTvL1wxKNjzrTakfrL0,1976
38
+ dbhose_airflow-0.0.2.2.dist-info/licenses/CHANGELOG.md,sha256=rhtwm1Kf58B5L3409BoQogKd9kEQJek7dcvJqkklx3E,892
39
+ dbhose_airflow-0.0.2.2.dist-info/licenses/README.md,sha256=-TsSFVS-bdRMNM-xhtqiZUXyD6D_lb6Uiz8LKEPGlP0,8822
40
+ dbhose_airflow-0.0.2.2.dist-info/METADATA,sha256=yutBySs5OmjKjK91u3WQwu7bAuDVH5zBISDdXAHywVU,9434
41
+ dbhose_airflow-0.0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
42
+ dbhose_airflow-0.0.2.2.dist-info/top_level.txt,sha256=VlTXT0CLGGcVhbG9QPw2_a8H5UV03QMjvZ-NrPy6_jM,15
43
+ dbhose_airflow-0.0.2.2.dist-info/RECORD,,
@@ -1,5 +1,19 @@
1
1
  # Version History
2
2
 
3
+ ## 0.0.2.2
4
+
5
+ * Fix include_package_data
6
+
7
+ ## 0.0.2.1
8
+
9
+ * Add MoveMethod.rewrite for full rewrite table with new data
10
+ * Add query_part function
11
+ * Change filter_by initialization list to string
12
+ * Fix Clickhouse MoveMethod.delete
13
+ * Improve execute custom query & MoveMethod operations
14
+ * Update depends native-dumper==0.3.3.1
15
+ * Update depends pgpack-dumper==0.3.3.1
16
+
3
17
  ## 0.0.2.0
4
18
 
5
19
  * Update depends native-dumper==0.3.3.0
@@ -1,11 +0,0 @@
1
- dbhose_airflow/__init__.py,sha256=yMh49tSwt9x66RNpZYJYBLw_fXMzwUzbycyzUyp3W1g,14352
2
- dbhose_airflow/airflow_connect.py,sha256=unsRItnK4Q_ieMiGKEsCw8Q_8wkaXdVOfaSWLNRyujM,906
3
- dbhose_airflow/dq_check.py,sha256=VoAw8qieA5LM1a7jaMPO3AQ7QXe_-ThZ8Gy868ozjHw,689
4
- dbhose_airflow/dumper.py,sha256=9BEJ36yUJ9gH5PiVirLXymSKPOgABtp7Ee8U6MtEckY,1843
5
- dbhose_airflow/move_method.py,sha256=c4g7wuiwDKudrKSWP4ov1atJGIFknHCgPnY9FMf9Ymc,477
6
- dbhose_airflow-0.0.2.0.dist-info/licenses/CHANGELOG.md,sha256=7HHfS-x8gX3UXBOGEuPsgmlEOFWNRILjLlE3qrNaaqQ,532
7
- dbhose_airflow-0.0.2.0.dist-info/licenses/README.md,sha256=-TsSFVS-bdRMNM-xhtqiZUXyD6D_lb6Uiz8LKEPGlP0,8822
8
- dbhose_airflow-0.0.2.0.dist-info/METADATA,sha256=I0KTrMK0VYlrg9IMbjykKeo02GU-c1ZDxZKEjf4lLas,9434
9
- dbhose_airflow-0.0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
10
- dbhose_airflow-0.0.2.0.dist-info/top_level.txt,sha256=VlTXT0CLGGcVhbG9QPw2_a8H5UV03QMjvZ-NrPy6_jM,15
11
- dbhose_airflow-0.0.2.0.dist-info/RECORD,,