Metadata-Version: 2.1
Name: trace-attributes
Version: 1.0.0
Summary: LangTrace - Trace Attributes
Home-page: https://github.com/Scale3-Labs/langtrace-trace-attributes
Author: Karthik Kalyanaraman
Author-email: karthik@scale3labs.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: pydantic >=1.8

# LangTrace - Trace Attributes

This repository hosts the JSON schema definitions and the generated model code for both Python and TypeScript. It's designed to streamline the development process across different programming languages, ensuring consistency in data structure and validation logic. The repository includes tools for automatically generating model code from JSON schema definitions, simplifying the task of keeping model implementations synchronized with schema changes.

## Repository Structure

```
/
├── schemas/                      # JSON schema definitions
│   └── openai_span_attributes.json
├── scripts/                      # Shell scripts for model generation
│   └── generate_python.sh
├── generated/                    # Generated model code
│   ├── python/                   # Python models
│   └── typescript/               # TypeScript interfaces
├── package.json
├── requirements.txt
├── README.md
└── .gitignore
```

## Prerequisites

Before you begin, make sure you have the following installed on your system:
- Node.js and npm
- Python and pip
- `ts-node` for running TypeScript scripts directly (install globally via `npm install -g ts-node`)
- `datamodel-code-generator` for Python model generation (install via `pip install datamodel-code-generator`)

## Generating Models

### Python Models

To generate Python models from a JSON schema, use the `generate_python.sh` script located in the `scripts` directory. This script takes the path to a JSON schema file as an argument and generates a Python model in the `generated/python` directory.

```sh
./scripts/generate_python.sh schemas/openai_span_attributes.json
```

### TypeScript Interfaces

To generate TypeScript interfaces from a JSON schema, use the `schema_to_interface.ts` script located in the `src/models` directory. This script also takes the path to a JSON schema file as an argument and generates a TypeScript interface in the `generated/typescript` directory.

```sh
ts-node src/models/schema_to_interface.ts schemas/openai_span_attributes.json
```

To include instructions for building and uploading your Python package to PyPI, as well as how to automate this process using GitHub Actions, you can update your `README.md` file with the following sections:

---

## Building and Uploading Your Package to PyPI

This guide provides instructions on how to manually build your Python package and upload it to the Python Package Index (PyPI), as well as how to automate this process using GitHub Actions.

### Manual Upload to PyPI

To manually upload your package to PyPI, follow these steps:

### Prerequisites

Ensure you have the latest versions of `setuptools`, `wheel`, and `twine` installed:

```sh
pip install --upgrade setuptools wheel twine
```

### Building Your Package

Navigate to your project root (where `setup.py` is located) and run:

```sh
python setup.py sdist bdist_wheel
```

This command generates distribution archives in the `dist/` directory.

### Uploading Your Package

To upload your package to PyPI, use `twine`:

```sh
twine upload dist/*
```

You'll be prompted for your PyPI username and password. For token-based authentication, your username is `__token__`, and your password is the PyPI token.

### Generating a PyPI Token

1. Log in to your PyPI account.
2. Navigate to **Account Settings** > **API tokens** > **Add API token**.
3. Follow the prompts to generate a new token.
4. Use this token with `twine` for uploading your package.

## Contributing

Contributions are welcome! If you'd like to add a new schema or improve the existing model generation process, please follow these steps:

1. Fork the repository.
2. Create a new branch for your feature or fix.
3. Make your changes.
4. Test your changes to ensure the generated models are correct.
5. Submit a pull request with a clear description of your changes.

## License

This project is licensed under the [MIT License](LICENSE). See the LICENSE file for more details.

---

This README provides a comprehensive overview of the repository, including its purpose, structure, prerequisites for generating models, and guidelines for contributing. Adjust any paths, installation commands, or other details as necessary to fit your project's specific setup and requirements.
