data-factory-testing-framework 1.1.3__tar.gz → 1.1.5__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 (79) hide show
  1. {data_factory_testing_framework-1.1.3/src/data_factory_testing_framework.egg-info → data_factory_testing_framework-1.1.5}/PKG-INFO +16 -4
  2. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/README.md +15 -3
  3. data_factory_testing_framework-1.1.5/VERSION +1 -0
  4. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/expression_runtime.py +21 -5
  5. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_pipeline_run_state.py +4 -0
  6. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5/src/data_factory_testing_framework.egg-info}/PKG-INFO +16 -4
  7. data_factory_testing_framework-1.1.3/VERSION +0 -1
  8. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/DataFactoryTestingFramework.sln +0 -0
  9. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/LICENSE +0 -0
  10. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/MANIFEST.in +0 -0
  11. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/pyproject.toml +0 -0
  12. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/setup.cfg +0 -0
  13. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/setup.py +0 -0
  14. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/__init__.py +0 -0
  15. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/__init__.py +0 -0
  16. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/_deserializer_base.py +0 -0
  17. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/_deserializer_data_factory.py +0 -0
  18. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/_deserializer_fabric.py +0 -0
  19. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/shared/__init__.py +0 -0
  20. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/shared/_activity_deserializer.py +0 -0
  21. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_deserializers/shared/_data_factory_element_replacer.py +0 -0
  22. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_enum_meta.py +0 -0
  23. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/data_factory_expression/__init__.py +0 -0
  24. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/data_factory_expression/data_factory_to_expression_transformer.py +0 -0
  25. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/data_factory_expression/exceptions.py +0 -0
  26. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/data_factory_expression/expression_transformer.py +0 -0
  27. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_expression_runtime/functions_repository.py +0 -0
  28. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_pythonnet/Evaluator.csproj +0 -0
  29. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_pythonnet/__init__.py +0 -0
  30. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_pythonnet/data_factory_testing_framework_expressions_evaluator.py +0 -0
  31. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_repositories/__init__.py +0 -0
  32. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_repositories/_factories/base_repository_factory.py +0 -0
  33. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_repositories/_factories/data_factory_repository_factory.py +0 -0
  34. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_repositories/_factories/fabric_repository_factory.py +0 -0
  35. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_repositories/data_factory_repository.py +0 -0
  36. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/_test_framework.py +0 -0
  37. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/__init__.py +0 -0
  38. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_activity_not_found_error.py +0 -0
  39. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_activity_output_field_not_found_error.py +0 -0
  40. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_control_activity_expression_evaluated_not_to_expected_type.py +0 -0
  41. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_data_factory_element_evaluation_error.py +0 -0
  42. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_function_call_invalid_arguments_count_error.py +0 -0
  43. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_parameter_not_found_error.py +0 -0
  44. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_pipeline_activities_circular_dependency_error.py +0 -0
  45. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_pipeline_not_found_error.py +0 -0
  46. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_state_iteration_item_not_set_error.py +0 -0
  47. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_unsupported_function_error.py +0 -0
  48. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_user_error.py +0 -0
  49. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_variable_being_evaluated_does_not_exist_error.py +0 -0
  50. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/exceptions/_variable_not_found_error.py +0 -0
  51. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/__init__.py +0 -0
  52. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/_data_factory_element.py +0 -0
  53. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/_data_factory_object_type.py +0 -0
  54. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/_pipeline.py +0 -0
  55. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/__init__.py +0 -0
  56. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_activity.py +0 -0
  57. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_activity_dependency.py +0 -0
  58. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_append_variable_activity.py +0 -0
  59. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_control_activity.py +0 -0
  60. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_execute_pipeline_activity.py +0 -0
  61. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_fail_activity.py +0 -0
  62. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_filter_activity.py +0 -0
  63. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_for_each_activity.py +0 -0
  64. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_if_condition_activity.py +0 -0
  65. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_set_variable_activity.py +0 -0
  66. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_switch_activity.py +0 -0
  67. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/models/activities/_until_activity.py +0 -0
  68. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/py.typed +0 -0
  69. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/__init__.py +0 -0
  70. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_activity_result.py +0 -0
  71. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_dependency_condition.py +0 -0
  72. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_pipeline_run_variable.py +0 -0
  73. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_run_parameter.py +0 -0
  74. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_run_parameter_type.py +0 -0
  75. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework/state/_run_state.py +0 -0
  76. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework.egg-info/SOURCES.txt +0 -0
  77. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework.egg-info/dependency_links.txt +0 -0
  78. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework.egg-info/requires.txt +0 -0
  79. {data_factory_testing_framework-1.1.3 → data_factory_testing_framework-1.1.5}/src/data_factory_testing_framework.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: data-factory-testing-framework
