Metadata-Version: 2.4
Name: damascus
Version: 0.1.4
Summary: Fast, modern, and open-source OpenAPI SDK Generator
Home-page: https://github.com/beshu-tech/damascus
Author: Beshu Limited
Author-email: info@beshu.tech
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: pyyaml
Requires-Dist: jinja2
Requires-Dist: certifi
Requires-Dist: charset-normalizer
Requires-Dist: click
Requires-Dist: idna
Requires-Dist: markupsafe
Requires-Dist: packaging
Requires-Dist: typing-extensions
Requires-Dist: urllib3
Provides-Extra: dev
Requires-Dist: black==25.1.0; extra == "dev"
Requires-Dist: coverage==7.8.0; extra == "dev"
Requires-Dist: flake8==7.2.0; extra == "dev"
Requires-Dist: iniconfig==2.1.0; extra == "dev"
Requires-Dist: isort==6.0.1; extra == "dev"
Requires-Dist: mccabe==0.7.0; extra == "dev"
Requires-Dist: mypy==1.15.0; extra == "dev"
Requires-Dist: mypy-extensions==1.0.0; extra == "dev"
Requires-Dist: pathspec==0.12.1; extra == "dev"
Requires-Dist: platformdirs==4.3.7; extra == "dev"
Requires-Dist: pluggy==1.5.0; extra == "dev"
Requires-Dist: pycodestyle==2.13.0; extra == "dev"
Requires-Dist: pyflakes==3.3.2; extra == "dev"
Requires-Dist: pytest==8.3.5; extra == "dev"
Requires-Dist: pytest-cov==6.1.1; extra == "dev"
Requires-Dist: responses==0.25.7; extra == "dev"
Requires-Dist: uv==0.6.14; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: types-pyyaml; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

<p align="center">
  <img src="https://github.com/beshu-tech/damascus/raw/main/logo.png" alt="Damascus Logo" width="250" />
</p>

# Damascus - OpenAPI SDK Generator

![License](https://img.shields.io/badge/license-GPLv3-blue.svg)
![Python](https://img.shields.io/badge/python-3.8%2B-green.svg)

Damascus is a powerful Python-based SDK generator that transforms OpenAPI specifications into elegant, type-safe client libraries. Generate professional client SDKs for your API with minimal effort.

## Key Features

- **Full Response Models**: Converts API schemas into proper Python dataclasses
- **Type Safety**: Comprehensive type annotations for modern Python development
- **Authentication Support**: Handles API key, Bearer token and other auth methods
- **Multiple Input Sources**: Generate from local JSON files or remote URLs
- **Template-Based**: Easily customizable code generation via Jinja2 templates
- **Python Version Targeting**: Generate code optimized for specific Python versions

## Installation

Using pip:
```bash
pip install damascus
```

Using uv (recommended):
```bash
uv pip install damascus
```

## Requirements

- **Runtime**: Python 3.8+
- **Development**: Python 3.10+ recommended for modern type hints
- **Dependencies**: Jinja2 for templating

## Quick Start

### CLI Usage

Generate an SDK from an OpenAPI specification:

```bash
# From a local file
damascus generate ./path/to/openapi.json --output my_sdk

# From a URL
damascus generate https://api.example.com/openapi.json --output my_sdk

# With custom headers (for protected specs)
damascus generate https://api.example.com/openapi.json --header "Authorization: Bearer token123" --output my_sdk
```

### SDK Usage

Once generated, using the SDK is straightforward:

```python
from my_sdk import Client

# Initialize client
client = Client(
    base_url="https://api.example.com",
    api_key="your-api-key"
)

# Call API methods - responses are typed objects
response = client.get_user(user_id=123)
print(f"User name: {response.name}")
```

## Documentation

Comprehensive documentation is available in the [docs/](docs/) directory:

- [CLI Usage Guide](docs/cli.md)
- [SDK Generation Options](docs/sdkgen.md)
- [Template Customization](docs/templates.md)

## Contributing

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

## License

Damascus is licensed under the GNU General Public License v3.0 (GPLv3) - see the [LICENSE](LICENSE) file for details.

## About

Damascus is created and maintained by [Beshu Limited](https://beshu.tech), a UK company based in London, established in 2017.

Beshu Limited is best known for:
- [ReadonlyREST](https://readonlyrest.com/): Security for Elasticsearch and Kibana
- [Anaphora](https://anaphora.it/): Automated reporting and alerting for Kibana
