datajunction 0.0.2.dev0__tar.gz → 0.0.2.dev1__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.
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/PKG-INFO +1 -1
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/__about__.py +1 -1
- datajunction-0.0.2.dev1/tests/test_deploy.py +162 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/.coveragerc +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/.gitignore +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/.isort.cfg +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/.pre-commit-config.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/LICENSE.txt +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/Makefile +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/README.md +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/__init__.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/_base.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/_internal.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/admin.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/builder.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/cli.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/client.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/compile.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/deployment.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/exceptions.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/models.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/nodes.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/init_system_nodes.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/date.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/dimension_link.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/is_active.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/materialization.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/node_type.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/node_without_description.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/nodes.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/number_of_materializations.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/number_of_nodes.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/user.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/tags.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/pdm.lock +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/pyproject.toml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/setup.cfg +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/draft_ms.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/draft_ms_with_qpd.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/engagement_quality_score.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/overall_streaming_lift.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/playbacks.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/qpd.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/qpd_normalization__35.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/target/total_missing_covariates.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/__init__.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/conftest.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/companies.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/companies_dim.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/contractor.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/contractors.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/us_state.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/us_states.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/avg_length_of_employment.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/avg_repair_price.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/avg_time_to_dispatch.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/date.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/date_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/dispatcher.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/dispatchers.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/hard_hat.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/hard_hat_state.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/hard_hats.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/local_hard_hats.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/municipality.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/municipality_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/municipality_municipality_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/municipality_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/national_level_agg.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/num_repair_orders.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/regional_level_agg.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/regional_repair_efficiency.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_order.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_order_details.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_order_transform.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_orders.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_orders_cube.cube.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/repair_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/total_repair_cost.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/total_repair_order_discounts.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/us_region.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/us_state.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/us_states.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project10/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/avg_length_of_employment.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/avg_repair_price.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/avg_time_to_dispatch.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/date.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/date_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/dispatcher.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/dispatchers.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/hard_hat.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/hard_hat_state.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/hard_hats.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/local_hard_hats.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/municipality.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/municipality_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/municipality_municipality_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/municipality_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/national_level_agg.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/num_repair_orders.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/regional_level_agg.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/regional_repair_efficiency.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_order.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_order_details.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_order_transform.transform.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_orders.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_orders_cube.cube.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_type.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/total_repair_cost.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/total_repair_order_discounts.metric.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_region.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_state.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_states.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/companies.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/companies_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/us_state.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project12/roads/us_states.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project2/.ipynb_checkpoints/some_node.source-checkpoint.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project2/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project2/some_node.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project3/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project3/some_node.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project4/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project4/very/very/deeply/nested/namespace/some_node.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project5/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project5/some_node.a.b.c.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project6/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project6/roads/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project6/roads/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project7/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project7/roads/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project7/roads/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project8/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/dj.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/companies.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/companies_dim.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/contractor.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/contractors.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/us_state.dimension.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project9/roads/us_states.source.yaml +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test__internal.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_admin.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_base.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_builder.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_cli.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_client.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_compile.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_generated_client.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_integration.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/test_models.py +0 -0
- {datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: datajunction
|
|
3
|
-
Version: 0.0.2.
|
|
3
|
+
Version: 0.0.2.dev1
|
|
4
4
|
Summary: DataJunction client library for connecting to a DataJunction server
|
|
5
5
|
Project-URL: repository, https://github.com/DataJunction/dj
|
|
6
6
|
Author-email: DataJunction Authors <yian.shang@gmail.com>
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import io
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
import time
|
|
4
|
+
from unittest import mock
|
|
5
|
+
import pytest
|
|
6
|
+
from unittest.mock import MagicMock
|
|
7
|
+
from datajunction.deployment import DeploymentService
|
|
8
|
+
from datajunction.exceptions import DJClientException
|
|
9
|
+
import yaml
|
|
10
|
+
from rich.console import Console
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_clean_dict_removes_nones_and_empty():
|
|
14
|
+
dirty = {
|
|
15
|
+
"a": None,
|
|
16
|
+
"b": [],
|
|
17
|
+
"c": {},
|
|
18
|
+
"d": {"x": None, "y": {"z": []}, "k": "keep"},
|
|
19
|
+
"e": [1, 2],
|
|
20
|
+
}
|
|
21
|
+
cleaned = DeploymentService.clean_dict(dirty)
|
|
22
|
+
assert cleaned == {"d": {"k": "keep"}, "e": [1, 2]}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_pull_writes_yaml_files(tmp_path):
|
|
26
|
+
# fake client returning a minimal deployment spec
|
|
27
|
+
client = MagicMock()
|
|
28
|
+
client._export_namespace_spec.return_value = {
|
|
29
|
+
"namespace": "foo.bar",
|
|
30
|
+
"nodes": [
|
|
31
|
+
{"name": "foo.bar.baz", "query": "SELECT 1"},
|
|
32
|
+
{"name": "foo.bar.qux", "query": "SELECT 2"},
|
|
33
|
+
],
|
|
34
|
+
}
|
|
35
|
+
svc = DeploymentService(client)
|
|
36
|
+
|
|
37
|
+
svc.pull("foo.bar", tmp_path)
|
|
38
|
+
|
|
39
|
+
# project-level yaml
|
|
40
|
+
project_yaml = yaml.safe_load((tmp_path / "dj.yaml").read_text())
|
|
41
|
+
assert project_yaml["namespace"] == "foo.bar"
|
|
42
|
+
|
|
43
|
+
# node files
|
|
44
|
+
baz_file = tmp_path / "foo" / "bar" / "baz.yaml"
|
|
45
|
+
assert baz_file.exists()
|
|
46
|
+
assert yaml.safe_load(baz_file.read_text())["query"] == "SELECT 1"
|
|
47
|
+
|
|
48
|
+
qux_file = tmp_path / "foo" / "bar" / "qux.yaml"
|
|
49
|
+
assert qux_file.exists()
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_pull_raises_if_target_not_empty(tmp_path):
|
|
53
|
+
(tmp_path / "something.txt").write_text("not empty")
|
|
54
|
+
client = MagicMock()
|
|
55
|
+
svc = DeploymentService(client)
|
|
56
|
+
with pytest.raises(DJClientException):
|
|
57
|
+
svc.pull("ns", tmp_path)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_build_table_has_expected_columns():
|
|
61
|
+
tbl = DeploymentService.build_table(
|
|
62
|
+
"abc-123",
|
|
63
|
+
{
|
|
64
|
+
"results": [
|
|
65
|
+
{
|
|
66
|
+
"deploy_type": "node",
|
|
67
|
+
"name": "some.random.node",
|
|
68
|
+
"operation": "create",
|
|
69
|
+
"status": "success",
|
|
70
|
+
"message": "ok",
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
)
|
|
75
|
+
cols = [c.header for c in tbl.columns]
|
|
76
|
+
assert cols == ["Type", "Name", "Operation", "Status", "Message"]
|
|
77
|
+
row_values = [col._cells[0] for col in tbl.columns]
|
|
78
|
+
assert row_values == ["node", "some.random.node", "create", "success", "ok"]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_reconstruct_deployment_spec(tmp_path):
|
|
82
|
+
# set up a fake exported project
|
|
83
|
+
(tmp_path / "dj.yaml").write_text(
|
|
84
|
+
yaml.safe_dump({"namespace": "foo", "tags": ["t1"]}),
|
|
85
|
+
)
|
|
86
|
+
node_dir = tmp_path / "foo"
|
|
87
|
+
node_dir.mkdir()
|
|
88
|
+
node_file = node_dir / "bar.yaml"
|
|
89
|
+
node_file.write_text(yaml.safe_dump({"name": "foo.bar", "query": "SELECT 1"}))
|
|
90
|
+
|
|
91
|
+
svc = DeploymentService(MagicMock())
|
|
92
|
+
spec = svc._reconstruct_deployment_spec(tmp_path)
|
|
93
|
+
assert spec["namespace"] == "foo"
|
|
94
|
+
assert spec["tags"] == ["t1"]
|
|
95
|
+
assert spec["nodes"][0]["name"] == "foo.bar"
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@pytest.mark.timeout(2)
|
|
99
|
+
def test_push_waits_until_success(monkeypatch, tmp_path):
|
|
100
|
+
# Create a fake project structure so _reconstruct_deployment_spec returns something
|
|
101
|
+
(tmp_path / "dj.yaml").write_text(yaml.safe_dump({"namespace": "foo"}))
|
|
102
|
+
(tmp_path / "foo.yaml").write_text(yaml.safe_dump({"name": "foo.bar"}))
|
|
103
|
+
|
|
104
|
+
# Fake client that returns "pending" once then "success"
|
|
105
|
+
client = MagicMock()
|
|
106
|
+
responses = [
|
|
107
|
+
{"uuid": "123", "status": "pending", "results": []},
|
|
108
|
+
{"uuid": "123", "status": "success", "results": []},
|
|
109
|
+
]
|
|
110
|
+
client.deploy.return_value = responses[0]
|
|
111
|
+
client.check_deployment.side_effect = responses[1:]
|
|
112
|
+
|
|
113
|
+
svc = DeploymentService(client, console=Console(file=io.StringIO()))
|
|
114
|
+
monkeypatch.setattr(time, "sleep", lambda _: None)
|
|
115
|
+
|
|
116
|
+
svc.push(tmp_path) # should not raise
|
|
117
|
+
|
|
118
|
+
client.deploy.assert_called_once()
|
|
119
|
+
client.check_deployment.assert_called()
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def test_push_times_out(monkeypatch, tmp_path):
|
|
123
|
+
# minimal project structure so _reconstruct_deployment_spec works
|
|
124
|
+
(tmp_path / "dj.yaml").write_text(yaml.safe_dump({"namespace": "foo"}))
|
|
125
|
+
(tmp_path / "foo.yaml").write_text(yaml.safe_dump({"name": "foo.bar"}))
|
|
126
|
+
|
|
127
|
+
# Fake client: deploy returns a uuid, check_deployment always 'pending'
|
|
128
|
+
client = MagicMock()
|
|
129
|
+
client.deploy.return_value = {"uuid": "123", "status": "pending", "results": []}
|
|
130
|
+
client.check_deployment.return_value = {
|
|
131
|
+
"uuid": "123",
|
|
132
|
+
"status": "pending",
|
|
133
|
+
"results": [],
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
svc = DeploymentService(client, console=Console(file=io.StringIO()))
|
|
137
|
+
|
|
138
|
+
# Patch time.sleep to skip waiting
|
|
139
|
+
monkeypatch.setattr(time, "sleep", lambda _: None)
|
|
140
|
+
|
|
141
|
+
# Simulate time moving past the timeout on the second call
|
|
142
|
+
start_time = 1_000_000
|
|
143
|
+
times = [start_time, start_time + 301] # second call is > 5 minutes later
|
|
144
|
+
monkeypatch.setattr(time, "time", lambda: times.pop(0))
|
|
145
|
+
|
|
146
|
+
with pytest.raises(DJClientException, match="Deployment timed out"):
|
|
147
|
+
svc.push(tmp_path)
|
|
148
|
+
|
|
149
|
+
client.deploy.assert_called_once()
|
|
150
|
+
client.check_deployment.assert_called()
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def test_read_project_yaml_returns_empty(tmp_path: Path):
|
|
154
|
+
"""
|
|
155
|
+
Verify that when dj.yaml is missing, _read_project_yaml returns an empty dict.
|
|
156
|
+
"""
|
|
157
|
+
# Create a directory without dj.yaml
|
|
158
|
+
project_dir = tmp_path
|
|
159
|
+
client = mock.MagicMock()
|
|
160
|
+
svc = DeploymentService(client, console=Console(file=io.StringIO()))
|
|
161
|
+
result = svc._read_project_yaml(project_dir)
|
|
162
|
+
assert result == {}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/date.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/is_active.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/node_type.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/nodes.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/datajunction/seed/nodes/user.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/companies.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/companies_dim.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/contractor.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/contractors.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/us_state.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/deploy0/roads/us_states.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project1/roads/date.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/contractors.source.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/date.source.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/date_dim.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/dispatchers.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/hard_hat.dimension.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/hard_hats.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/repair_type.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_region.source.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_state.dimension.yaml
RENAMED
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project11/us_states.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datajunction-0.0.2.dev0 → datajunction-0.0.2.dev1}/tests/examples/project2/some_node.source.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|