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
License
This project falls under the BSD 2-Clause License.
History
v0.1.5
- Compatible with pandas versions lower than 1.4.0.
- Updated
textpy
:Path
objects are now acceptable as parameters, which could only be strings previously.- New optional parameter
home
to specify the home path.
- More flexible presentation of output when using
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.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff259267a74dc872eaf6eec91a4b7e551094c0501e349e051927ca76d1d47bb3 |
|
MD5 | 30e5691eb1dee616168888fc0fecf922 |
|
BLAKE2b-256 | d21e07b8b0da984d3e9da070e12cc7e33ee435583dd7cd56a0d2d9dbc449b67c |