3
- Version: 1.1.3
3
+ Version: 1.1.5
4
4
  Summary: A stand-alone test framework that allows to write unit tests for Data Factory pipelines on Microsoft Fabric and Azure Data Factory.
5
5
  Author-email: Data Factory Testing Framework <dftf@microsoft.com>
6
6
  License: MIT License
@@ -48,7 +48,7 @@ A stand-alone test framework that allows to write unit tests for Data Factory pi
48
48
 
49
49
  > The framework is currently in _Public Preview_ and is not officially supported by Microsoft.
50
50
 
51
- ## Features :rocket:
51
+ ## Features :star:
52
52
 
53
53
  The framework evaluates pipeline and activity definitions which can be asserted. It does so by providing the following features:
54
54
 
@@ -94,6 +94,20 @@ Data Factory does not support unit testing, nor testing of pipelines locally. Ha
94
94
  * Easier to cover a lot of different scenarios and edge cases
95
95
  * Regression testing
96
96
 
97
+ ## Getting started :rocket:
98
+
99
+ Before you start writing tests, you need to set up the repository and install the framework:
100
+
101
+ 1. [Repository setup](docs/basic/repository_setup.md)
102
+ 2. [Installing and initializing the framework](docs/basic/installing_and_initializing_framework.md)
103
+
104
+ > If you are not that experienced with Python and prefer a step-by-step guide, use the more detailed [getting started](docs/basic/getting_started.md) guide.
105
+
106
+ The framework allows you to write two types of tests:
107
+
108
+ * [Activity testing](docs/basic/activity_testing.md) - for testing activities in isolation
109
+ * [Pipeline testing](docs/basic/pipeline_testing.md) - for testing the entire pipeline
110
+
97
111
  ## Concepts :books:
98
112
 
99
113
  The following pages go deeper into different topics and concepts of the framework to help in getting you started.
@@ -106,8 +120,6 @@ The following pages go deeper into different topics and concepts of the framewor
106
120
  4. [Activity testing](docs/basic/activity_testing.md)
107
121
  5. [Pipeline testing](docs/basic/pipeline_testing.md)
108
122
 
109
- > If you are a not that experienced with Python, you can follow the [Getting started](docs/basic/getting_started.md) guide to get started with the framework.
110
-
111
123
  ### Advanced :microscope:
112
124
 
113
125
  1. [Debugging your activities and pipelines](docs/advanced/debugging.md)
@@ -4,7 +4,7 @@ A stand-alone test framework that allows to write unit tests for Data Factory pi
4
4
 
5
5
  > The framework is currently in _Public Preview_ and is not officially supported by Microsoft.
6
6
 
7
- ## Features :rocket:
7
+ ## Features :star:
8
8
 
9
9
  The framework evaluates pipeline and activity definitions which can be asserted. It does so by providing the following features:
10
10
 
@@ -50,6 +50,20 @@ Data Factory does not support unit testing, nor testing of pipelines locally. Ha
50
50
  * Easier to cover a lot of different scenarios and edge cases
51
51
  * Regression testing
52
52
 
53
+ ## Getting started :rocket:
54
+
55
+ Before you start writing tests, you need to set up the repository and install the framework:
56
+
57
+ 1. [Repository setup](docs/basic/repository_setup.md)
58
+ 2. [Installing and initializing the framework](docs/basic/installing_and_initializing_framework.md)
59
+
60
+ > If you are not that experienced with Python and prefer a step-by-step guide, use the more detailed [getting started](docs/basic/getting_started.md) guide.
61
+
62
+ The framework allows you to write two types of tests:
63
+
64
+ * [Activity testing](docs/basic/activity_testing.md) - for testing activities in isolation
65
+ * [Pipeline testing](docs/basic/pipeline_testing.md) - for testing the entire pipeline
66
+
53
67
  ## Concepts :books:
54
68
 
55
69
  The following pages go deeper into different topics and concepts of the framework to help in getting you started.
@@ -62,8 +76,6 @@ The following pages go deeper into different topics and concepts of the framewor
62
76
  4. [Activity testing](docs/basic/activity_testing.md)
63
77
  5. [Pipeline testing](docs/basic/pipeline_testing.md)
64
78
 
65
- > If you are a not that experienced with Python, you can follow the [Getting started](docs/basic/getting_started.md) guide to get started with the framework.
66
-
67
79
  ### Advanced :microscope:
68
80
 
69
81
  1. [Debugging your activities and pipelines](docs/advanced/debugging.md)
@@ -0,0 +1 @@
1
+ 1.1.5
@@ -54,16 +54,32 @@ class ExpressionRuntime:
54
54
  expression = missing_parameter_match.group(2)
55
55
  property_name = missing_parameter_match.group(4)
56
56
 
