Reads a python file/module and statically analyzes it.
Project description
textpy
Reads a python file/module and statically analyzes it. This works well with Jupyter extensions in VScode, and have better performance when the file/module is formatted with PEP-8.
Installation
$ pip install textpy
Requirements
lazyr>=0.0.3
pandas>=1.4.0 # A lower version is also acceptable, but some features will be invalid
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)
>>> res
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 in VScode, 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) |
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)
>>> res
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 3-Clause License.
History
v0.1.19
- Various improvements.
v0.1.18
- Updated LICENSE.
v0.1.17
- Refactored README.
v0.1.16
- Lazily imported pandas to reduce the time cost for importing.
v0.1.12
- New optional parameters for
TextPy.findall()
:whole_word
: whether to match whole words only;case_sensitive
: specifies case sensitivity.
v0.1.10
- New optional parameter for
textpy()
:encoding
: specifies encoding.
v0.1.9
- Removing unnecessary dependencies.
v0.1.8
- Bugfix for Windows.
v0.1.5
- Compatible with pandas versions lower than 1.4.0.
- Updated
textpy()
:Path
objects are now acceptable as parameters.- New optional parameter
home
to specify the home path.
- More flexible presentation of output from
TextPy.findall()
.
v0.1.4
- Fixed a display problem of README 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.19-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08d4591b7208808b36d48e8c1af27d16f1a367d960d9c52378666dfa67d8c98a |
|
MD5 | 26f111d31a96a30b8c80d771b64e6d5d |
|
BLAKE2b-256 | 5dcea29a44c91b9e4fcdb3ed455b40fe197903ebadbc94d403de12ed0c2ff333 |