Socket
Socket
Sign inDemoInstall

pydfql

Package Overview
Dependencies
9
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    pydfql

A Wireshark-like display filter for querying data.


Maintainers
1

Readme

pydfql Logo

Python Display Filter Query Language

made-with-python PyPI GitHub Build Status Coverage


A Wireshark-like display filter various data formats, including Python dictionaries, lists, objects, and SQL databases.

Table of Contents

  1. Quick Start

    1.1 Installation

    1.2 Initialization

    1.3 Filtering Data

  2. Examples

  3. Acknowledgements

Quick Start

To quickly get started follow the steps below:

Installation

First, install the package using pip:

pip3 install pydfql

Initialization

Next, import the necessary module and initialize the appropriate display filter with some data. In the example below we are initializing the ObjectDisplayFilter with a list of objects:

from dataclasses import dataclass
from pydfql import ObjectDisplayFilter

@dataclass
class Actor:
    name: list
    age: dict
    gender: str

actors = [
    Actor(["Laurence", "Fishburne"], {"born": "1961"}, "male"),
    Actor(["Keanu", "Reeves"], {"born": "1964"}, "male"),
    Actor(["Joe", "Pantoliano"], {"born": "1951"}, "male"),
    Actor(["Carrie-Anne", "Moss"], {"born": "1967"}, "female")
]

df = ObjectDisplayFilter(actors)

Filtering Data

Once the display filter is initialized, you can start filtering the data using the display filter query language. For example, let's filter the actors whose birth year is after 1960:

filter_query = "age.born > 1960"
filtered_data = df.filter(filter_query)
print(list(filtered_data))
[
    Actor(name=['Laurence', 'Fishburne'], age={'born': '1961'}, gender='male'),
    Actor(name=['Keanu', 'Reeves'], age={'born': '1964'}, gender='male'),
    Actor(name=['Carrie-Anne', 'Moss'], age={'born': '1967'}, gender='female')
]

You can also use more complex queries to filter the data. For example, let's filter male actors born between 1960 and 1964 whose names end with "e":

filter_query = "gender == male and (age.born > 1960 and age.born < 1965) and name matches .*e$"
filtered_data = df.filter(filter_query)
print(list(filtered_data))

This will output the filtered data:

[Actor(name=['Laurence', 'Fishburne'], age={'born': '1961'}, gender='male')]

Overall, PyDFQL supports a wide range of features, including:

  • Data Types: Dictionaries, Lists, Objects, SQL
  • Comparison Operators: ==, !=, <=, <, >=, >, ~=, ~, &
  • Combining Operators: and, or, xor, not
  • Membership Operators: in
  • Types: Text, Number, Date & Time, Ethernet-, IPv4-, IPv6-Address
  • Slicing: Text, Ethernet-, IPv4-, IPv6-Address
  • Functions: upper, lower, len

For a detailed description of the individual features check out the User Guide.

Examples

For detailed examples of how the display filter can be utilized, please refer to the following:

Acknowledgements

This project wouldn't be possible without these awesome projects:

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc