Metadata-Version: 2.4
Name: text2ics
Version: 0.1.1
Summary: A Python tool to convert unstructured text into an ICS calendar file using an LLM.
Project-URL: Homepage, https://github.com/jakob1379/text2ics
Project-URL: Repository, https://github.com/jakob1379/text2ics
Project-URL: Bug Tracker, https://github.com/jakob1379/text2ics/issues
Author-email: Jakob Stender Guldberg <jakob1379@gmail.com>
License: MIT
License-File: LICENSE
Keywords: ai,calendar,ics,llm,streamlit,text-processing
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Topic :: Text Processing
Requires-Python: >=3.13
Requires-Dist: icalendar>=6.3.1
Requires-Dist: litellm>=1.74.0
Requires-Dist: promptic>=5.5.1
Requires-Dist: python-dotenv>=1.1.1
Requires-Dist: streamlit>=1.46.1
Requires-Dist: tenacity>=9.1.2
Requires-Dist: typer>=0.16.0
Description-Content-Type: text/markdown

# text2ics

A Python tool to convert unstructured text into an ICS calendar file using an LLM.
It provides both a command-line interface (CLI) and a Streamlit web application.

## 💾 Installation
Ensure you have Python installed, then clone the repository and install the dependencies.

```bash
# using pip
pip install text2ics

# or run directly with uv
uvx text2ics
```

You will also need an API key for a compatible LLM service (like OpenAI).

## 🚀 Usage

### Command-Line Interface (CLI)

The CLI allows you to convert a text file to an ICS file directly. Set your API key as an environment variable first.

```bash
export <OPENAI|CLAUDE|GEMINI>_API_KEY="your-api-key"
text2ics path/to/your/textfile.txt > events.ics
```

For more options, run `text2ics --help`.

### Streamlit Web App

The web app provides an interactive way to convert text.

```bash
streamlit run app/app.py
```

Open your browser to the URL provided by Streamlit to use the application.

## 🧱 Development
This project uses `uv` for dependency management and `poethepoet` for running tasks.

Install all dependencies, including for development:
```bash
uv sync --all-extras
```

Run common development tasks:
```bash
uv run poe fmt   # Format code
uv run poe lint  # Lint and fix
uv run poe check # Type-check
uv run poe test  # Run tests
uv run poe all   # Run all checks
```

## 🦺 CI/CD
The repository is set up with GitHub Actions to automate checks on pull requests and to handle releases.
- **[pr.yml](.github/workflows/pr.yml):** Validates pull requests.
- **[release.yml](.github/workflows/release.yml):** Manages releases to PyPI.
