Python library for building composable text parsers
Project description
KNEX
Python library for creating chainable data transformers.
Installation
pip install knex
Supported Transformers
:x: - Planned
:heavy_check_mark: - Implemented
General | String | Number | Date | Other |
---|---|---|---|---|
:heavy_check_mark: Append | :heavy_check_mark: Base64Decode | :x: Absolute | :x: BetweenDates | :heavy_check_mark: TextFSMParse |
:heavy_check_mark: Count | :heavy_check_mark: Base64Encode | :x: Add | :x: BetweenHours | :x: ThisOrThat |
:heavy_check_mark: FirstElement | :heavy_check_mark: Concat | :x: Ceil | :x: DateStringToISOFormat | :x: Ttp |
:heavy_check_mark: GetField | :x: Cut | :x: Divide | :x: DateToEpoch | :x: URLDecode |
:heavy_check_mark: GetIndex | :x: DumpJSON | :x: Floor | :x: DateToString | :x: URLEncode |
:x: If-Then-Else | :x: FromString | :x: Modulus | :x: FormattedDateToEpoch | |
:x: IndexOf | :x: JSONUnescape | :x: Multiply | :x: ModifyDateTime | |
:x: Join | :heavy_check_mark: Length | :x: Round | :x: TimeStampToDate | |
:x: Jq | :x: LoadJSON | :x: Subtract | ||
:x: JsonToTable | :heavy_check_mark: RegexExtractAll | :x: SumList | ||
:heavy_check_mark: LastElement | :x: RegexReplace | :x: ToPercent | ||
:x: ReverseList | :heavy_check_mark: Split | |||
:x: SetIfEmpty | :x: Substring | |||
:x: Slice | :heavy_check_mark: ToLower | |||
:x: Sort | :x: ToString | |||
:x: Stringify | :heavy_check_mark: ToUpper | |||
:x: Unique | :x: Trim | |||
:x: WhereFieldEquals |
Usage
>>> from knex.parsers import *
>>>
>>> input_data = """
... Interface IP-Address OK? Method Status Protocol
... GigabitEthernet0/1 unassigned YES unset up up
... GigabitEthernet0/2 192.168.190.235 YES unset up up
... GigabitEthernet0/3 unassigned YES unset up up
... GigabitEthernet0/4 192.168.191.2 YES unset up up
... TenGigabitEthernet2/1 unassigned YES unset up up
... Virtual36 unassigned YES unset up up
... """
>>>
>>> pattern = r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
>>>
>>> end = (
Start(input_data)
> RegexExtractAll(pattern)
> GetIndex(0)
> Concat("", "/24")
> IpNetwork()
)
>>>
>>> print(end.result)
192.168.190.0/24
>>> print(json.dumps(end.history, indent=4))
[
{
"parser": "RegexExtractAll",
"input": "...omitted for brevity...",
"args": {
"pattern": "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b"
},
"error": false,
"output": [
"192.168.190.235",
"192.168.191.2"
]
},
{
"parser": "GetIndex",
"input": [
"192.168.190.235",
"192.168.191.2"
],
"args": {
"idx": 0
},
"error": false,
"output": "192.168.190.235"
},
{
"parser": "Concat",
"input": "192.168.190.235",
"args": {
"prefix": "",
"suffix": "/24"
},
"error": false,
"output": "192.168.190.235/24"
},
{
"parser": "IpNetwork",
"input": "192.168.190.235/24",
"args": {},
"error": false,
"output": "192.168.190.0/24"
}
]
>>>
Development
Environment Setup
- Install Poetry
- Clone the repo:
git clone https://github.com/clay584/knex && cd knex
- Install pre-requisits for developement:
poetry install
- Activate the environment:
poetry shell
- Install git pre-commit hook:
pre-commit install && pre-commit autoupdate
Making Changes
- Run tests and validate coverage:
pytest -v --cov=knex --cov-report html tests
- Commit all changes, and have clean git repo on
main
branch. - Bump version:
bump2version <major|minor|patch>
- Push to git:
git push && git push --tags
- Build for PyPI: Automatically done by Github Actions when a tag is pushed.
- Publish to PyPI: Automatically done by Github Actions when a tag is pushed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
knex-0.2.2.tar.gz
(17.5 kB
view details)
Built Distribution
knex-0.2.2-py3-none-any.whl
(16.9 kB
view details)
File details
Details for the file knex-0.2.2.tar.gz
.
File metadata
- Download URL: knex-0.2.2.tar.gz
- Upload date:
- Size: 17.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.10 CPython/3.8.2 Linux/5.8.0-1041-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6aa1e4da485efad883869bf368b98c5c49cc89e9bb15c03ed9df9de4ae449f7 |
|
MD5 | de373d0060e1ddde598e198a85dd49f8 |
|
BLAKE2b-256 | 4d29e113bc38d9caecf87707047ab90525f62ac249c0a782f7109a4aab8ab9b7 |
File details
Details for the file knex-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: knex-0.2.2-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.10 CPython/3.8.2 Linux/5.8.0-1041-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2efde9721f914c200be389bc9c47faf429a2456c2b782c35d1bd6db3af4126cc |
|
MD5 | b5f04670f2f0d58ac05849d7be4186ab |
|
BLAKE2b-256 | 725708188e91ad325812d24b902b5b5930ea3edee6c49db6819d574367bff484 |