Multi-Source Data Processing Language
Project description
Norvelang
Multi-Source Data Processing Language
Features
- PEMDAS-compliant mathematical expressions
- String functions (upper, lower, len, contains, etc.)
- SQL-like pipelines for CSV, JSON, XML, SQLite, Excel
- Filtering and aggregation with grouping and joins
- Function support in show and where clauses
- Robust join handling with automatic column disambiguation
- Clean, extensible grammar
- CLI and Python API for interactive and programmatic use
Quick Start
data.csv | show name, age | where age > 30
Installation
uv venv
.venv\Scripts\activate
uv pip install -r .\requirements.txt
Usage
Command Line
# Run a sample file
python -m norve samples/math.nv
# Interactive REPL
python -m norve
# Use regular Lark parser (disable cython)
python -m norve samples/queries.nv --no-lark-cython
Python API
import norve
df = norve.execute_query('''data.csv | show name, age | limit 10''')
output = norve.execute_with_output('''data.csv | show name, age | limit 5''')
variables = {'my_table': 'users.csv'}
df = norve.execute_query('''let users = $my_table; $users | show name, age | limit 10''', variables=variables)
Directory Structure
norvelang/
├── norve/ # Core language implementation
│ ├── api/ # Python API
│ ├── ast/ # AST definitions
│ ├── error/ # Error handling
│ ├── interpreter/ # Pipeline execution
│ ├── transformer/ # AST transformation
│ ├── grammar.lark # Grammar definition
│ └── *.py # Core modules
├── publish/ # Create new release on Github and PyPI
├── samples/ # Example .nv files
├── sample_data/ # Test data files
├── tests/ # Unit tests
├── requirements.txt # Python dependencies
└── README.md # This file
Running Tests
cd tests
pytest -v
Sample Files
- math.nv: Math and function demos
- queries.nv, queries2.nv: Data processing examples
- data_sources.nv: Multi-format data
- errors.nv: Error handling
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
norvelang-0.1.2.tar.gz
(45.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
norvelang-0.1.2-py3-none-any.whl
(56.7 kB
view details)
File details
Details for the file norvelang-0.1.2.tar.gz.
File metadata
- Download URL: norvelang-0.1.2.tar.gz
- Upload date:
- Size: 45.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d6aba04c5034a98795564000f4d3bc65079a51efd4944c68a55cb44cd6e6faa
|
|
| MD5 |
4f00225df6967d8a48ddc4225aa6383a
|
|
| BLAKE2b-256 |
2b6cc001ced54a0e3a6600d9943a614df7b97d1e08742f1021b8efe74415353c
|
File details
Details for the file norvelang-0.1.2-py3-none-any.whl.
File metadata
- Download URL: norvelang-0.1.2-py3-none-any.whl
- Upload date:
- Size: 56.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5bac4e31c857127540cc8ae33a9c3e46e223f951e1f87adfaca1fe1e58030f5
|
|
| MD5 |
628aeea7e26ce5ab8c799a958717d3ae
|
|
| BLAKE2b-256 |
df195f103493e837c025fce8dae605b10fe4c91a37237fb439610492d1860cf5
|