Skip to main content

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.

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.10

  • Updated textpy.textpy:
    • New optional parameter 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.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

textpy-0.1.10-py2.py3-none-any.whl (13.2 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page