vtlengine 1.0.3rc1__tar.gz → 1.5.0rc1__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.

Potentially problematic release.


This version of vtlengine might be problematic. Click here for more details.

Files changed (74) hide show
  1. vtlengine-1.5.0rc1/PKG-INFO +89 -0
  2. vtlengine-1.5.0rc1/README.md +54 -0
  3. vtlengine-1.5.0rc1/pyproject.toml +110 -0
  4. vtlengine-1.5.0rc1/src/vtlengine/API/_InternalApi.py +791 -0
  5. vtlengine-1.5.0rc1/src/vtlengine/API/__init__.py +612 -0
  6. vtlengine-1.5.0rc1/src/vtlengine/API/data/schema/external_routines_schema.json +34 -0
  7. vtlengine-1.5.0rc1/src/vtlengine/API/data/schema/json_schema_2.1.json +116 -0
  8. vtlengine-1.5.0rc1/src/vtlengine/API/data/schema/value_domain_schema.json +97 -0
  9. vtlengine-1.5.0rc1/src/vtlengine/AST/ASTComment.py +67 -0
  10. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTConstructor.py +77 -23
  11. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTConstructorModules/Expr.py +263 -139
  12. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTConstructorModules/ExprComponents.py +128 -63
  13. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTConstructorModules/Terminals.py +102 -51
  14. vtlengine-1.5.0rc1/src/vtlengine/AST/ASTConstructorModules/__init__.py +50 -0
  15. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTEncoders.py +5 -1
  16. vtlengine-1.5.0rc1/src/vtlengine/AST/ASTString.py +677 -0
  17. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTTemplate.py +33 -3
  18. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/DAG/__init__.py +78 -32
  19. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/DAG/_words.py +1 -0
  20. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/Grammar/Vtl.g4 +7 -7
  21. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/Grammar/lexer.py +10 -10
  22. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/Grammar/parser.py +2158 -2373
  23. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/Grammar/tokens.py +3 -2
  24. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/VtlVisitor.py +0 -1
  25. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/__init__.py +129 -16
  26. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/DataTypes/TimeHandling.py +69 -23
  27. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/DataTypes/__init__.py +180 -37
  28. {vtlengine-1.0.3rc1/src/vtlengine/files/parser → vtlengine-1.5.0rc1/src/vtlengine/DataTypes}/_time_checking.py +12 -7
  29. vtlengine-1.5.0rc1/src/vtlengine/Exceptions/__exception_file_generator.py +96 -0
  30. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Exceptions/__init__.py +43 -58
  31. vtlengine-1.5.0rc1/src/vtlengine/Exceptions/messages.py +1030 -0
  32. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Interpreter/__init__.py +410 -389
  33. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Model/__init__.py +72 -21
  34. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Aggregation.py +36 -15
  35. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Analytic.py +67 -29
  36. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Assignment.py +0 -1
  37. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Boolean.py +0 -23
  38. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/CastOperator.py +55 -46
  39. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Clause.py +41 -27
  40. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Comparison.py +26 -18
  41. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Conditional.py +127 -145
  42. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/General.py +33 -17
  43. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/HROperators.py +52 -71
  44. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Join.py +25 -21
  45. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Numeric.py +32 -26
  46. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/RoleSetter.py +6 -6
  47. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Set.py +12 -13
  48. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/String.py +9 -13
  49. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Time.py +211 -140
  50. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/Validation.py +49 -12
  51. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Operators/__init__.py +105 -96
  52. vtlengine-1.5.0rc1/src/vtlengine/Utils/__Virtual_Assets.py +34 -0
  53. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/Utils/__init__.py +55 -1
  54. vtlengine-1.5.0rc1/src/vtlengine/__extras_check.py +17 -0
  55. vtlengine-1.5.0rc1/src/vtlengine/__init__.py +27 -0
  56. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/files/output/__init__.py +2 -1
  57. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/files/output/_time_period_representation.py +2 -1
  58. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/files/parser/__init__.py +78 -57
  59. vtlengine-1.0.3rc1/PKG-INFO +0 -243
  60. vtlengine-1.0.3rc1/README.md +0 -213
  61. vtlengine-1.0.3rc1/pyproject.toml +0 -87
  62. vtlengine-1.0.3rc1/src/vtlengine/API/_InternalApi.py +0 -389
  63. vtlengine-1.0.3rc1/src/vtlengine/API/__init__.py +0 -309
  64. vtlengine-1.0.3rc1/src/vtlengine/DataTypes/NumericTypesHandling.py +0 -38
  65. vtlengine-1.0.3rc1/src/vtlengine/Exceptions/messages.py +0 -335
  66. vtlengine-1.0.3rc1/src/vtlengine/__init__.py +0 -3
  67. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/LICENSE.md +0 -0
  68. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTDataExchange.py +0 -0
  69. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/ASTVisitor.py +0 -0
  70. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/AST/Grammar/VtlTokens.g4 +0 -0
  71. {vtlengine-1.0.3rc1/src/vtlengine/AST/ASTConstructorModules → vtlengine-1.5.0rc1/src/vtlengine/AST/Grammar}/__init__.py +0 -0
  72. {vtlengine-1.0.3rc1/src/vtlengine/AST/Grammar → vtlengine-1.5.0rc1/src/vtlengine/files}/__init__.py +0 -0
  73. {vtlengine-1.0.3rc1 → vtlengine-1.5.0rc1}/src/vtlengine/files/parser/_rfc_dialect.py +0 -0
  74. /vtlengine-1.0.3rc1/src/vtlengine/files/__init__.py → /vtlengine-1.5.0rc1/src/vtlengine/py.typed +0 -0
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: vtlengine
3
+ Version: 1.5.0rc1
4
+ Summary: Run and Validate VTL Scripts
5
+ License-Expression: AGPL-3.0
6
+ License-File: LICENSE.md
7
+ Keywords: vtl,sdmx,vtlengine,Validation and Transformation Language
8
+ Author: MeaningfulData
9
+ Author-email: info@meaningfuldata.eu
10
+ Maintainer: Francisco Javier Hernandez del Caño
11
+ Maintainer-email: javier.hernandez@meaningfuldata.eu
12
+ Requires-Python: >=3.9
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Information Technology
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: Typing :: Typed
18
+ Provides-Extra: all
19
+ Provides-Extra: s3
20
+ Requires-Dist: antlr4-python3-runtime (>=4.9,<4.10)
21
+ Requires-Dist: duckdb (>=1.4,<1.5)
22
+ Requires-Dist: jsonschema (>=3.2.0,<5.0)
23
+ Requires-Dist: networkx (>=2.8,<3.0)
24
+ Requires-Dist: pandas (>=2.1.4,<3.0)
25
+ Requires-Dist: pysdmx[xml] (>=1.5.2,<2.0)
26
+ Requires-Dist: s3fs (>=2022.11.0) ; extra == "all"
27
+ Requires-Dist: s3fs (>=2022.11.0) ; extra == "s3"
28
+ Requires-Dist: sqlglot (>=22.2.0,<23.0)
29
+ Project-URL: Authors, https://github.com/Meaningful-Data/vtlengine/graphs/contributors
30
+ Project-URL: Documentation, https://docs.vtlengine.meaningfuldata.eu
31
+ Project-URL: IssueTracker, https://github.com/Meaningful-Data/vtlengine/issues
32
+ Project-URL: MeaningfulData, https://www.meaningfuldata.eu/
33
+ Project-URL: Repository, https://github.com/Meaningful-Data/vtlengine
34
+ Description-Content-Type: text/markdown
35
+
36
+ # VTL Engine
37
+
38
+ | | |
39
+ |--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
40
+ | Testing | [![Testing](https://github.com/Meaningful-Data/vtlengine/actions/workflows/testing.yml/badge.svg)](https://github.com/Meaningful-Data/vtlengine/actions/workflows/testing.yml) |
41
+ | Package | [![PyPI Latest Release](https://img.shields.io/pypi/v/vtlengine.svg)](https://pypi.org/project/vtlengine/) |
42
+ | License | [![License - AGPL 3.0](https://img.shields.io/pypi/l/vtlengine.svg)](https://github.com/Meaningful-Data/vtlengine/blob/main/LICENSE.md) |
43
+ | Mentioned in | [![Mentioned in Awesome Official Statistics ](https://awesome.re/mentioned-badge.svg)](https://github.com/SNStatComp/awesome-official-statistics-software) |
44
+
45
+ ## Introduction
46
+
47
+ The VTL Engine is a Python library that allows you to validate, format and execute VTL scripts.
48
+
49
+ It is a Python-based library around
50
+ the [VTL Language 2.1](https://sdmx-twg.github.io/vtl/2.1/html/index.html).
51
+
52
+ ## Useful Links
53
+
54
+ - [MeaningfulData: who we are](https://www.meaningfuldata.eu)
55
+ - [Documentation](https://docs.vtlengine.meaningfuldata.eu)
56
+ - [Source Code](https://github.com/Meaningful-Data/vtlengine)
57
+ - [Bug Tracker](https://github.com/Meaningful-Data/vtlengine/issues?q=is%3Aopen+is%3Aissue+label%3Abug)
58
+ - [New features Tracker](https://github.com/Meaningful-Data/vtlengine/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement)
59
+
60
+ ## Installation
61
+
62
+ ### Requirements
63
+
64
+ The VTL Engine requires Python 3.9 or higher.
65
+
66
+ ### Install with pip
67
+
68
+ To install the VTL Engine on any Operating System, you can use pip:
69
+
70
+ ```bash
71
+
72
+ pip install vtlengine
73
+
74
+ ```
75
+
76
+ *Note: it is recommended to install the VTL Engine in a virtual environment.*
77
+
78
+ ### S3 extra
79
+
80
+ If you want to use the S3 functionality, you can install the VTL Engine with the `s3` extra:
81
+
82
+ ```bash
83
+ pip install vtlengine[s3]
84
+ ```
85
+
86
+ ## Documentation
87
+
88
+ The documentation for the VTL Engine is available
89
+ at [docs.vtlengine.meaningfuldata.eu](https://docs.vtlengine.meaningfuldata.eu).
@@ -0,0 +1,54 @@
1
+ # VTL Engine
2
+
3
+ | | |
4
+ |--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
5
+ | Testing | [![Testing](https://github.com/Meaningful-Data/vtlengine/actions/workflows/testing.yml/badge.svg)](https://github.com/Meaningful-Data/vtlengine/actions/workflows/testing.yml) |
6
+ | Package | [![PyPI Latest Release](https://img.shields.io/pypi/v/vtlengine.svg)](https://pypi.org/project/vtlengine/) |
7
+ | License | [![License - AGPL 3.0](https://img.shields.io/pypi/l/vtlengine.svg)](https://github.com/Meaningful-Data/vtlengine/blob/main/LICENSE.md) |
8
+ | Mentioned in | [![Mentioned in Awesome Official Statistics ](https://awesome.re/mentioned-badge.svg)](https://github.com/SNStatComp/awesome-official-statistics-software) |
9
+
10
+ ## Introduction
11
+
12
+ The VTL Engine is a Python library that allows you to validate, format and execute VTL scripts.
13
+
14
+ It is a Python-based library around
15
+ the [VTL Language 2.1](https://sdmx-twg.github.io/vtl/2.1/html/index.html).
16
+
17
+ ## Useful Links
18
+
19
+ - [MeaningfulData: who we are](https://www.meaningfuldata.eu)
20
+ - [Documentation](https://docs.vtlengine.meaningfuldata.eu)
21
+ - [Source Code](https://github.com/Meaningful-Data/vtlengine)
22
+ - [Bug Tracker](https://github.com/Meaningful-Data/vtlengine/issues?q=is%3Aopen+is%3Aissue+label%3Abug)
23
+ - [New features Tracker](https://github.com/Meaningful-Data/vtlengine/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement)
24
+
25
+ ## Installation
26
+
27
+ ### Requirements
28
+
29
+ The VTL Engine requires Python 3.9 or higher.
30
+
31
+ ### Install with pip
32
+
33
+ To install the VTL Engine on any Operating System, you can use pip:
34
+
35
+ ```bash
36
+
37
+ pip install vtlengine
38
+
39
+ ```
40
+
41
+ *Note: it is recommended to install the VTL Engine in a virtual environment.*
42
+
43
+ ### S3 extra
44
+
45
+ If you want to use the S3 functionality, you can install the VTL Engine with the `s3` extra:
46
+
47
+ ```bash
48
+ pip install vtlengine[s3]
49
+ ```
50
+
51
+ ## Documentation
52
+
53
+ The documentation for the VTL Engine is available
54
+ at [docs.vtlengine.meaningfuldata.eu](https://docs.vtlengine.meaningfuldata.eu).
@@ -0,0 +1,110 @@
1
+ [project]
2
+ name = "vtlengine"
3
+ version = "1.5.0rc1"
4
+ description = "Run and Validate VTL Scripts"
5
+ license = "AGPL-3.0"
6
+ readme = "README.md"
7
+ requires-python = ">=3.9"
8
+ authors = [
9
+ {name = "MeaningfulData", email = "info@meaningfuldata.eu"},
10
+ ]
11
+ maintainers = [
12
+ {name = "Francisco Javier Hernandez del Caño", email = "javier.hernandez@meaningfuldata.eu"},
13
+ {name = "Alberto Hernandez del Caño", email = "alberto.hernandez@meaningfuldata.eu"},
14
+ {name = "Mateo de Lorenzo Argeles", email = "mateo.delorenzo@meaningfuldata.eu"}
15
+ ]
16
+ classifiers = [
17
+ "Development Status :: 5 - Production/Stable",
18
+ "Intended Audience :: Developers",
19
+ "Intended Audience :: Information Technology",
20
+ "Intended Audience :: Science/Research",
21
+ "Typing :: Typed"
22
+ ]
23
+ keywords = ['vtl', 'sdmx', 'vtlengine', 'Validation and Transformation Language']
24
+
25
+ dependencies = [
26
+ # PyPi dependencies
27
+ "duckdb>=1.4,<1.5",
28
+ "pysdmx[xml]>=1.5.2,<2.0",
29
+ # APT-supported dependencies
30
+ "jsonschema>=3.2.0,<5.0",
31
+ "sqlglot>=22.2.0,<23.0",
32
+ "antlr4-python3-runtime>=4.9,<4.10",
33
+ "pandas>=2.1.4,<3.0",
34
+ "networkx>=2.8,<3.0"
35
+ ]
36
+
37
+ [project.optional-dependencies]
38
+ s3 = ["s3fs>=2022.11.0"]
39
+ all = ["s3fs>=2022.11.0"]
40
+
41
+ [project.urls]
42
+ Repository = 'https://github.com/Meaningful-Data/vtlengine'
43
+ Documentation = 'https://docs.vtlengine.meaningfuldata.eu'
44
+ MeaningfulData = 'https://www.meaningfuldata.eu/'
45
+ IssueTracker = 'https://github.com/Meaningful-Data/vtlengine/issues'
46
+ Authors = 'https://github.com/Meaningful-Data/vtlengine/graphs/contributors'
47
+
48
+ [tool.poetry.dependencies]
49
+ python = ">=3.9,<4.0"
50
+
51
+ [tool.poetry.group.dev.dependencies]
52
+ pytest = ">=8.4,<9.0"
53
+ pytest-cov = ">=7.0.0,<8.0"
54
+ pytest-xdist = ">=3.8.0,<4.0"
55
+ line-profiler-pycharm = ">=1.2.0,<2.0"
56
+ mypy = ">=1.18,<2.0"
57
+ pandas-stubs = ">=2.2.2,<3.0"
58
+ ruff = ">=0.14,<1.0.0"
59
+ types-jsonschema = ">=4.25.1,<5.0"
60
+
61
+ [tool.poetry.group.docs.dependencies]
62
+ sphinx = ">=7.4.7,<8.0"
63
+ sphinx-rtd-theme = ">=3.0.2,<4.0"
64
+ toml = ">=0.10.2,<0.11.0"
65
+
66
+
67
+
68
+ [tool.ruff]
69
+ line-length = 100
70
+ lint.mccabe.max-complexity = 20
71
+ lint.select = [
72
+ "B", "B9", "C", "C4", "D", "E", "F", "I", "PT", "S", "SIM", "W"
73
+ ]
74
+ # TODO: check S608 (duckdb querys)
75
+ lint.ignore = ["B023", "B028", "B904", "C403", "D100", "D101", "D102", "D103", "D104", "D105",
76
+ "D107", "D200", "D201", "D202", "D203", "D205", "D209", "D212", "D213", "D301",
77
+ "D400", "D401", "D404", "D411", "D413", "D415", "D419", "E203", "S608"]
78
+ lint.exclude = ["*/Grammar/*", "*/main.py", "*/dev.py"]
79
+
80
+ [tool.ruff.lint.per-file-ignores]
81
+ "tests/*" = ["S101", "PT006", "PT012", "PT013", "E501", "W605"]
82
+ "src/vtlengine/*" = ["E712"]
83
+
84
+ [tool.mypy]
85
+ files = "src"
86
+ exclude = "src/vtlengine/AST/.*|src/dev.py"
87
+ disallow_untyped_defs = true
88
+ disallow_untyped_calls = true
89
+ ignore_errors = false
90
+ no_implicit_optional = true
91
+ show_column_numbers = true
92
+ strict_equality = true
93
+ strict_optional = true
94
+ strict = true
95
+ enable_error_code = [
96
+ "ignore-without-code",
97
+ "redundant-expr",
98
+ "truthy-bool",
99
+ ]
100
+ warn_return_any = false
101
+
102
+ [tool.pytest.ini_options]
103
+ addopts = "--strict-markers"
104
+ markers = [
105
+ "input_path: directory where tests data files are stored"
106
+ ]
107
+
108
+ [build-system]
109
+ requires = ["poetry-core"]
110
+ build-backend = "poetry.core.masonry.api"