Skip to content

Commit abce6c4

Browse files
Move to public repo, breaks history
0 parents  commit abce6c4

51 files changed

Lines changed: 8902 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# EditorConfig is awesome: https://EditorConfig.org
2+
3+
root = true
4+
5+
[*]
6+
charset = utf-8
7+
end_of_line = lf
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.py]
12+
indent_style = space
13+
indent_size = 4
14+
max_line_length = 100
15+
16+
[*.{yml,yaml}]
17+
indent_style = space
18+
indent_size = 2
19+
20+
[*.{json,toml}]
21+
indent_style = space
22+
indent_size = 2
23+
24+
[*.md]
25+
trim_trailing_whitespace = false

.env.example

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Example environment variables for development
2+
# Copy this file to .env and fill in your values
3+
4+
# Rencom API Key (get from https://app.rencom.ai)
5+
RENCOM_API_KEY=rk_...
6+
7+
# Optional: Custom API base URL for testing
8+
# RENCOM_API_URL=http://localhost:8000
9+
10+
# Optional: Enable SDK telemetry (opt-in)
11+
# RENCOM_TELEMETRY_ENABLED=false
12+
13+
# Optional: Logging level
14+
# LOG_LEVEL=INFO
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: Bug Report
2+
description: Report a bug in the Rencom SDK
3+
title: "[Bug]: "
4+
labels: ["bug", "triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to report a bug!
10+
11+
- type: input
12+
id: sdk-version
13+
attributes:
14+
label: SDK Version
15+
description: Output of `python -c "import rencom; print(rencom.__version__)"`
16+
placeholder: "0.1.0"
17+
validations:
18+
required: true
19+
20+
- type: input
21+
id: python-version
22+
attributes:
23+
label: Python Version
24+
description: Output of `python --version`
25+
placeholder: "3.12.0"
26+
validations:
27+
required: true
28+
29+
- type: dropdown
30+
id: api-environment
31+
attributes:
32+
label: API Environment
33+
description: Which API are you calling?
34+
options:
35+
- Production (https://api.rencom.ai)
36+
- Staging
37+
- Local development
38+
validations:
39+
required: true
40+
41+
- type: textarea
42+
id: description
43+
attributes:
44+
label: Description
45+
description: Clear description of the bug
46+
placeholder: What happened? What did you expect to happen?
47+
validations:
48+
required: true
49+
50+
- type: textarea
51+
id: reproduction
52+
attributes:
53+
label: Code to Reproduce
54+
description: Minimal code that reproduces the issue
55+
render: python
56+
placeholder: |
57+
import asyncio
58+
from rencom import AsyncRencomClient
59+
60+
async def main():
61+
client = AsyncRencomClient(api_key="rk_...")
62+
# Your code here
63+
validations:
64+
required: true
65+
66+
- type: textarea
67+
id: error
68+
attributes:
69+
label: Error Message
70+
description: Full error message and stack trace
71+
render: shell
72+
placeholder: |
73+
Traceback (most recent call last):
74+
...
75+
76+
- type: textarea
77+
id: additional
78+
attributes:
79+
label: Additional Context
80+
description: Any other information that might help
81+
placeholder: Environment details, related issues, etc.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Feature Request
2+
description: Suggest a new feature for the SDK
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for suggesting a feature!
10+
11+
- type: textarea
12+
id: problem
13+
attributes:
14+
label: Problem
15+
description: What problem does this feature solve?
16+
placeholder: I'm always frustrated when...
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: solution
22+
attributes:
23+
label: Proposed Solution
24+
description: How should this work?
25+
placeholder: I'd like to be able to...
26+
validations:
27+
required: true
28+
29+
- type: textarea
30+
id: alternatives
31+
attributes:
32+
label: Alternatives Considered
33+
description: What other approaches have you considered?
34+
35+
- type: textarea
36+
id: example
37+
attributes:
38+
label: Example Usage
39+
description: Show how the feature would be used
40+
render: python
41+
placeholder: |
42+
# Example code showing the desired API
43+
result = await client.new_feature()

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
## Description
2+
3+
<!-- Brief description of the changes -->
4+
5+
## Type of Change
6+
7+
<!-- Mark with an 'x' -->
8+
9+
- [ ] Bug fix (non-breaking change which fixes an issue)
10+
- [ ] New feature (non-breaking change which adds functionality)
11+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
12+
- [ ] Documentation update
13+
- [ ] Code refactoring
14+
- [ ] Performance improvement
15+
- [ ] Tests
16+
17+
## Changes Made
18+
19+
<!-- List the main changes -->
20+
21+
-
22+
-
23+
-
24+
25+
## Testing
26+
27+
<!-- Describe how you tested your changes -->
28+
29+
- [ ] Added/updated unit tests
30+
- [ ] Added/updated integration tests
31+
- [ ] Tested examples still work
32+
- [ ] All tests pass locally
33+
34+
## Documentation
35+
36+
<!-- Documentation updates -->
37+
38+
- [ ] Updated docstrings
39+
- [ ] Updated README.md if needed
40+
- [ ] Updated CHANGELOG.md
41+
- [ ] Added/updated examples
42+
43+
## Checklist
44+
45+
- [ ] Code follows the project's style guidelines
46+
- [ ] Self-review of code completed
47+
- [ ] Code is well-commented
48+
- [ ] No new warnings generated
49+
- [ ] Tests added/updated and passing
50+
- [ ] Documentation updated
51+
- [ ] No breaking changes (or clearly documented)
52+
53+
## Related Issues
54+
55+
<!-- Link related issues -->
56+
57+
Closes #
58+
Related to #

.github/workflows/publish.yml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
name: Publish to PyPI
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # Trigger on version tags like v0.1.0, v1.0.0, etc.
7+
workflow_dispatch: # Allow manual trigger
8+
9+
jobs:
10+
test:
11+
name: Run Tests
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Set up Python
17+
uses: actions/setup-python@v5
18+
with:
19+
python-version: '3.10'
20+
21+
- name: Install uv
22+
run: curl -LsSf https://astral.sh/uv/install.sh | sh
23+
24+
- name: Install dependencies
25+
run: |
26+
uv sync --extra dev
27+
28+
- name: Run tests
29+
run: |
30+
uv run pytest tests/unit/ -v --cov=rencom
31+
32+
- name: Type check
33+
run: |
34+
uv run mypy rencom/ --ignore-missing-imports || true
35+
36+
- name: Lint
37+
run: |
38+
uv run ruff check . || true
39+
40+
build:
41+
name: Build Distribution
42+
needs: test
43+
runs-on: ubuntu-latest
44+
steps:
45+
- uses: actions/checkout@v4
46+
47+
- name: Set up Python
48+
uses: actions/setup-python@v5
49+
with:
50+
python-version: '3.10'
51+
52+
- name: Install uv
53+
run: curl -LsSf https://astral.sh/uv/install.sh | sh
54+
55+
- name: Build package
56+
run: uv build
57+
58+
- name: Check package
59+
run: |
60+
uv pip install twine
61+
uv run twine check dist/*
62+
63+
- name: Upload artifacts
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: dist
67+
path: dist/
68+
69+
publish-testpypi:
70+
name: Publish to TestPyPI
71+
needs: build
72+
runs-on: ubuntu-latest
73+
environment:
74+
name: testpypi
75+
url: https://test.pypi.org/project/rencom/
76+
permissions:
77+
id-token: write # For trusted publishing
78+
79+
steps:
80+
- name: Download artifacts
81+
uses: actions/download-artifact@v4
82+
with:
83+
name: dist
84+
path: dist/
85+
86+
- name: Publish to TestPyPI
87+
uses: pypa/gh-action-pypi-publish@release/v1
88+
with:
89+
repository-url: https://test.pypi.org/legacy/
90+
skip-existing: true
91+
92+
publish-pypi:
93+
name: Publish to PyPI
94+
needs: [build, publish-testpypi]
95+
runs-on: ubuntu-latest
96+
environment:
97+
name: pypi
98+
url: https://pypi.org/project/rencom/
99+
permissions:
100+
id-token: write # For trusted publishing
101+
102+
steps:
103+
- name: Download artifacts
104+
uses: actions/download-artifact@v4
105+
with:
106+
name: dist
107+
path: dist/
108+
109+
- name: Publish to PyPI
110+
uses: pypa/gh-action-pypi-publish@release/v1
111+
112+
create-release:
113+
name: Create GitHub Release
114+
needs: publish-pypi
115+
runs-on: ubuntu-latest
116+
permissions:
117+
contents: write
118+
steps:
119+
- uses: actions/checkout@v4
120+
121+
- name: Extract version from tag
122+
id: version
123+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
124+
125+
- name: Extract changelog
126+
id: changelog
127+
run: |
128+
VERSION=${{ steps.version.outputs.VERSION }}
129+
# Extract section for this version from CHANGELOG.md
130+
sed -n "/## \[${VERSION}\]/,/## \[/p" CHANGELOG.md | sed '$d' > release_notes.md
131+
132+
- name: Create Release
133+
uses: softprops/action-gh-release@v1
134+
with:
135+
name: Release v${{ steps.version.outputs.VERSION }}
136+
body_path: release_notes.md
137+
draft: false
138+
prerelease: false

0 commit comments

Comments
 (0)