python-kanka 2.2.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.bumpversion.cfg +5 -1
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.github/renovate.json +2 -1
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.github/workflows/ci.yml +12 -18
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.github/workflows/publish.yml +20 -24
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.gitignore +1 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/.pre-commit-config.yaml +4 -4
- {python_kanka-2.2.0 → python_kanka-2.3.0}/CLAUDE.md +62 -2
- {python_kanka-2.2.0 → python_kanka-2.3.0}/Makefile +24 -16
- {python_kanka-2.2.0/src/python_kanka.egg-info → python_kanka-2.3.0}/PKG-INFO +28 -45
- {python_kanka-2.2.0 → python_kanka-2.3.0}/README.md +11 -1
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/migration.py +42 -84
- {python_kanka-2.2.0 → python_kanka-2.3.0}/pyproject.toml +61 -5
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/_version.py +1 -1
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/client.py +8 -8
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/managers.py +16 -24
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/models/base.py +9 -10
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/models/common.py +18 -18
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/models/entities.py +50 -52
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/types.py +1 -2
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/base.py +5 -4
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/run_integration_tests.py +1 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/utils.py +4 -4
- python_kanka-2.3.0/uv.lock +1166 -0
- python_kanka-2.2.0/PKG-INFO +0 -377
- python_kanka-2.2.0/dev-requirements.txt +0 -20
- python_kanka-2.2.0/requirements.txt +0 -3
- python_kanka-2.2.0/setup.cfg +0 -4
- python_kanka-2.2.0/setup.py +0 -72
- python_kanka-2.2.0/src/python_kanka.egg-info/SOURCES.txt +0 -78
- python_kanka-2.2.0/src/python_kanka.egg-info/dependency_links.txt +0 -1
- python_kanka-2.2.0/src/python_kanka.egg-info/not-zip-safe +0 -1
- python_kanka-2.2.0/src/python_kanka.egg-info/requires.txt +0 -13
- python_kanka-2.2.0/src/python_kanka.egg-info/top_level.txt +0 -1
- {python_kanka-2.2.0 → python_kanka-2.3.0}/API_REFERENCE.md +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/CHANGELOG.md +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/LICENSE +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/MANIFEST.in +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/PUBLISHING.md +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/crud_operations.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/error_handling.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/filtering.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/posts.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/examples/quickstart.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/pytest.ini +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/__init__.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/exceptions.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/models/__init__.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/src/kanka/py.typed +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/__init__.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/README.md +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/__init__.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/full_test_output_fixed.txt +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/setup_test_env.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_calendars_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_calendars_simple.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_characters_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_creatures_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_entities_api_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_entity_tags_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_events_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_families_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_journals_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_locations_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_mentions_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_notes_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_organisations_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_posts_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_quests_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_races_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_rate_limiting.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_search_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_tag_colour.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/integration/test_tags_integration.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/mypy.ini +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_client.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_client_advanced.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_entity_models.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_exceptions.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_managers.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_models.py +0 -0
- {python_kanka-2.2.0 → python_kanka-2.3.0}/tests/test_models_advanced.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[bumpversion]
|
|
2
|
-
current_version = 2.
|
|
2
|
+
current_version = 2.3.0
|
|
3
3
|
commit = True
|
|
4
4
|
tag = True
|
|
5
5
|
tag_name = v{new_version}
|
|
@@ -8,3 +8,7 @@ message = Bump version: {current_version} → {new_version}
|
|
|
8
8
|
[bumpversion:file:src/kanka/_version.py]
|
|
9
9
|
search = __version__ = "{current_version}"
|
|
10
10
|
replace = __version__ = "{new_version}"
|
|
11
|
+
|
|
12
|
+
[bumpversion:file:pyproject.toml]
|
|
13
|
+
search = version = "{current_version}"
|
|
14
|
+
replace = version = "{new_version}"
|
|
@@ -12,42 +12,36 @@ jobs:
|
|
|
12
12
|
strategy:
|
|
13
13
|
fail-fast: false
|
|
14
14
|
matrix:
|
|
15
|
-
python-version: ["3.
|
|
15
|
+
python-version: ["3.12", "3.13", "3.14"]
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
|
|
20
|
-
- name:
|
|
21
|
-
uses:
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v7
|
|
22
22
|
with:
|
|
23
|
-
|
|
23
|
+
enable-cache: true
|
|
24
|
+
cache-dependency-glob: "uv.lock"
|
|
24
25
|
|
|
25
|
-
- name:
|
|
26
|
-
|
|
27
|
-
with:
|
|
28
|
-
path: ~/.cache/pip
|
|
29
|
-
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt', '**/dev-requirements.txt') }}
|
|
30
|
-
restore-keys: |
|
|
31
|
-
${{ runner.os }}-pip-
|
|
26
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
27
|
+
run: uv python install ${{ matrix.python-version }}
|
|
32
28
|
|
|
33
29
|
- name: Install dependencies
|
|
34
30
|
run: |
|
|
35
|
-
|
|
36
|
-
pip install -
|
|
37
|
-
pip install -r dev-requirements.txt
|
|
38
|
-
pip install -e .
|
|
31
|
+
uv sync --all-groups
|
|
32
|
+
uv pip install -e .
|
|
39
33
|
|
|
40
34
|
- name: Run all quality checks
|
|
41
35
|
run: |
|
|
42
36
|
make check
|
|
43
37
|
|
|
44
38
|
- name: Generate coverage report
|
|
45
|
-
if: matrix.python-version == '3.
|
|
39
|
+
if: matrix.python-version == '3.14'
|
|
46
40
|
run: |
|
|
47
41
|
make coverage
|
|
48
42
|
|
|
49
43
|
- name: Upload coverage reports to Codecov
|
|
50
|
-
if: matrix.python-version == '3.
|
|
44
|
+
if: matrix.python-version == '3.14'
|
|
51
45
|
uses: codecov/codecov-action@v5
|
|
52
46
|
env:
|
|
53
47
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -16,22 +16,24 @@ jobs:
|
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
strategy:
|
|
18
18
|
matrix:
|
|
19
|
-
python-version: ["3.
|
|
19
|
+
python-version: ["3.12", "3.13", "3.14"]
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
23
|
|
|
24
|
-
- name:
|
|
25
|
-
uses:
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v7
|
|
26
26
|
with:
|
|
27
|
-
|
|
27
|
+
enable-cache: true
|
|
28
|
+
cache-dependency-glob: "uv.lock"
|
|
29
|
+
|
|
30
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
31
|
+
run: uv python install ${{ matrix.python-version }}
|
|
28
32
|
|
|
29
33
|
- name: Install dependencies
|
|
30
34
|
run: |
|
|
31
|
-
|
|
32
|
-
pip install -
|
|
33
|
-
pip install -r dev-requirements.txt
|
|
34
|
-
pip install -e .
|
|
35
|
+
uv sync --all-groups
|
|
36
|
+
uv pip install -e .
|
|
35
37
|
|
|
36
38
|
- name: Run all quality checks
|
|
37
39
|
run: |
|
|
@@ -41,26 +43,20 @@ jobs:
|
|
|
41
43
|
needs: test
|
|
42
44
|
runs-on: ubuntu-latest
|
|
43
45
|
steps:
|
|
44
|
-
- uses: actions/checkout@
|
|
46
|
+
- uses: actions/checkout@v6
|
|
45
47
|
|
|
46
|
-
- name:
|
|
47
|
-
uses:
|
|
48
|
-
with:
|
|
49
|
-
python-version: '3.13'
|
|
48
|
+
- name: Install uv
|
|
49
|
+
uses: astral-sh/setup-uv@v7
|
|
50
50
|
|
|
51
|
-
- name:
|
|
52
|
-
run:
|
|
53
|
-
python -m pip install --upgrade pip
|
|
54
|
-
pip install build twine
|
|
51
|
+
- name: Set up Python
|
|
52
|
+
run: uv python install 3.14
|
|
55
53
|
|
|
56
54
|
- name: Build package
|
|
57
|
-
run:
|
|
58
|
-
|
|
59
|
-
- name: Check package
|
|
60
|
-
run: twine check dist/*
|
|
55
|
+
run: |
|
|
56
|
+
uv build
|
|
61
57
|
|
|
62
58
|
- name: Upload artifacts
|
|
63
|
-
uses: actions/upload-artifact@
|
|
59
|
+
uses: actions/upload-artifact@v5
|
|
64
60
|
with:
|
|
65
61
|
name: dist
|
|
66
62
|
path: dist/
|
|
@@ -75,7 +71,7 @@ jobs:
|
|
|
75
71
|
|
|
76
72
|
steps:
|
|
77
73
|
- name: Download artifacts
|
|
78
|
-
uses: actions/download-artifact@
|
|
74
|
+
uses: actions/download-artifact@v6
|
|
79
75
|
with:
|
|
80
76
|
name: dist
|
|
81
77
|
path: dist/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# See https://pre-commit.com/hooks.html for more hooks
|
|
3
3
|
repos:
|
|
4
4
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
-
rev:
|
|
5
|
+
rev: v6.0.0
|
|
6
6
|
hooks:
|
|
7
7
|
- id: trailing-whitespace
|
|
8
8
|
- id: end-of-file-fixer
|
|
@@ -15,19 +15,19 @@ repos:
|
|
|
15
15
|
- id: mixed-line-ending
|
|
16
16
|
|
|
17
17
|
- repo: https://github.com/psf/black
|
|
18
|
-
rev:
|
|
18
|
+
rev: 26.1.0
|
|
19
19
|
hooks:
|
|
20
20
|
- id: black
|
|
21
21
|
language_version: python3
|
|
22
22
|
|
|
23
23
|
- repo: https://github.com/pycqa/isort
|
|
24
|
-
rev:
|
|
24
|
+
rev: 8.0.0
|
|
25
25
|
hooks:
|
|
26
26
|
- id: isort
|
|
27
27
|
args: ["--profile", "black"]
|
|
28
28
|
|
|
29
29
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
30
|
-
rev: v0.
|
|
30
|
+
rev: v0.15.2
|
|
31
31
|
hooks:
|
|
32
32
|
- id: ruff
|
|
33
33
|
args: ["--fix"]
|
|
@@ -4,10 +4,15 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
4
4
|
|
|
5
5
|
## Key Development Commands
|
|
6
6
|
|
|
7
|
+
This project uses [uv](https://docs.astral.sh/uv/) for dependency management. All commands are wrapped in the Makefile for convenience:
|
|
8
|
+
|
|
7
9
|
```bash
|
|
8
|
-
# Install development environment
|
|
10
|
+
# Install development environment (uses uv sync)
|
|
9
11
|
make install
|
|
10
12
|
|
|
13
|
+
# Sync dependencies without updating lock file
|
|
14
|
+
make sync
|
|
15
|
+
|
|
11
16
|
# Run unit tests only (no integration tests)
|
|
12
17
|
make test
|
|
13
18
|
|
|
@@ -31,12 +36,67 @@ make typecheck
|
|
|
31
36
|
make check
|
|
32
37
|
|
|
33
38
|
# Build the package
|
|
34
|
-
|
|
39
|
+
make build
|
|
35
40
|
|
|
36
41
|
# Generate coverage report
|
|
37
42
|
make coverage
|
|
38
43
|
```
|
|
39
44
|
|
|
45
|
+
### Direct uv commands
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Install dependencies
|
|
49
|
+
uv sync --all-groups
|
|
50
|
+
|
|
51
|
+
# Run a command in the environment
|
|
52
|
+
uv run pytest
|
|
53
|
+
|
|
54
|
+
# Add a new dependency
|
|
55
|
+
uv add package-name
|
|
56
|
+
|
|
57
|
+
# Add a dev dependency
|
|
58
|
+
uv add --group dev package-name
|
|
59
|
+
|
|
60
|
+
# Update dependencies
|
|
61
|
+
uv lock --upgrade
|
|
62
|
+
|
|
63
|
+
# Build the package
|
|
64
|
+
uv build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Git Commit Message Format
|
|
68
|
+
|
|
69
|
+
This project uses conventional commits format:
|
|
70
|
+
```
|
|
71
|
+
<type>(<scope>): <subject>
|
|
72
|
+
|
|
73
|
+
<body>
|
|
74
|
+
|
|
75
|
+
<footer>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Types:**
|
|
79
|
+
- `feat`: New feature
|
|
80
|
+
- `fix`: Bug fix
|
|
81
|
+
- `docs`: Documentation only changes
|
|
82
|
+
- `style`: Code style changes (formatting, missing semicolons, etc)
|
|
83
|
+
- `refactor`: Code change that neither fixes a bug nor adds a feature
|
|
84
|
+
- `test`: Adding missing tests or correcting existing tests
|
|
85
|
+
- `chore`: Changes to build process, dependencies, or auxiliary tools
|
|
86
|
+
|
|
87
|
+
**Examples:**
|
|
88
|
+
- `feat: add pagination properties to EntityManager`
|
|
89
|
+
- `fix: replace is_private with visibility_id parameter for posts`
|
|
90
|
+
- `chore(deps): update dependency ruff to v0.11.13`
|
|
91
|
+
- `refactor: reorganize package structure for PyPI publishing`
|
|
92
|
+
|
|
93
|
+
**Note:** When Claude generates commits, they should include the attribution at the end of the commit body:
|
|
94
|
+
```
|
|
95
|
+
🤖 Generated with [Claude Code](https://claude.ai/code)
|
|
96
|
+
|
|
97
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
98
|
+
```
|
|
99
|
+
|
|
40
100
|
## Architecture Overview
|
|
41
101
|
|
|
42
102
|
The SDK follows a **Client → Manager → Model** pattern that requires understanding across multiple files:
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
.PHONY: install test lint format typecheck check clean coverage help
|
|
1
|
+
.PHONY: install test lint format typecheck check clean coverage help sync build
|
|
2
2
|
|
|
3
3
|
# Default target
|
|
4
4
|
help:
|
|
5
5
|
@echo "Available commands:"
|
|
6
|
-
@echo " make install - Install development dependencies"
|
|
6
|
+
@echo " make install - Install development dependencies with uv"
|
|
7
|
+
@echo " make sync - Sync dependencies with uv.lock"
|
|
7
8
|
@echo " make test - Run all tests"
|
|
8
9
|
@echo " make lint - Run code linting"
|
|
9
10
|
@echo " make typecheck - Run type checking with mypy"
|
|
@@ -11,36 +12,39 @@ help:
|
|
|
11
12
|
@echo " make check - Run all checks (lint + typecheck + test)"
|
|
12
13
|
@echo " make clean - Clean up temporary files"
|
|
13
14
|
@echo " make coverage - Run tests with coverage report"
|
|
15
|
+
@echo " make build - Build the package"
|
|
14
16
|
|
|
15
|
-
# Install development dependencies
|
|
17
|
+
# Install development dependencies and sync with lock file
|
|
16
18
|
install:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
uv sync --all-groups
|
|
20
|
+
|
|
21
|
+
# Sync dependencies without updating lock file
|
|
22
|
+
sync:
|
|
23
|
+
uv sync --all-groups
|
|
20
24
|
|
|
21
25
|
# Run all tests
|
|
22
26
|
test:
|
|
23
|
-
pytest tests/ -v
|
|
27
|
+
uv run pytest tests/ -v
|
|
24
28
|
|
|
25
29
|
# Run linting
|
|
26
30
|
lint:
|
|
27
|
-
ruff check .
|
|
28
|
-
black --check .
|
|
29
|
-
isort --check-only .
|
|
31
|
+
uv run ruff check .
|
|
32
|
+
uv run black --check .
|
|
33
|
+
uv run isort --check-only .
|
|
30
34
|
|
|
31
35
|
# Run type checking
|
|
32
36
|
typecheck:
|
|
33
|
-
mypy src/kanka tests examples --ignore-missing-imports
|
|
37
|
+
uv run mypy src/kanka tests examples --ignore-missing-imports
|
|
34
38
|
|
|
35
39
|
# Format code
|
|
36
40
|
format:
|
|
37
|
-
black .
|
|
38
|
-
isort .
|
|
39
|
-
ruff check --fix .
|
|
41
|
+
uv run black .
|
|
42
|
+
uv run isort .
|
|
43
|
+
uv run ruff check --fix .
|
|
40
44
|
|
|
41
45
|
# Run pre-commit hooks on all files
|
|
42
46
|
pre-commit:
|
|
43
|
-
pre-commit run --all-files
|
|
47
|
+
uv run pre-commit run --all-files
|
|
44
48
|
|
|
45
49
|
# Run all checks
|
|
46
50
|
check: lint typecheck test
|
|
@@ -62,4 +66,8 @@ clean:
|
|
|
62
66
|
|
|
63
67
|
# Run tests with coverage
|
|
64
68
|
coverage:
|
|
65
|
-
pytest tests/ -v --cov=src/kanka --cov-report=html --cov-report=term
|
|
69
|
+
uv run pytest tests/ -v --cov=src/kanka --cov-report=html --cov-report=term
|
|
70
|
+
|
|
71
|
+
# Build the package
|
|
72
|
+
build:
|
|
73
|
+
uv build
|
|
@@ -1,57 +1,30 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-kanka
|
|
3
|
-
Version: 2.
|
|
4
|
-
Summary:
|
|
5
|
-
|
|
6
|
-
Author: Erv Walter
|
|
7
|
-
Author-email: erv@ewal.net
|
|
8
|
-
License: MIT
|
|
9
|
-
Project-URL: Bug Reports, https://github.com/ervwalter/python-kanka/issues
|
|
10
|
-
Project-URL: Source, https://github.com/ervwalter/python-kanka
|
|
3
|
+
Version: 2.3.0
|
|
4
|
+
Summary: Python client for the Kanka API
|
|
5
|
+
Project-URL: Homepage, https://github.com/ervwalter/python-kanka
|
|
11
6
|
Project-URL: Documentation, https://github.com/ervwalter/python-kanka#readme
|
|
12
|
-
Project-URL:
|
|
13
|
-
|
|
7
|
+
Project-URL: Repository, https://github.com/ervwalter/python-kanka
|
|
8
|
+
Project-URL: Issues, https://github.com/ervwalter/python-kanka/issues
|
|
9
|
+
Author-email: Erv Walter <erv@ewal.net>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: api,campaign,dnd,kanka,pathfinder,rpg,tabletop,ttrpg,worldbuilding
|
|
14
13
|
Classifier: Development Status :: 4 - Beta
|
|
15
14
|
Classifier: Intended Audience :: Developers
|
|
16
|
-
Classifier: Topic :: Games/Entertainment :: Role-Playing
|
|
17
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
15
|
Classifier: License :: OSI Approved :: MIT License
|
|
19
16
|
Classifier: Programming Language :: Python :: 3
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
23
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
-
Classifier:
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Games/Entertainment :: Role-Playing
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
22
|
Classifier: Typing :: Typed
|
|
26
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Requires-Dist: pydantic==2.12.5
|
|
25
|
+
Requires-Dist: requests-toolbelt==1.0.0
|
|
26
|
+
Requires-Dist: requests==2.32.5
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
28
|
-
License-File: LICENSE
|
|
29
|
-
Requires-Dist: requests==2.32.4
|
|
30
|
-
Requires-Dist: requests_toolbelt>=0.9.1
|
|
31
|
-
Requires-Dist: pydantic==2.11.5
|
|
32
|
-
Provides-Extra: dev
|
|
33
|
-
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
34
|
-
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
35
|
-
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
|
|
36
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
37
|
-
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
38
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
39
|
-
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
40
|
-
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
41
|
-
Dynamic: author
|
|
42
|
-
Dynamic: author-email
|
|
43
|
-
Dynamic: classifier
|
|
44
|
-
Dynamic: description
|
|
45
|
-
Dynamic: description-content-type
|
|
46
|
-
Dynamic: home-page
|
|
47
|
-
Dynamic: keywords
|
|
48
|
-
Dynamic: license
|
|
49
|
-
Dynamic: license-file
|
|
50
|
-
Dynamic: project-url
|
|
51
|
-
Dynamic: provides-extra
|
|
52
|
-
Dynamic: requires-dist
|
|
53
|
-
Dynamic: requires-python
|
|
54
|
-
Dynamic: summary
|
|
55
28
|
|
|
56
29
|
# python-kanka
|
|
57
30
|
|
|
@@ -81,10 +54,20 @@ Install from PyPI:
|
|
|
81
54
|
pip install python-kanka
|
|
82
55
|
```
|
|
83
56
|
|
|
84
|
-
|
|
57
|
+
### From Source (using uv)
|
|
85
58
|
```bash
|
|
86
59
|
git clone https://github.com/ervwalter/python-kanka.git
|
|
87
60
|
cd python-kanka
|
|
61
|
+
uv sync --all-groups
|
|
62
|
+
uv pip install -e .
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### From Source (using pip)
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/ervwalter/python-kanka.git
|
|
68
|
+
cd python-kanka
|
|
69
|
+
pip install -r requirements.txt
|
|
70
|
+
pip install -r dev-requirements.txt
|
|
88
71
|
pip install -e .
|
|
89
72
|
```
|
|
90
73
|
|
|
@@ -26,10 +26,20 @@ Install from PyPI:
|
|
|
26
26
|
pip install python-kanka
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
### From Source (using uv)
|
|
30
30
|
```bash
|
|
31
31
|
git clone https://github.com/ervwalter/python-kanka.git
|
|
32
32
|
cd python-kanka
|
|
33
|
+
uv sync --all-groups
|
|
34
|
+
uv pip install -e .
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### From Source (using pip)
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/ervwalter/python-kanka.git
|
|
40
|
+
cd python-kanka
|
|
41
|
+
pip install -r requirements.txt
|
|
42
|
+
pip install -r dev-requirements.txt
|
|
33
43
|
pip install -e .
|
|
34
44
|
```
|
|
35
45
|
|