Skip to main content

Python library for building composable text parsers

Project description

KNEX

Python library for creating chainable data transformers.

Installation

pip install knex

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

  1. Install Poetry
  2. Clone the repo: git clone https://github.com/clay584/knex && cd knex
  3. Install pre-requisits for developement: poetry install
  4. Activate the environment: poetry shell
  5. Install git pre-commit hook: pre-commit install && pre-commit autoupdate

Making Changes

  1. Run tests and validate coverage: pytest -v --cov=knex --cov-report html tests
  2. Commit all changes, and have clean git repo on main branch.
  3. Bump version: bump2version <major|minor|patch>
  4. Push to git: git push && git push --tags
  5. Build for PyPI: Automatically done by Github Actions when a tag is pushed.
  6. Publish to PyPI: Automatically done by Github Actions when a tag is pushed.

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

knex-0.2.20.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

knex-0.2.20-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file knex-0.2.20.tar.gz.

File metadata

  • Download URL: knex-0.2.20.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

Hashes for knex-0.2.20.tar.gz
Algorithm Hash digest
SHA256 2da82fdb6f4c99f58a632e43502155c5585a73694db7915015504b76a1467aa3
MD5 bb6e268b9c44b5ce38d106fd1047d13f
BLAKE2b-256 604438b2746307c0fd1bc78f4a3b4cf75f2ff7af1c949b8395b7f9c3d84f6183

See more details on using hashes here.

File details

Details for the file knex-0.2.20-py3-none-any.whl.

File metadata

  • Download URL: knex-0.2.20-py3-none-any.whl
  • Upload date:
  • Size: 17.4 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

Hashes for knex-0.2.20-py3-none-any.whl
Algorithm Hash digest
SHA256 cfaef18dc4d058090f82a2424c9fbf13abc00d50b838e0c606c528d1dee4341f
MD5 8b685fe97caa8ed3c3ad25bc330c6e81
BLAKE2b-256 11383fc126bcd2e40310d91bbc6908703d7899c4b7939608e2245bfd19586819

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page