dataweave-py 0.1.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.
- dataweave_py-0.1.0.dist-info/METADATA +391 -0
- dataweave_py-0.1.0.dist-info/RECORD +42 -0
- dataweave_py-0.1.0.dist-info/WHEEL +5 -0
- dataweave_py-0.1.0.dist-info/licenses/LICENSE +22 -0
- dataweave_py-0.1.0.dist-info/top_level.txt +1 -0
- dwpy/__init__.py +3 -0
- dwpy/builtins.py +852 -0
- dwpy/modules/dw/Core.bdwl +0 -0
- dwpy/modules/dw/Core.dwl +7462 -0
- dwpy/modules/dw/Crypto.bdwl +0 -0
- dwpy/modules/dw/Crypto.dwl +231 -0
- dwpy/modules/dw/Runtime.bdwl +0 -0
- dwpy/modules/dw/Runtime.dwl +1588 -0
- dwpy/modules/dw/System.bdwl +0 -0
- dwpy/modules/dw/System.dwl +92 -0
- dwpy/modules/dw/core/Arrays.dwl +1329 -0
- dwpy/modules/dw/core/Binaries.dwl +306 -0
- dwpy/modules/dw/core/Dates.dwl +1131 -0
- dwpy/modules/dw/core/Numbers.dwl +311 -0
- dwpy/modules/dw/core/Objects.dwl +547 -0
- dwpy/modules/dw/extension/DataFormat.bdwl +0 -0
- dwpy/modules/dw/extension/DataFormat.dwl +75 -0
- dwpy/modules/dw/module/Mime.bdwl +0 -0
- dwpy/modules/dw/module/Mime.dwl +266 -0
- dwpy/modules/dw/module/Multipart.bdwl +0 -0
- dwpy/modules/dw/module/Multipart.dwl +662 -0
- dwpy/modules/dw/util/Coercions.bdwl +0 -0
- dwpy/modules/dw/util/Coercions.dwl +1836 -0
- dwpy/modules/dw/util/Diff.bdwl +0 -0
- dwpy/modules/dw/util/Diff.dwl +363 -0
- dwpy/modules/dw/util/Math.bdwl +0 -0
- dwpy/modules/dw/util/Math.dwl +588 -0
- dwpy/modules/dw/util/Timer.bdwl +0 -0
- dwpy/modules/dw/util/Timer.dwl +199 -0
- dwpy/modules/dw/util/Tree.bdwl +0 -0
- dwpy/modules/dw/util/Tree.dwl +801 -0
- dwpy/modules/dw/util/Values.bdwl +0 -0
- dwpy/modules/dw/util/Values.dwl +777 -0
- dwpy/modules/dw/xml/Dtd.bdwl +0 -0
- dwpy/modules/dw/xml/Dtd.dwl +100 -0
- dwpy/parser.py +886 -0
- dwpy/runtime.py +750 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dataweave-py
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: DataWeave interpreter running natively on Python
|
|
5
|
+
Author-email: Your Name <your.email@example.com>
|
|
6
|
+
Maintainer-email: Your Name <your.email@example.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/estebanwasinger/dataweave-py
|
|
9
|
+
Project-URL: Documentation, https://github.com/estebanwasinger/dataweave-py#readme
|
|
10
|
+
Project-URL: Repository, https://github.com/estebanwasinger/dataweave-py
|
|
11
|
+
Project-URL: Issues, https://github.com/estebanwasinger/dataweave-py/issues
|
|
12
|
+
Keywords: dataweave,data-transformation,etl,mulesoft,interpreter,functional-programming
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Operating System :: OS Independent
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: pytest>=8.4.2; extra == "dev"
|
|
29
|
+
Requires-Dist: ipykernel>=7.1.0; extra == "dev"
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# DataWeave-Py
|
|
33
|
+
|
|
34
|
+
A native Python implementation of the DataWeave data transformation language, providing powerful data transformation capabilities directly in Python without requiring the JVM.
|
|
35
|
+
|
|
36
|
+
## Overview
|
|
37
|
+
|
|
38
|
+
DataWeave-Py (`dwpy`) is a Python interpreter for the DataWeave language, originally developed by MuleSoft for data transformation in the Mule runtime. This project brings DataWeave's expressive transformation syntax and rich feature set to the Python ecosystem, enabling:
|
|
39
|
+
|
|
40
|
+
- **Data transformation**: Convert between JSON, XML, CSV and other formats
|
|
41
|
+
- **Functional programming**: Leverage map, filter, reduce, and other functional operators
|
|
42
|
+
- **Pattern matching**: Use powerful match expressions with guards and bindings
|
|
43
|
+
- **Safe navigation**: Handle null values gracefully with null-safe operators
|
|
44
|
+
- **Rich built-ins**: Access 100+ built-in functions for strings, numbers, dates, arrays, and objects
|
|
45
|
+
|
|
46
|
+
## Requirements
|
|
47
|
+
|
|
48
|
+
- Python 3.10 or higher
|
|
49
|
+
- Dependencies managed via [uv](https://github.com/astral-sh/uv) (recommended) or pip
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
### Basic Usage
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
from dwpy import DataWeaveRuntime
|
|
57
|
+
|
|
58
|
+
# Create a runtime instance
|
|
59
|
+
runtime = DataWeaveRuntime()
|
|
60
|
+
|
|
61
|
+
# Define a DataWeave script
|
|
62
|
+
script = """%dw 2.0
|
|
63
|
+
output application/json
|
|
64
|
+
---
|
|
65
|
+
{
|
|
66
|
+
message: "Hello, " ++ upper(payload.name),
|
|
67
|
+
timestamp: now()
|
|
68
|
+
}
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
# Execute with a payload
|
|
72
|
+
payload = {"name": "world"}
|
|
73
|
+
result = runtime.execute(script, payload)
|
|
74
|
+
|
|
75
|
+
print(result)
|
|
76
|
+
# Output: {'message': 'Hello, WORLD', 'timestamp': '2025-11-03T...Z'}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Data Transformation Example
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from dwpy import DataWeaveRuntime
|
|
83
|
+
|
|
84
|
+
runtime = DataWeaveRuntime()
|
|
85
|
+
|
|
86
|
+
# Transform and enrich order data
|
|
87
|
+
script = """%dw 2.0
|
|
88
|
+
output application/json
|
|
89
|
+
---
|
|
90
|
+
{
|
|
91
|
+
orderId: payload.id,
|
|
92
|
+
status: upper(payload.status default "pending"),
|
|
93
|
+
total: payload.items reduce ((item, acc = 0) ->
|
|
94
|
+
acc + (item.price * (item.quantity default 1))
|
|
95
|
+
),
|
|
96
|
+
itemCount: sizeOf(payload.items)
|
|
97
|
+
}
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
payload = {
|
|
101
|
+
"id": "ORD-123",
|
|
102
|
+
"status": "confirmed",
|
|
103
|
+
"items": [
|
|
104
|
+
{"price": 29.99, "quantity": 2},
|
|
105
|
+
{"price": 15.50, "quantity": 1}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
result = runtime.execute(script, payload)
|
|
110
|
+
print(result)
|
|
111
|
+
# Output: {'orderId': 'ORD-123', 'status': 'CONFIRMED', 'total': 75.48, 'itemCount': 2}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Using Variables
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
from dwpy import DataWeaveRuntime
|
|
118
|
+
|
|
119
|
+
runtime = DataWeaveRuntime()
|
|
120
|
+
|
|
121
|
+
script = """%dw 2.0
|
|
122
|
+
output application/json
|
|
123
|
+
var requestTime = vars.requestTime default now()
|
|
124
|
+
---
|
|
125
|
+
{
|
|
126
|
+
user: payload.userId,
|
|
127
|
+
processedAt: requestTime
|
|
128
|
+
}
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
payload = {"userId": "U-456"}
|
|
132
|
+
vars = {"requestTime": "2024-05-05T12:00:00Z"}
|
|
133
|
+
|
|
134
|
+
result = runtime.execute(script, payload, vars=vars)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Pattern Matching
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
from dwpy import DataWeaveRuntime
|
|
141
|
+
|
|
142
|
+
runtime = DataWeaveRuntime()
|
|
143
|
+
|
|
144
|
+
script = """%dw 2.0
|
|
145
|
+
output application/json
|
|
146
|
+
---
|
|
147
|
+
{
|
|
148
|
+
category: payload.price match {
|
|
149
|
+
case var p when p > 100 -> "premium",
|
|
150
|
+
case var p when p > 50 -> "standard",
|
|
151
|
+
else -> "budget"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
result = runtime.execute(script, {"price": 75})
|
|
157
|
+
# Output: {'category': 'standard'}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### String Interpolation
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
from dwpy import DataWeaveRuntime
|
|
164
|
+
|
|
165
|
+
runtime = DataWeaveRuntime()
|
|
166
|
+
|
|
167
|
+
# Simple interpolation
|
|
168
|
+
script = """%dw 2.0
|
|
169
|
+
output application/json
|
|
170
|
+
---
|
|
171
|
+
{
|
|
172
|
+
greeting: "Hello $(payload.name)!",
|
|
173
|
+
total: "Total: $(payload.price * payload.quantity)",
|
|
174
|
+
status: "Order $(payload.orderId) is $(upper(payload.status))"
|
|
175
|
+
}
|
|
176
|
+
"""
|
|
177
|
+
|
|
178
|
+
payload = {
|
|
179
|
+
"name": "Alice",
|
|
180
|
+
"price": 10.5,
|
|
181
|
+
"quantity": 3,
|
|
182
|
+
"orderId": "ORD-123",
|
|
183
|
+
"status": "confirmed"
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
result = runtime.execute(script, payload)
|
|
187
|
+
# Output: {
|
|
188
|
+
# 'greeting': 'Hello Alice!',
|
|
189
|
+
# 'total': 'Total: 31.5',
|
|
190
|
+
# 'status': 'Order ORD-123 is CONFIRMED'
|
|
191
|
+
# }
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
String interpolation allows you to embed expressions directly within strings using the `$(expression)` syntax. The expression can be:
|
|
195
|
+
- Property access: `$(payload.name)`
|
|
196
|
+
- Nested properties: `$(payload.user.email)`
|
|
197
|
+
- Expressions: `$(payload.price * 1.1)`
|
|
198
|
+
- Function calls: `$(upper(payload.status))`
|
|
199
|
+
- Any valid DataWeave expression
|
|
200
|
+
|
|
201
|
+
## Supported Features
|
|
202
|
+
|
|
203
|
+
DataWeave-Py currently supports a wide range of DataWeave language features:
|
|
204
|
+
|
|
205
|
+
### Core Language Features
|
|
206
|
+
- ✅ Header directives (`%dw 2.0`, `output`, `var`, `import`)
|
|
207
|
+
- ✅ Payload and variable access
|
|
208
|
+
- ✅ Object and array literals
|
|
209
|
+
- ✅ Field selectors (`.field`, `?.field`, `[index]`)
|
|
210
|
+
- ✅ Comments (line `//` and block `/* */`)
|
|
211
|
+
- ✅ Default values (`payload.field default "fallback"`)
|
|
212
|
+
- ✅ String interpolation (`"Hello $(payload.name)"`)
|
|
213
|
+
|
|
214
|
+
### Operators
|
|
215
|
+
- ✅ Concatenation (`++`)
|
|
216
|
+
- ✅ Difference (`--`)
|
|
217
|
+
- ✅ Arithmetic (`+`, `-`, `*`, `/`)
|
|
218
|
+
- ✅ Comparison (`==`, `!=`, `>`, `<`, `>=`, `<=`)
|
|
219
|
+
- ✅ Logical (`and`, `or`, `not`)
|
|
220
|
+
- ✅ Range (`to`)
|
|
221
|
+
|
|
222
|
+
### Control Flow
|
|
223
|
+
- ✅ Conditional expressions (`if-else`)
|
|
224
|
+
- ✅ Pattern matching (`match-case`)
|
|
225
|
+
- ✅ Match guards (`case var x when condition`)
|
|
226
|
+
|
|
227
|
+
### Collection Operations
|
|
228
|
+
- ✅ `map` - Transform elements
|
|
229
|
+
- ✅ `filter` - Select elements
|
|
230
|
+
- ✅ `reduce` - Aggregate values
|
|
231
|
+
- ✅ `flatMap` - Map and flatten
|
|
232
|
+
- ✅ `distinctBy` - Remove duplicates
|
|
233
|
+
- ✅ `groupBy` - Group by criteria
|
|
234
|
+
- ✅ `orderBy` - Sort elements
|
|
235
|
+
|
|
236
|
+
### Built-in Functions
|
|
237
|
+
|
|
238
|
+
#### String Functions
|
|
239
|
+
`upper`, `lower`, `trim`, `contains`, `startsWith`, `endsWith`, `isBlank`, `splitBy`, `joinBy`, `find`, `match`, `matches`
|
|
240
|
+
|
|
241
|
+
#### Numeric Functions
|
|
242
|
+
`abs`, `ceil`, `floor`, `round`, `pow`, `mod`, `sum`, `avg`, `max`, `min`, `random`, `randomInt`, `isDecimal`, `isInteger`, `isEven`, `isOdd`
|
|
243
|
+
|
|
244
|
+
#### Array/Object Functions
|
|
245
|
+
`sizeOf`, `isEmpty`, `flatten`, `indexOf`, `lastIndexOf`, `distinctBy`, `filterObject`, `keysOf`, `valuesOf`, `entriesOf`, `pluck`, `maxBy`, `minBy`
|
|
246
|
+
|
|
247
|
+
#### Date Functions
|
|
248
|
+
`now`, `isLeapYear`, `daysBetween`
|
|
249
|
+
|
|
250
|
+
#### Utility Functions
|
|
251
|
+
`log`, `logInfo`, `logDebug`, `logWarn`, `logError`
|
|
252
|
+
|
|
253
|
+
## Running Tests
|
|
254
|
+
|
|
255
|
+
The project includes comprehensive test coverage:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Run all tests
|
|
259
|
+
pytest
|
|
260
|
+
|
|
261
|
+
# Run specific test file
|
|
262
|
+
pytest tests/test_runtime_basic.py
|
|
263
|
+
|
|
264
|
+
# Run with verbose output
|
|
265
|
+
pytest -v
|
|
266
|
+
|
|
267
|
+
# Run with coverage
|
|
268
|
+
pytest --cov=dwpy
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Project Structure
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
runtime-2.11.0-20250825-src/
|
|
275
|
+
├── dwpy/ # Main Python package
|
|
276
|
+
│ ├── __init__.py # Package exports
|
|
277
|
+
│ ├── parser.py # DataWeave parser
|
|
278
|
+
│ ├── runtime.py # Execution engine
|
|
279
|
+
│ └── builtins.py # Built-in functions
|
|
280
|
+
├── tests/ # Test suite
|
|
281
|
+
│ ├── test_runtime_basic.py # Core functionality tests
|
|
282
|
+
│ ├── test_builtins.py # Built-in function tests
|
|
283
|
+
│ └── fixtures/ # Test data and fixtures
|
|
284
|
+
├── runtime-2.11.0-20250825/ # Original JVM runtime reference
|
|
285
|
+
├── docs/ # Documentation
|
|
286
|
+
├── pyproject.toml # Project configuration
|
|
287
|
+
└── README.md # This file
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Development
|
|
291
|
+
|
|
292
|
+
### Setting Up Development Environment
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# Create virtual environment
|
|
296
|
+
uv venv --python 3.12
|
|
297
|
+
source .venv/bin/activate
|
|
298
|
+
|
|
299
|
+
# Install development dependencies
|
|
300
|
+
uv pip sync
|
|
301
|
+
|
|
302
|
+
# Install in editable mode
|
|
303
|
+
pip install -e .
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Running the Test Suite
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# Run all tests
|
|
310
|
+
python -m pytest tests/
|
|
311
|
+
|
|
312
|
+
# Run specific test category
|
|
313
|
+
python -m pytest tests/test_builtins.py
|
|
314
|
+
|
|
315
|
+
# Run with coverage report
|
|
316
|
+
python -m pytest --cov=dwpy --cov-report=html tests/
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Code Style
|
|
320
|
+
|
|
321
|
+
The project follows standard Python conventions:
|
|
322
|
+
- PEP 8 style guide
|
|
323
|
+
- Type hints where appropriate
|
|
324
|
+
- Comprehensive docstrings
|
|
325
|
+
- Two-space indentation for consistency with Scala codebase
|
|
326
|
+
|
|
327
|
+
## Comparison with JVM Runtime
|
|
328
|
+
|
|
329
|
+
DataWeave-Py aims to provide feature parity with the official JVM-based DataWeave runtime. Key differences:
|
|
330
|
+
|
|
331
|
+
| Feature | JVM Runtime | DataWeave-Py |
|
|
332
|
+
|---------|-------------|--------------|
|
|
333
|
+
| Language | Scala | Python |
|
|
334
|
+
| Performance | High (compiled) | Good (interpreted) |
|
|
335
|
+
| Startup Time | Slower (JVM warmup) | Fast (native Python) |
|
|
336
|
+
| Memory Usage | Higher (JVM overhead) | Lower (Python runtime) |
|
|
337
|
+
| Integration | Java/Mule apps | Python apps |
|
|
338
|
+
| Module System | Full support | In progress |
|
|
339
|
+
| Type System | Static typing | Dynamic typing |
|
|
340
|
+
|
|
341
|
+
## Roadmap
|
|
342
|
+
|
|
343
|
+
### Current Status (v0.1.0)
|
|
344
|
+
- ✅ Core language parser
|
|
345
|
+
- ✅ Expression evaluation
|
|
346
|
+
- ✅ 60+ built-in functions
|
|
347
|
+
- ✅ Pattern matching
|
|
348
|
+
- ✅ Collection operators
|
|
349
|
+
|
|
350
|
+
### Planned Features
|
|
351
|
+
- 🔄 Full module system support
|
|
352
|
+
- 🔄 Import statements
|
|
353
|
+
- 🔄 Custom function definitions
|
|
354
|
+
- 🔄 XML/CSV format support
|
|
355
|
+
- 🔄 Streaming for large datasets
|
|
356
|
+
- 🔄 Type validation
|
|
357
|
+
- 🔄 Performance optimizations
|
|
358
|
+
|
|
359
|
+
## Contributing
|
|
360
|
+
|
|
361
|
+
Contributions are welcome! Please:
|
|
362
|
+
|
|
363
|
+
1. Fork the repository
|
|
364
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
365
|
+
3. Write tests for your changes
|
|
366
|
+
4. Ensure all tests pass (`pytest`)
|
|
367
|
+
5. Commit your changes (`git commit -m 'feat: add amazing feature'`)
|
|
368
|
+
6. Push to the branch (`git push origin feature/amazing-feature`)
|
|
369
|
+
7. Open a Pull Request
|
|
370
|
+
|
|
371
|
+
## License
|
|
372
|
+
|
|
373
|
+
See the original DataWeave runtime license terms. This project is a reference implementation for educational and development purposes.
|
|
374
|
+
|
|
375
|
+
## Resources
|
|
376
|
+
|
|
377
|
+
- [DataWeave Documentation](https://docs.mulesoft.com/dataweave/)
|
|
378
|
+
- [DataWeave Tutorial](https://developer.mulesoft.com/tutorials-and-howtos/dataweave/)
|
|
379
|
+
- [DataWeave Playground](https://dataweave.mulesoft.com/learn/playground)
|
|
380
|
+
|
|
381
|
+
## Support
|
|
382
|
+
|
|
383
|
+
For questions, issues, or contributions:
|
|
384
|
+
- Open an issue on GitHub
|
|
385
|
+
- Check existing documentation in the `docs/` directory
|
|
386
|
+
- Review test cases in `tests/` for usage examples
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
**Note**: This is an independent Python implementation and is not officially supported by MuleSoft. For production use cases requiring full DataWeave compatibility, please use the official JVM-based runtime.
|
|
391
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
dataweave_py-0.1.0.dist-info/licenses/LICENSE,sha256=fN7UInhHu6YspscrkuUugB2QHSUAnk9v84KO4tsYyuo,1069
|
|
2
|
+
dwpy/__init__.py,sha256=xakbccZf_1n7BKji6EeOKEGPwDkYLvspV7Ey4joL1kc,70
|
|
3
|
+
dwpy/builtins.py,sha256=DftRRcDCwMzjjb1SXqtLsE2XzLcqiMVRQA8o9ozUZUY,24932
|
|
4
|
+
dwpy/parser.py,sha256=zStRVj5tn3IREGuZ6HK_tnIsrlQ2sKmjnHG8Kg0csfA,28756
|
|
5
|
+
dwpy/runtime.py,sha256=eDMGSWAXj4bZeu_uIK4Qd-9Wj3lFCGx47IN0B0-OtVI,29717
|
|
6
|
+
dwpy/modules/dw/Core.bdwl,sha256=vHiPuRgCYp143q3jtp5frzkNLRQQ0iV20kJ_sqiAcU4,335293
|
|
7
|
+
dwpy/modules/dw/Core.dwl,sha256=fwXdri-lny0kyuZObjcnIHiEYAnCyStv7gC1pnkGlqA,169239
|
|
8
|
+
dwpy/modules/dw/Crypto.bdwl,sha256=Mu8fhgBl0eP8D61hug2e-gmtbWTrJwT8zYARF7wgL_4,10967
|
|
9
|
+
dwpy/modules/dw/Crypto.dwl,sha256=HNyD0H2WZIQ0Ktc2tFf2lDRMvDCeU-dNBVnAw42cQgo,6156
|
|
10
|
+
dwpy/modules/dw/Runtime.bdwl,sha256=tAIzy1fs4yafprdM-PPUME0SE_gb7Fp902HnI0ALT0E,77123
|
|
11
|
+
dwpy/modules/dw/Runtime.dwl,sha256=uPTzjJO1Tp0x59tsilb7bf586bKqpwblz10DG-n_FkA,43876
|
|
12
|
+
dwpy/modules/dw/System.bdwl,sha256=7NkJrM_tlh-qqF8nSnFNJ4ou9-NhBfHGYlU4FUXq3tA,3349
|
|
13
|
+
dwpy/modules/dw/System.dwl,sha256=KfN9SZnq-_gAZW-cHfxEABkA_zLfHVYIZhJI7Hlh92Q,2028
|
|
14
|
+
dwpy/modules/dw/core/Arrays.dwl,sha256=6C5WIT9CwY-14ViLfc8URvLbU0BmRJV4Y8w1RyESi_E,31633
|
|
15
|
+
dwpy/modules/dw/core/Binaries.dwl,sha256=PZFJGFdGyJABqkSk-JRwDpv8YbAKAa7Uvz4EZi4Yw40,7289
|
|
16
|
+
dwpy/modules/dw/core/Dates.dwl,sha256=nQY0bAj2-5XVwJr7wug6I6Kw8F0Y2DdgL5N48nk-D0g,28315
|
|
17
|
+
dwpy/modules/dw/core/Numbers.dwl,sha256=rfEdZjsBOz6HcqSipL_qvfl6nnSP-kMz8dW5iMkNZB8,6495
|
|
18
|
+
dwpy/modules/dw/core/Objects.dwl,sha256=IQpyXehoVQGkmsf2vnQ6IpbjayvKL581xfrhmd6hczg,11927
|
|
19
|
+
dwpy/modules/dw/extension/DataFormat.bdwl,sha256=LQJxbvIkpEx9K_D-3zTQQudc9QW18khjmb_wHK-Aj6U,8871
|
|
20
|
+
dwpy/modules/dw/extension/DataFormat.dwl,sha256=8KeiziP3edzr-9AZVRtGAjS-EzNBpQXFN_k7f7fT0PQ,2251
|
|
21
|
+
dwpy/modules/dw/module/Mime.bdwl,sha256=CejIRo0Czj3_JNGyfoSqT3-Nk4hucLzNVljG-Qns-wg,9299
|
|
22
|
+
dwpy/modules/dw/module/Mime.dwl,sha256=si-nvWNoGXMdIt-WNqRTkq-l1IS8NhrlNS3oH_IjBOo,5666
|
|
23
|
+
dwpy/modules/dw/module/Multipart.bdwl,sha256=k5WPF8oONZ-LSrLBrgN49-9I3ZJSDpjHzEEAAL-ya2E,25701
|
|
24
|
+
dwpy/modules/dw/module/Multipart.dwl,sha256=47GVUAnto3GTxAJyntDKl7xdXDu7epcIfksXebpLElc,20126
|
|
25
|
+
dwpy/modules/dw/util/Coercions.bdwl,sha256=awzwFdUztFhSYP974JizuqU3wBuEBKv9gkmpPOndbXk,126317
|
|
26
|
+
dwpy/modules/dw/util/Coercions.dwl,sha256=U74KO7ogswT9N2qKwuRDzzTKjLAydyPG1j3AVt4gq_o,48947
|
|
27
|
+
dwpy/modules/dw/util/Diff.bdwl,sha256=iEsYdkRm1fLrG-dK0drlDD6iAIxrbdiZJEWiiDIEeZI,68859
|
|
28
|
+
dwpy/modules/dw/util/Diff.dwl,sha256=RSwM9d1dthSzQ4puuBpPy_mhpjCy3BA9ixEWBcbDlbA,9934
|
|
29
|
+
dwpy/modules/dw/util/Math.bdwl,sha256=v86FXahwZuXqdSySS68a7BB17so6wPJZeTsRtsHxTgo,36726
|
|
30
|
+
dwpy/modules/dw/util/Math.dwl,sha256=qLNrhr2FKzvigH8hmOwgyjnB-6RJtAtQQiBQz0iS4WE,13153
|
|
31
|
+
dwpy/modules/dw/util/Timer.bdwl,sha256=bWhOV9ZL0sVxMeN3GivEUIlp-bWsfNWE6m0N9zQFrko,11196
|
|
32
|
+
dwpy/modules/dw/util/Timer.dwl,sha256=fQ0i5QlA4tMfvI9-cW_YFLNhNycnJNWComHGZhdw1Mk,4142
|
|
33
|
+
dwpy/modules/dw/util/Tree.bdwl,sha256=PfJ4ZMNPwMDV5Wyr8e1gH4tCHSdzDDXFCVOcuOyMVjU,99510
|
|
34
|
+
dwpy/modules/dw/util/Tree.dwl,sha256=w6SGPM93jZOy-lTt8-7OWaugD7Jy7Adn9TkMJdZF6Ac,20093
|
|
35
|
+
dwpy/modules/dw/util/Values.bdwl,sha256=3Fjvxw4kYuipBCj8Z0WbhfTe861cR7ZXqjiXOl4OupU,114452
|
|
36
|
+
dwpy/modules/dw/util/Values.dwl,sha256=yS0zyisd3Sfz6jtjKJaK8oaa0C7bcjKeduzQNCS84Ps,18642
|
|
37
|
+
dwpy/modules/dw/xml/Dtd.bdwl,sha256=kgUUOITqcsP2cP2HyEFf4S7g-6vHaSYVG-ui_a8A1rg,10302
|
|
38
|
+
dwpy/modules/dw/xml/Dtd.dwl,sha256=zVRmevq9y-qVvYMSy-rwn439ntKKrPDYvcHpQ1x-sIo,2607
|
|
39
|
+
dataweave_py-0.1.0.dist-info/METADATA,sha256=K8hd5H_vLRUOs2YRcAwbycD4luR6yoE6Di-gJ4V6WKU,11023
|
|
40
|
+
dataweave_py-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
41
|
+
dataweave_py-0.1.0.dist-info/top_level.txt,sha256=Zmaz2KXT5lprvtKEwgnM8Kj4XdxHtc_F_ohHQBoJPW4,5
|
|
42
|
+
dataweave_py-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 [Your Name]
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dwpy
|
dwpy/__init__.py
ADDED