Skip to main content

A developer utility to isolate, analyze, and compose Python code dependencies.

Project description

deph: Isolate, Analyze, and Compose Your Python Code

PyPI version License: MIT Tests Python Versions

deph is a developer utility designed to untangle Python codebases. It traces and isolates all the necessary source code for a specific function or class (an "endpoint"), analyzes its dependencies, and then composes the code into a clean, self-contained module.

This is especially powerful for code developed in interactive environments like Jupyter Notebooks, where dependencies can be scattered and implicit. deph helps you extract a piece of logic—like a model's prediction function or a data processing pipeline—from a complex notebook or script and prepare it for refactoring, testing, or future packaging.

Key Features

  • Endpoint-based Code Isolation: Pinpoint a function or class, and deph will recursively find all internal dependencies (other functions, classes, global variables) required for it to run.
  • Dependency Analysis: Automatically identifies the standard library, third-party, and local modules your isolated code depends on.
  • Source Code Composition: Gathers all the required source code and assembles it into a single, clean Python module, ready for use in a new context.
  • Jupyter-Aware: Works inside Jupyter Notebook/Lab by analyzing the live Python session (in-memory functions, classes, variables, and imports).

Why Use deph? (The Problem)

Imagine you have a large Jupyter Notebook used for exploratory data analysis. It contains a critical function for training a model, but its helper functions and imports are spread across dozens of cells. To move that training logic into a production pipeline, you would have to:

  1. Manually copy-paste the main function.
  2. Hunt down every helper function it calls.
  3. Figure out which import statements are actually needed.
  4. Repeat this process until the code runs without errors.

deph automates this. It answers the question: "What is the absolute minimum code and which libraries are required to run this specific function?"

Use Cases:

  • Isolating logic from a monolithic script to create a reusable module.
  • Extracting a specific feature from a Jupyter Notebook to create a standalone script.
  • Preparing a piece of logic to be packaged into a library or deployed as a service.
  • Understanding the true dependencies of a specific part of your application.

Installation

# Core library
python -m pip install deph

# Test dependencies (used only by the test suite)
python -m pip install "deph[test]"

Quickstart

Let's say you have a Python file my_model.py containing a function train_model that you want to isolate.

# my_model.py
import pandas as pd

def preprocess(data):
    return data.dropna()

def train_model(df: pd.DataFrame):
    processed_df = preprocess(df)
    # ... training logic ...
    return "Model trained!"

You can use deph's high-level functions to isolate train_model and all its local dependencies (like preprocess):

from deph import isolate, analyze
from my_model import train_model

# 1) Analyze the target to inspect dependencies
report = analyze(train_model)
print("--- IMPORTS ---")
print(report["imports"])  # Dict by module with ImportItem entries

# 2) Isolate the target function to get the composed code result
result = isolate(train_model)

# 3) Print the results
print("--- ISOLATED SOURCE CODE ---")
print(result.source)

print("\n--- IDENTIFIED DEPENDENCIES ---")
print(report.get("imports"))

# Extras available on result:
# - result.warnings   (list of unresolved names; also printed to stderr)
# - result.reqs_pypi  (inferred non-stdlib PyPI packages)
# - result.reqs_unknown (non-stdlib, not resolvable on PyPI)

Utilities (Optional)

deph.utils includes a few lightweight helpers used in examples:

  • deph.utils.log: simple console/file logging configuration
  • deph.utils.zip: ZIP archive helpers
  • deph.utils.pip: a thin wrapper around pip

This will produce a self-contained script with `train_model`, `preprocess`, and the necessary `import pandas as pd` statement, along with a detailed dependency report.

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

deph-1.1.0.tar.gz (57.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deph-1.1.0-py3-none-any.whl (54.4 kB view details)

Uploaded Python 3

File details

Details for the file deph-1.1.0.tar.gz.

File metadata

  • Download URL: deph-1.1.0.tar.gz
  • Upload date:
  • Size: 57.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for deph-1.1.0.tar.gz
Algorithm Hash digest
SHA256 cdcd227bd9364bb64f137822f33d138089956f5d2a5c6e8f68f1b5fd17ad32d6
MD5 1703e4f1a9bfa1d5bb9ffbe2e0c7e068
BLAKE2b-256 06287f6f4e66afd2d80ee5baa41f6f435c840978278198b94fbfc8b10686238f

See more details on using hashes here.

Provenance

The following attestation bundles were made for deph-1.1.0.tar.gz:

Publisher: python-publish.yml on dvm-shlee/deph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deph-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: deph-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 54.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for deph-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f92a40ebb7f7935982d05e12ea0779f906b78444303bafcf53e1dbbe2ba7829
MD5 078598323d992d5bffaf1a2bb8b57028
BLAKE2b-256 1f43d0b5e2dcab44a917a6b960daacedb38c7bccf34271d444a8945bc4a90280

See more details on using hashes here.

Provenance

The following attestation bundles were made for deph-1.1.0-py3-none-any.whl:

Publisher: python-publish.yml on dvm-shlee/deph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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