# 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 use and where clauses
- Robust join handling with automatic column disambiguation
- Clean, extensible grammar
- CLI and Python API for interactive and programmatic use
## Quick Start
```norvelang
data.csv | use name, age | where age > 30
```
## Installation
```powershell
uv venv
.venv\Scripts\activate
uv pip install -r .\requirements.txt
```
## Usage
### Command Line
```powershell
# 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
```python
import norve
df = norve.execute_query('''data.csv | use name, age | limit 10''')
output = norve.execute_with_output('''data.csv | use name, age | limit 5''')
variables = {'my_table': 'users.csv'}
df = norve.execute_query('''let users = $my_table; $users | use 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
```bash
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
Raw data
{
"_id": null,
"home_page": null,
"name": "norvelang",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "query-language, data-processing, dsl, pandas, csv, xlsx, excel, sqlite, json, xml, interpreter, python-api, data-analysis, sql-like, mathematical-expressions, joins, aggregations, domain-specific-language",
"author": "LoXewyX",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f6/ed/19f524e157ff013d126d20e3d25a6588125ba0847dbfef379131958b7c16/norvelang-0.2.2.tar.gz",
"platform": null,
"description": "# Norvelang\n\nMulti-Source Data Processing Language\n\n## Features\n- PEMDAS-compliant mathematical expressions\n- String functions (upper, lower, len, contains, etc.)\n- SQL-like pipelines for CSV, JSON, XML, SQLite, Excel\n- Filtering and aggregation with grouping and joins\n- Function support in use and where clauses\n- Robust join handling with automatic column disambiguation\n- Clean, extensible grammar\n- CLI and Python API for interactive and programmatic use\n\n## Quick Start\n\n```norvelang\ndata.csv | use name, age | where age > 30\n```\n\n## Installation\n\n```powershell\nuv venv\n.venv\\Scripts\\activate\nuv pip install -r .\\requirements.txt\n```\n\n## Usage\n\n### Command Line\n```powershell\n# Run a sample file\npython -m norve samples/math.nv\n\n# Interactive REPL\npython -m norve\n\n# Use regular Lark parser (disable cython)\npython -m norve samples/queries.nv --no-lark-cython\n```\n\n### Python API\n```python\nimport norve\n\ndf = norve.execute_query('''data.csv | use name, age | limit 10''')\noutput = norve.execute_with_output('''data.csv | use name, age | limit 5''')\nvariables = {'my_table': 'users.csv'}\ndf = norve.execute_query('''let users = $my_table; $users | use name, age | limit 10''', variables=variables)\n```\n\n## Directory Structure\n\n```\nnorvelang/\n\u251c\u2500\u2500 norve/ # Core language implementation\n\u2502 \u251c\u2500\u2500 api/ # Python API\n\u2502 \u251c\u2500\u2500 ast/ # AST definitions\n\u2502 \u251c\u2500\u2500 error/ # Error handling\n\u2502 \u251c\u2500\u2500 interpreter/ # Pipeline execution\n\u2502 \u251c\u2500\u2500 transformer/ # AST transformation\n\u2502 \u251c\u2500\u2500 grammar.lark # Grammar definition\n\u2502 \u2514\u2500\u2500 *.py # Core modules\n\u251c\u2500\u2500 publish/ # Create new release on Github and PyPI\n\u251c\u2500\u2500 samples/ # Example .nv files\n\u251c\u2500\u2500 sample_data/ # Test data files\n\u251c\u2500\u2500 tests/ # Unit tests\n\u251c\u2500\u2500 requirements.txt # Python dependencies\n\u2514\u2500\u2500 README.md # This file\n```\n\n## Running Tests\n\n```bash\ncd tests\npytest -v\n```\n\n## Sample Files\n- math.nv: Math and function demos\n- queries.nv, queries2.nv: Data processing examples\n- data_sources.nv: Multi-format data\n- errors.nv: Error handling\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Multi-Source Data Processing Language",
"version": "0.2.2",
"project_urls": {
"Bug Reports": "https://github.com/LoXewyX/Norvelang/issues",
"Documentation": "https://github.com/LoXewyX/Norvelang/blob/main/README.md",
"Homepage": "https://github.com/LoXewyX/Norvelang",
"Source": "https://github.com/LoXewyX/Norvelang"
},
"split_keywords": [
"query-language",
" data-processing",
" dsl",
" pandas",
" csv",
" xlsx",
" excel",
" sqlite",
" json",
" xml",
" interpreter",
" python-api",
" data-analysis",
" sql-like",
" mathematical-expressions",
" joins",
" aggregations",
" domain-specific-language"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fa5468581a99898cc53045959db4c18551b3ce7ea71cacfd2410e1be0475de84",
"md5": "82f085332215b24f7f4e2d80e700c3d8",
"sha256": "49884223caa8f68ec6a4f30b27ee45160511f2cd1f76f5d0ffb131d9f291c706"
},
"downloads": -1,
"filename": "norvelang-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "82f085332215b24f7f4e2d80e700c3d8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 57535,
"upload_time": "2025-10-08T23:15:26",
"upload_time_iso_8601": "2025-10-08T23:15:26.477078Z",
"url": "https://files.pythonhosted.org/packages/fa/54/68581a99898cc53045959db4c18551b3ce7ea71cacfd2410e1be0475de84/norvelang-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6ed19f524e157ff013d126d20e3d25a6588125ba0847dbfef379131958b7c16",
"md5": "76d84478742c4d8eff7dfb8050a01b91",
"sha256": "d45b6c98981bb890dcc0c5510985b3c2a30a3d87898549580be406f0b8bb27b4"
},
"downloads": -1,
"filename": "norvelang-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "76d84478742c4d8eff7dfb8050a01b91",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 46570,
"upload_time": "2025-10-08T23:15:27",
"upload_time_iso_8601": "2025-10-08T23:15:27.749352Z",
"url": "https://files.pythonhosted.org/packages/f6/ed/19f524e157ff013d126d20e3d25a6588125ba0847dbfef379131958b7c16/norvelang-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-08 23:15:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "LoXewyX",
"github_project": "Norvelang",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "lark",
"specs": []
},
{
"name": "lark-cython",
"specs": []
},
{
"name": "openpyxl",
"specs": []
},
{
"name": "pandas",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "setuptools",
"specs": []
}
],
"lcname": "norvelang"
}