Skip to main content

What is PyASTrX?

Philosophy

“Simple projects are all alike; each complex project is complex in its own way.”

(adapted from Tolstoy’s Anna Karenina)

The PyASTrX philosophy is to provide a simple, easy-to-use, and extensible framework for code quality analysis, refactoring and codebase analysis.

The main point that I’ve developed is that sometimes a necessary practice in one project can be a bad practice in another project. In other words, we should walk a **mile in **someone’s shoes** before judging the code quality of someone else code.

PyASTrX allows you to define new code analysis patterns using just XPATH expressions. No need to write a parser, create a python file and ship to use in flake8 or pylint!

pip install pyastrx

Features

PyASTrX provides the following features:

An easy customizable code quality analysis tool.

Type pyastrx -h to see all the options.

You can also use a pyastrx.yaml file to configure the tool.

Human-friendly

Search and Linter outputs

If your codebase or pull request is huge, looking for possible mistakes, bad practices or code smells can be a pain, so PyASTrX provides a human-friendly output as default.

Human-friendly outputs

Friendly interface

  • autocomplete the previous queries

  • combo box to select the files

  • colorized syntax highlighting

Human friendly outputs

pre-commit

Copy the main.py available at pyastrx/.pre-commit-hook in your folder and add the following entry in your .pre-commit-config.yaml.

- repo: local
    hooks:
    - id: pyastrx
        name: PyASTrX linter
        entry: ./<LOCATION>/main.py
        language: script
        args: ["-q"]
        types: ["python"]
        description: Check for any violations using the pyastrx.yaml config
    - id: pyastrx-yaml
        name: PyASTrX linter
        entry: ./<LOCATION>/main.py
        language: script
        args: ["-q"]
        types: ["yaml"]
        description: Check for any violations using the pyastrx.yaml config

Later on, I will ship this to be used in the pre-commit channels.

VsCode extension

Soon, I will ship a VS Code extension.

Explore the AST and XML

Using the :code: -i arg or adding a :code: interactive: true in your pyastrx.yaml you can explore the AST and XML parsed AST of your code. This can be useful to understand your code base and helps you to write you custom XPATH queries to be used in your project.

Folder exploration

Start the interactive interface

$ pyastrx -i -d path_to_folder (or just save that in yaml)

Press f and choose a file

Interactive interface

Choose the ast (t), xml (x) or code exploration (o)

Interactive interface

Learn!

Interactive interface Interactive interface

File exploration (one key-press distance)

Open the interactive with the python file

$ pyastrx -i -f path_to_file (or just save that in yaml)

Choose the ast (t), xml (x) or code exploration (o)

On the shoulders of giants

This project is possible only because of the work of several developers across the following projects:

lxml

One of the greatest Python libraries, downloaded over millions of time. Please, consider doing a donation to the lxml developers.

astpath

The PyASTrX started with the idea of using the astpath as a dependency, but I’ve decided to rewrite and redesign it to improve the maintainability and the usability features of PyASTrX. astpath is a great and simple tool developed by H. Chase Stevens.

GAST

GAST it’s a remarkable tool developed by Serge Sans Paille. GAST allows you to use the same XPATH expressions to analyze different code bases written in different python versions.

prompt_toolkit

A project created by Jonathan Slenders that

provides a powerful and reliable way to construct command-line interfaces.

This project has a lot of features, good documentation and the maintainers keep it well updated.

Metadata

Release files for pyastrx 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyastrx 0.6.1
File Size Uploaded
pyastrx-0.6.1.tar.gz 35.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyastrx 0.6.1
File Interpreter ABI Platform
pyastrx-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 75.0 kB

Release files / pyastrx-0.6.1.tar.gz

Download URL pyastrx-0.6.1.tar.gz
Size 35.2 kB
Tags Source
SHA-256 checksum
How to use checksums
56aab0117fc93e1ea3388a94ec53c645ffedf8dee80822ca0ab8484656b58a20
BLAKE2b-256 checksum
How to use checksums
017b36f6be622d4f1bc8de59873cfb10729ebb10e0a04afcb28cb9e9e12ea548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pyastrx-0.6.1-py3-none-any.whl

Download URL pyastrx-0.6.1-py3-none-any.whl
Size 39.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
902e3361495348022a53dc47b54bf3a28526f30900990edf917de8121a7e6c5f
BLAKE2b-256 checksum
How to use checksums
6f1680e00e7e71362451efc6e3e9246b18dc44deec244cbc3ad7d32603f1b2b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.2

1 release file

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

1 release file

0.1.2

1 release file

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page