Metadata-Version: 2.1
Name: codemodimportfrom
Version: 0.8.0
Summary: 
Author: Your Name
Author-email: you@example.com
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: libcst (>=1.1.0,<2.0.0)
Requires-Dist: typer (>=0.9.0,<0.10.0)
Description-Content-Type: text/markdown

# codemodimportfrom

[![CI](https://github.com/Peter554/codemodimportfrom/actions/workflows/ci.yml/badge.svg)](https://github.com/Peter554/codemodimportfrom/actions/workflows/ci.yml)

Automatically update ImportFrom statements to "import modules, not objects".

## Install

From within your project's virtual environment, install `codemodimportfrom` (as a dev dependency). e.g.

```sh
pip install codemodimportfrom
```

## Usage

```sh
# Transform all ImportFrom statements in the file path/to/file.py
codemodimportfrom path/to/file.py

# Overwrite the file
codemodimportfrom path/to/file.py --write

# Transform ImportFrom statements for modules "foo" and "bar" only
codemodimportfrom path/to/file.py --module foo --module bar

# Allow object imports for "typing.Optional" and "typing.Union"
codemodimportfrom path/to/file.py --allow typing.Optional --allow typing.Union

# Allow all object imports from typing
codemodimportfrom path/to/file.py --allow typing.*

# Parse allow list from a .txt file (one line per allowed object import)
codemodimportfrom path/to/file.py --allow allow.txt

# Also transform module imports 
# e.g. `from pydantic import dataclasses` becomes `import pydantic.dataclasses`
codemodimportfrom path/to/file.py --transform-module-imports
```

## Caveats

* Not tested with much real world code, yet.
* Relative imports (`from . import foo`) not implemented yet.

