# 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": "norve",
"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/7f/00/4092d351b918e9f4936515ad863d6f291415067fcc41f046561f283aa15e/norve-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": "865544e1daf6ff59de2139ff2720856c6d5020a6b250593d92bedfcf5db6155e",
"md5": "a7c9a11a87c8c04a34b475a7ac4fdb6e",
"sha256": "20428a1555549dd06649a3f90716f49466e721852740d9499e4f6b489a35a3f3"
},
"downloads": -1,
"filename": "norve-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a7c9a11a87c8c04a34b475a7ac4fdb6e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 57481,
"upload_time": "2025-10-08T23:15:19",
"upload_time_iso_8601": "2025-10-08T23:15:19.942147Z",
"url": "https://files.pythonhosted.org/packages/86/55/44e1daf6ff59de2139ff2720856c6d5020a6b250593d92bedfcf5db6155e/norve-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f004092d351b918e9f4936515ad863d6f291415067fcc41f046561f283aa15e",
"md5": "1f6439e6e3b1e27b81d528765a6bc622",
"sha256": "e02b3a627f60e37ee98a8b2bbe8f79a1f88c0a895770f86663bf3ecb959e640d"
},
"downloads": -1,
"filename": "norve-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "1f6439e6e3b1e27b81d528765a6bc622",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 46547,
"upload_time": "2025-10-08T23:15:21",
"upload_time_iso_8601": "2025-10-08T23:15:21.211776Z",
"url": "https://files.pythonhosted.org/packages/7f/00/4092d351b918e9f4936515ad863d6f291415067fcc41f046561f283aa15e/norve-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-08 23:15:21",
"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": "norve"
}