57
- if expression.startswith("pipeline().parameters"):
57
+ if (
58
+ f"pipeline().parameters.{property_name}" in expression
59
+ and not state._contains_parameter_with_type_and_name(RunParameterType.Pipeline, property_name)
60
+ ):
58
61
  raise ParameterNotFoundError(RunParameterType.Pipeline, property_name) from e
59
- elif expression.startswith("pipeline().globalParameters"):
62
+ elif (
63
+ f"pipeline().globalParameters.{property_name}" in expression
64
+ and not state._contains_parameter_with_type_and_name(RunParameterType.Global, property_name)
65
+ ):
60
66
  raise ParameterNotFoundError(RunParameterType.Global, property_name) from e
61
- elif expression.startswith("pipeline().dataset"):
67
+ elif (
68
+ f"pipeline().dataset.{property_name}" in expression
69
+ and not state._contains_parameter_with_type_and_name(RunParameterType.Dataset, property_name)
70
+ ):
62
71
  raise ParameterNotFoundError(RunParameterType.Dataset, property_name) from e
63
- elif expression.startswith("pipeline().linkedService"):
72
+ elif (
73
+ f"pipeline().linkedService.{property_name}" in expression
74
+ and not state._contains_parameter_with_type_and_name(RunParameterType.LinkedService, property_name)
75
+ ):
64
76
  raise ParameterNotFoundError(RunParameterType.LinkedService, property_name) from e
65
- else:
77
+ elif not state._contains_parameter_with_type_and_name(RunParameterType.System, property_name):
66
78
  raise ParameterNotFoundError(RunParameterType.System, property_name) from e
79
+ else:
80
+ raise Exception(
81
+ f"Unknown error for expression: '{expression}' with property: '{property_name}'. Internal error: '{e}'"
82
+ ) from e
67
83
 
68
84
  if missing_variable_match:
69
85
  variable_name = missing_variable_match.group(2)
@@ -168,6 +168,10 @@ class PipelineRunState(RunState):
168
168
 
169
169
  return parameters[0].value
170
170
 
171
+ def _contains_parameter_with_type_and_name(self, parameter_type: RunParameterType, name: str) -> bool:
172
+ """Checks if the parameter exists in the state."""
173
+ return any(p.name == name and p.type == parameter_type for p in self.parameters)
174
+
171
175
  def is_activity_evaluated_in_scope(self, activity_name: str) -> bool:
172
176
  """Checks if an activity was evaluated in the current scope.
173
177
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: data-factory-testing-framework
3
- Version: 1.1.3
3
+ Version: 1.1.5
4
4
  Summary: A stand-alone test framework that allows to write unit tests for Data Factory pipelines on Microsoft Fabric and Azure Data Factory.
5
5
  Author-email: Data Factory Testing Framework <dftf@microsoft.com>
6
6
  License: MIT License
@@ -48,7 +48,7 @@ A stand-alone test framework that allows to write unit tests for Data Factory pi
48
48
 
49
49
  > The framework is currently in _Public Preview_ and is not officially supported by Microsoft.
50
50
 
51
- ## Features :rocket:
51
+ ## Features :star:
52
52
 
53
53
  The framework evaluates pipeline and activity definitions which can be asserted. It does so by providing the following features:
54
54
 
@@ -94,6 +94,20 @@ Data Factory does not support unit testing, nor testing of pipelines locally. Ha
94
94
  * Easier to cover a lot of different scenarios and edge cases
95
95
  * Regression testing
96
96
 
97
+ ## Getting started :rocket:
98
+
99
+ Before you start writing tests, you need to set up the repository and install the framework:
100
+
101
+ 1. [Repository setup](docs/basic/repository_setup.md)
102
+ 2. [Installing and initializing the framework](docs/basic/installing_and_initializing_framework.md)
103
+
104
+ > If you are not that experienced with Python and prefer a step-by-step guide, use the more detailed [getting started](docs/basic/getting_started.md) guide.
105
+
106
+ The framework allows you to write two types of tests:
107
+
108
+ * [Activity testing](docs/basic/activity_testing.md) - for testing activities in isolation
109
+ * [Pipeline testing](docs/basic/pipeline_testing.md) - for testing the entire pipeline
110
+
97
111
  ## Concepts :books:
98
112
 
99
113
  The following pages go deeper into different topics and concepts of the framework to help in getting you started.
@@ -106,8 +120,6 @@ The following pages go deeper into different topics and concepts of the framewor
106
120
  4. [Activity testing](docs/basic/activity_testing.md)
107
121
  5. [Pipeline testing](docs/basic/pipeline_testing.md)
108
122
 
109
- > If you are a not that experienced with Python, you can follow the [Getting started](docs/basic/getting_started.md) guide to get started with the framework.
110
-
111
123
  ### Advanced :microscope:
112
124
 
113
125
  1. [Debugging your activities and pipelines](docs/advanced/debugging.md)
@@ -1 +0,0 @@
1
- 1.1.3