Reads a python file/module and statically analyzes it.
Project description
textpy
Reads a python file/module and statically analyzes it.
Installation
pip install textpy
Requirements
pandas>=1.4.0 # A lower version is also acceptable, but some features will be invalid
attrs>=23.1.0
Examples
Create a new file named myfile.py
under ./examples/
(or any dir, just for an example):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from typing import *
class MyClass:
def __init__(self):
"""Write something."""
self.var_1 = "hahaha"
self.var_2 = "blabla"
def print_my_class(a: MyClass):
"""
Print something.
Parameters
----------
a : ThisIsAClass
An object.
"""
print(a.var_1, a.var_2)
Run the following codes to find all the occurrences of the pattern "va"
in myfile.py
:
from textpy import textpy
res = textpy("./examples/myfile.py").findall("va", styler=False)
print(res)
# Output:
# examples/myfile.py:10: ' self.var_1 = "hahaha"'
# examples/myfile.py:11: ' self.var_2 = "blabla"'
# examples/myfile.py:24: ' print(a.var_1, a.var_2)'
Also, when using a Jupyter notebook, you can run a cell like this:
from textpy import textpy
textpy("./examples/myfile.py").findall("va")
and the output will be like:
source | match |
---|---|
myfile.MyClass.__init__:10 | self.var_1 = "hahaha" |
myfile.MyClass.__init__:11 | self.var_2 = "blabla" |
myfile.print_my_class:24 | print(a.var_1, a.var_2) |
Note that in the Jupyter notebook case, the matched substrings are clickable, linking to where the patterns were found.
Now suppose you've got a python module consists of a few files, for example, our textpy
module itself, you can do almost the same thing:
module_path = "textpy/" # you can type any path here
pattern = "note.*k" # type any regular expression here
res = textpy(module_path).findall("note.*k", styler=False, line_numbers=False)
print(res)
# Output:
# textpy/abc.py: ' in a Jupyter notebook, this only takes effect when'
# textpy/abc.py: ' in a Jupyter notebook.'
See Also
Github repository
PyPI project
License
This project falls under the BSD 2-Clause License.
History
v0.1.8
- Bugfix for Windows.
v0.1.5
- Compatible with pandas versions lower than 1.4.0.
- Updated
textpy.textpy
:Path
objects are now acceptable as parameters.- New optional parameter
home
to specify the home path.
- More flexible presentation of output when using
textpy.TextPy.findall
.
v0.1.4
- Fixed a display problem of
README.md
on PyPI.
v0.1.3
- Initial release.
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 Distributions
Built Distribution
Hashes for textpy-0.1.8-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f0f28b1f23ca910092c9f1f6ac5e46c1a15c11a33215ee4f571dd0c78b9965f |
|
MD5 | 6a2bdd411f877583b99317bd65b0aa94 |
|
BLAKE2b-256 | bab21c92f6dd62d20628216f6ddfb5778a392108cbc5e2b8d271d65f08bcb988 |