Skip to main content

Find the Python code for specified symbols

Project description

symbex

PyPI Changelog Tests License

Find the Python code for specified symbols

Installation

Install this tool using pip:

pip install symbex

Usage

symbex can search for names of functions and classes that occur at the top level of a Python file.

To search every .py file in your current directory and all subdirectories, run like this:

symbex my_function

You can search for more than one symbol at a time:

symbex my_function MyClass

Wildcards are supported - to search for every test_ function run this (note the single quotes to avoid the shell interpreting the * as a wildcard):

symbex 'test_*'

To search within a specific file, pass that file using the -f option. You can pass this more than once to search multiple files.

symbex MyClass -f my_file.py

To search within a specific directory and all of its subdirectories, use the -d option:

symbex Database -d ~/projects/datasette

Example output

In a fresh checkout of Datasette I ran this command:

symbex MessagesDebugView get_long_description

Here's the output of the command:

# File: setup.py Line: 5
def get_long_description():
    with open(
        os.path.join(os.path.dirname(os.path.abspath(__file__)), "README.md"),
        encoding="utf8",
    ) as fp:
        return fp.read()

# File: datasette/views/special.py Line: 60
class PatternPortfolioView(View):
    async def get(self, request, datasette):
        await datasette.ensure_permissions(request.actor, ["view-instance"])
        return Response.html(
            await datasette.render_template(
                "patterns.html",
                request=request,
                view_name="patterns",
            )
        )

Using with LLM

This tool is primarily designed to be used with LLM, a CLI tool for working with Large Language Models.

symbex makes it easy to grab a specific class or function and pass it to the llm command.

For example, I ran this in the Datasette repository root:

symbex Response | llm --system 'Explain this code, succinctly'

And got back this:

This code defines a custom Response class with methods for returning HTTP responses. It includes methods for setting cookies, returning HTML, text, and JSON responses, and redirecting to a different URL. The asgi_send method sends the response to the client using the ASGI (Asynchronous Server Gateway Interface) protocol.

Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd symbex
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest

Project details


Download files

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

Source Distribution

symbex-0.2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

symbex-0.2-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file symbex-0.2.tar.gz.

File metadata

  • Download URL: symbex-0.2.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for symbex-0.2.tar.gz
Algorithm Hash digest
SHA256 93c9f1125f49d28717f5b053acc3edc8b01dd2b368df6ac47c17944573b1cac6
MD5 47a48fb6af794659155d4079b3517823
BLAKE2b-256 3e9581791c2a55bcd711e9af55d49e790a4b08c2ba93a71f2daa355c60252fc0

See more details on using hashes here.

File details

Details for the file symbex-0.2-py3-none-any.whl.

File metadata

  • Download URL: symbex-0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for symbex-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 88fe6a44fc1877b4500dd17a918dccc6921e146375da520e9dfa9812eb11111e
MD5 0eccab3be340c831f122f037b7431ea2
BLAKE2b-256 9df4e82f36420878928d3864d9d43eaac43ccbd43d3500f0c59d3229a8173a2e

See more details on using hashes here.

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