strapi-kit 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
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.
- strapi_kit/__init__.py +1 -1
- strapi_kit/_version.py +2 -2
- strapi_kit/client/async_client.py +87 -1
- strapi_kit/client/base.py +91 -2
- strapi_kit/client/sync_client.py +87 -1
- strapi_kit/config_provider.py +1 -16
- strapi_kit/exceptions/__init__.py +2 -0
- strapi_kit/exceptions/errors.py +13 -0
- strapi_kit/export/exporter.py +6 -5
- strapi_kit/models/__init__.py +8 -0
- strapi_kit/models/content_type.py +148 -0
- strapi_kit/models/export_format.py +5 -3
- strapi_kit/models/request/query.py +9 -6
- strapi_kit/operations/media.py +13 -6
- strapi_kit/operations/streaming.py +5 -4
- strapi_kit/utils/__init__.py +20 -1
- strapi_kit/utils/rate_limiter.py +4 -2
- strapi_kit/utils/seo.py +294 -0
- strapi_kit/utils/uid.py +118 -0
- {strapi_kit-0.0.1.dist-info → strapi_kit-0.0.3.dist-info}/METADATA +214 -21
- {strapi_kit-0.0.1.dist-info → strapi_kit-0.0.3.dist-info}/RECORD +23 -21
- {strapi_kit-0.0.1.dist-info → strapi_kit-0.0.3.dist-info}/WHEEL +0 -0
- {strapi_kit-0.0.1.dist-info → strapi_kit-0.0.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: strapi-kit
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: A modern Python client for Strapi CMS with import/export capabilities
|
|
5
5
|
Project-URL: Homepage, https://github.com/mehdizare/strapi-kit
|
|
6
6
|
Project-URL: Documentation, https://mehdizare.github.io/strapi-kit/
|
|
@@ -16,6 +16,7 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
21
|
Requires-Python: >=3.12
|
|
21
22
|
Requires-Dist: httpx>=0.28.1
|
|
@@ -45,7 +46,11 @@ Description-Content-Type: text/markdown
|
|
|
45
46
|
|
|
46
47
|
# strapi-kit
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
[](https://github.com/MehdiZare/strapi-kit/actions/workflows/ci.yml)
|
|
50
|
+
[](https://codecov.io/gh/MehdiZare/strapi-kit)
|
|
51
|
+
[](https://pypi.org/project/strapi-kit/)
|
|
52
|
+
[](https://pypi.org/project/strapi-kit/)
|
|
53
|
+
[](https://github.com/MehdiZare/strapi-kit/blob/main/LICENSE)
|
|
49
54
|
|
|
50
55
|
A modern Python client for Strapi CMS with comprehensive import/export capabilities.
|
|
51
56
|
|
|
@@ -56,6 +61,7 @@ A modern Python client for Strapi CMS with comprehensive import/export capabilit
|
|
|
56
61
|
- 🔒 **Type Safe**: Built with Pydantic for robust data validation and type safety
|
|
57
62
|
- 🔄 **Import/Export**: Comprehensive backup/restore and data migration tools
|
|
58
63
|
- 🔁 **Smart Retry**: Automatic retry with exponential backoff for transient failures
|
|
64
|
+
- 🔍 **Schema Introspection**: Content-Type Builder API support for schema discovery
|
|
59
65
|
- 📦 **Modern Python**: Built for Python 3.12+ with full type hints
|
|
60
66
|
|
|
61
67
|
## Installation
|
|
@@ -649,6 +655,143 @@ asyncio.run(main())
|
|
|
649
655
|
- Update metadata without re-uploading
|
|
650
656
|
- Full support for both sync and async
|
|
651
657
|
|
|
658
|
+
### Content-Type Builder API
|
|
659
|
+
|
|
660
|
+
Query Strapi's Content-Type Builder to discover schemas, content types, and components:
|
|
661
|
+
|
|
662
|
+
```python
|
|
663
|
+
from strapi_kit import SyncClient, StrapiConfig
|
|
664
|
+
|
|
665
|
+
config = StrapiConfig(base_url="http://localhost:1337", api_token="your-token")
|
|
666
|
+
|
|
667
|
+
with SyncClient(config) as client:
|
|
668
|
+
# List all content types (excludes plugins by default)
|
|
669
|
+
content_types = client.get_content_types()
|
|
670
|
+
for ct in content_types:
|
|
671
|
+
print(f"{ct.uid}: {ct.info.display_name}")
|
|
672
|
+
# api::article.article: Article
|
|
673
|
+
# api::category.category: Category
|
|
674
|
+
|
|
675
|
+
# Include plugin content types
|
|
676
|
+
all_types = client.get_content_types(include_plugins=True)
|
|
677
|
+
|
|
678
|
+
# List all components
|
|
679
|
+
components = client.get_components()
|
|
680
|
+
for comp in components:
|
|
681
|
+
print(f"{comp.category}/{comp.uid}: {comp.info.display_name}")
|
|
682
|
+
# shared/shared.seo: SEO
|
|
683
|
+
# blocks/blocks.hero: Hero Section
|
|
684
|
+
|
|
685
|
+
# Get full schema for a content type
|
|
686
|
+
schema = client.get_content_type_schema("api::article.article")
|
|
687
|
+
print(f"Display name: {schema.display_name}")
|
|
688
|
+
print(f"Plural name: {schema.plural_name}")
|
|
689
|
+
|
|
690
|
+
# Check field types
|
|
691
|
+
print(schema.get_field_type("title")) # "string"
|
|
692
|
+
print(schema.is_relation_field("author")) # True
|
|
693
|
+
print(schema.get_relation_target("author")) # "api::author.author"
|
|
694
|
+
|
|
695
|
+
# Check for components
|
|
696
|
+
print(schema.is_component_field("seo")) # True
|
|
697
|
+
print(schema.get_component_uid("seo")) # "shared.seo"
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
**Async version:**
|
|
701
|
+
|
|
702
|
+
```python
|
|
703
|
+
async with AsyncClient(config) as client:
|
|
704
|
+
content_types = await client.get_content_types()
|
|
705
|
+
components = await client.get_components()
|
|
706
|
+
schema = await client.get_content_type_schema("api::article.article")
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
### UID Utilities
|
|
710
|
+
|
|
711
|
+
Utility functions for working with Strapi content type UIDs:
|
|
712
|
+
|
|
713
|
+
```python
|
|
714
|
+
from strapi_kit.utils import (
|
|
715
|
+
uid_to_endpoint,
|
|
716
|
+
uid_to_api_id, # Alias for uid_to_endpoint
|
|
717
|
+
api_id_to_singular,
|
|
718
|
+
uid_to_admin_url,
|
|
719
|
+
extract_model_name,
|
|
720
|
+
is_api_content_type,
|
|
721
|
+
)
|
|
722
|
+
|
|
723
|
+
# Convert UID to API endpoint (pluralized)
|
|
724
|
+
uid_to_endpoint("api::article.article") # "articles"
|
|
725
|
+
uid_to_endpoint("api::category.category") # "categories"
|
|
726
|
+
uid_to_endpoint("api::class.class") # "classes"
|
|
727
|
+
|
|
728
|
+
# Convert plural API ID to singular
|
|
729
|
+
api_id_to_singular("articles") # "article"
|
|
730
|
+
api_id_to_singular("categories") # "category"
|
|
731
|
+
api_id_to_singular("people") # "person" (handles irregular plurals)
|
|
732
|
+
api_id_to_singular("children") # "child"
|
|
733
|
+
|
|
734
|
+
# Build admin panel URL
|
|
735
|
+
uid_to_admin_url("api::article.article", "http://localhost:1337")
|
|
736
|
+
# "http://localhost:1337/admin/content-manager/collection-types/api::article.article"
|
|
737
|
+
|
|
738
|
+
uid_to_admin_url("api::homepage.homepage", "http://localhost:1337", kind="singleType")
|
|
739
|
+
# "http://localhost:1337/admin/content-manager/single-types/api::homepage.homepage"
|
|
740
|
+
|
|
741
|
+
# Extract model name from UID
|
|
742
|
+
extract_model_name("api::article.article") # "article"
|
|
743
|
+
extract_model_name("plugin::users-permissions.user") # "user"
|
|
744
|
+
|
|
745
|
+
# Check if UID is an API content type
|
|
746
|
+
is_api_content_type("api::article.article") # True
|
|
747
|
+
is_api_content_type("plugin::users-permissions.user") # False
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
### SEO Configuration Detection
|
|
751
|
+
|
|
752
|
+
Detect SEO configuration patterns in content type schemas:
|
|
753
|
+
|
|
754
|
+
```python
|
|
755
|
+
from strapi_kit.utils import detect_seo_configuration, SEOConfiguration
|
|
756
|
+
|
|
757
|
+
# Detect SEO in a schema dict
|
|
758
|
+
schema = {
|
|
759
|
+
"uid": "api::article.article",
|
|
760
|
+
"attributes": {
|
|
761
|
+
"title": {"type": "string"},
|
|
762
|
+
"seo": {"type": "component", "component": "shared.seo"},
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
config = detect_seo_configuration(schema)
|
|
767
|
+
print(config.has_seo) # True
|
|
768
|
+
print(config.seo_type) # "component"
|
|
769
|
+
print(config.seo_field_name) # "seo"
|
|
770
|
+
print(config.seo_component_uid) # "shared.seo"
|
|
771
|
+
print(config.fields) # {"title": "seo.metaTitle", "description": "seo.metaDescription", ...}
|
|
772
|
+
|
|
773
|
+
# Also detects flat SEO fields
|
|
774
|
+
schema_flat = {
|
|
775
|
+
"uid": "api::page.page",
|
|
776
|
+
"attributes": {
|
|
777
|
+
"metaTitle": {"type": "string"},
|
|
778
|
+
"metaDescription": {"type": "text"},
|
|
779
|
+
"ogImage": {"type": "media"},
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
config = detect_seo_configuration(schema_flat)
|
|
784
|
+
print(config.has_seo) # True
|
|
785
|
+
print(config.seo_type) # "flat"
|
|
786
|
+
print(config.fields) # {"title": "metaTitle", "description": "metaDescription", "og_image": "ogImage"}
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
**Supported SEO patterns:**
|
|
790
|
+
|
|
791
|
+
- **Component-based**: Fields named `seo`, `meta`, `metadata` with type `component`
|
|
792
|
+
- **Component UIDs**: Components with `seo` in the UID (e.g., `shared.seo`, `custom.page-seo`)
|
|
793
|
+
- **Flat fields**: `metaTitle`, `meta_title`, `seoTitle`, `metaDescription`, `ogTitle`, `canonicalUrl`, `noIndex`, etc.
|
|
794
|
+
|
|
652
795
|
### Export/Import with Relation Resolution
|
|
653
796
|
|
|
654
797
|
strapi-kit provides comprehensive export/import functionality with automatic relation resolution for migrating content between Strapi instances.
|
|
@@ -727,23 +870,35 @@ We provide two complete migration examples for different use cases:
|
|
|
727
870
|
Perfect for straightforward migrations with known content types:
|
|
728
871
|
|
|
729
872
|
```bash
|
|
730
|
-
#
|
|
731
|
-
|
|
873
|
+
# Set environment variables (or edit the script)
|
|
874
|
+
export SOURCE_STRAPI_TOKEN='your-source-token'
|
|
875
|
+
export TARGET_STRAPI_TOKEN='your-target-token'
|
|
876
|
+
|
|
877
|
+
# Run the migration
|
|
732
878
|
python examples/simple_migration.py
|
|
733
879
|
```
|
|
734
880
|
|
|
735
881
|
Features:
|
|
736
882
|
- ✅ Single-file, easy to understand
|
|
737
|
-
- ✅
|
|
738
|
-
- ✅
|
|
883
|
+
- ✅ Environment variable support for credentials
|
|
884
|
+
- ✅ Configuration validation before migration
|
|
885
|
+
- ✅ Connection verification for both instances
|
|
886
|
+
- ✅ Timestamped backup files to prevent overwrites
|
|
887
|
+
- ✅ Comprehensive error handling
|
|
739
888
|
- ✅ Automatic relation resolution
|
|
740
|
-
- ✅
|
|
889
|
+
- ✅ Includes media files
|
|
741
890
|
|
|
742
891
|
#### Full Migration (Production-Ready)
|
|
743
892
|
|
|
744
893
|
Comprehensive migration tool with auto-discovery and verification:
|
|
745
894
|
|
|
746
895
|
```bash
|
|
896
|
+
# Set environment variables (required)
|
|
897
|
+
export SOURCE_STRAPI_URL="http://localhost:1337"
|
|
898
|
+
export SOURCE_STRAPI_TOKEN="your-source-api-token"
|
|
899
|
+
export TARGET_STRAPI_URL="http://localhost:1338"
|
|
900
|
+
export TARGET_STRAPI_TOKEN="your-target-api-token"
|
|
901
|
+
|
|
747
902
|
# Export all content from source
|
|
748
903
|
python examples/full_migration_v5.py export
|
|
749
904
|
|
|
@@ -758,6 +913,7 @@ python examples/full_migration_v5.py verify
|
|
|
758
913
|
```
|
|
759
914
|
|
|
760
915
|
Features:
|
|
916
|
+
- ✅ **Environment variable configuration** (no hardcoded credentials)
|
|
761
917
|
- ✅ **Auto-discovers all content types** (no manual configuration needed)
|
|
762
918
|
- ✅ Progress bars for long operations
|
|
763
919
|
- ✅ Detailed migration reports
|
|
@@ -941,6 +1097,42 @@ db_config = DatabaseConfig(db_connection)
|
|
|
941
1097
|
client = SyncClient(db_config)
|
|
942
1098
|
```
|
|
943
1099
|
|
|
1100
|
+
## Error Handling
|
|
1101
|
+
|
|
1102
|
+
strapi-kit provides a rich exception hierarchy for precise error handling:
|
|
1103
|
+
|
|
1104
|
+
```python
|
|
1105
|
+
from strapi_kit import (
|
|
1106
|
+
StrapiError, # Base for all errors
|
|
1107
|
+
ConfigurationError, # Invalid config (missing token, bad URL)
|
|
1108
|
+
ValidationError, # Invalid input/query params
|
|
1109
|
+
AuthenticationError, # HTTP 401
|
|
1110
|
+
AuthorizationError, # HTTP 403
|
|
1111
|
+
NotFoundError, # HTTP 404
|
|
1112
|
+
ConflictError, # HTTP 409
|
|
1113
|
+
ServerError, # HTTP 5xx
|
|
1114
|
+
NetworkError, # Connection issues (base)
|
|
1115
|
+
RateLimitError, # HTTP 429
|
|
1116
|
+
ImportExportError, # Data operations (base)
|
|
1117
|
+
FormatError, # Invalid data format
|
|
1118
|
+
MediaError, # Media upload/download errors
|
|
1119
|
+
)
|
|
1120
|
+
|
|
1121
|
+
try:
|
|
1122
|
+
with SyncClient(config) as client:
|
|
1123
|
+
response = client.get_many("articles")
|
|
1124
|
+
except ConfigurationError as e:
|
|
1125
|
+
print(f"Config issue: {e}")
|
|
1126
|
+
except ValidationError as e:
|
|
1127
|
+
print(f"Invalid query: {e}")
|
|
1128
|
+
except NotFoundError as e:
|
|
1129
|
+
print(f"Not found: {e}")
|
|
1130
|
+
except StrapiError as e:
|
|
1131
|
+
print(f"Strapi error: {e}")
|
|
1132
|
+
```
|
|
1133
|
+
|
|
1134
|
+
All exceptions inherit from `StrapiError`, making it easy to catch all package-specific errors while still allowing precise handling of specific error types.
|
|
1135
|
+
|
|
944
1136
|
## Development
|
|
945
1137
|
|
|
946
1138
|
### Setup
|
|
@@ -954,33 +1146,28 @@ cd strapi-kit
|
|
|
954
1146
|
python -m venv .venv
|
|
955
1147
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
956
1148
|
|
|
957
|
-
# Install dependencies (uv
|
|
1149
|
+
# Install dependencies including pre-commit (uv recommended)
|
|
958
1150
|
uv pip install -e ".[dev]"
|
|
959
1151
|
# Or with pip
|
|
960
1152
|
pip install -e ".[dev]"
|
|
961
1153
|
|
|
962
1154
|
# Install pre-commit hooks (one-time setup)
|
|
963
|
-
make install-hooks
|
|
964
|
-
# Or manually:
|
|
965
1155
|
pre-commit install
|
|
966
1156
|
```
|
|
967
1157
|
|
|
968
1158
|
### Pre-commit Hooks
|
|
969
1159
|
|
|
970
|
-
This project uses pre-commit hooks to ensure code quality
|
|
1160
|
+
This project uses pre-commit hooks to ensure code quality. The `pre-commit` package is included in `[dev]` dependencies.
|
|
971
1161
|
|
|
972
1162
|
```bash
|
|
973
|
-
# Install
|
|
974
|
-
make install-hooks
|
|
975
|
-
|
|
976
|
-
# Or manually:
|
|
1163
|
+
# Install hooks (one-time setup, after installing dev dependencies)
|
|
977
1164
|
pre-commit install
|
|
978
1165
|
|
|
979
1166
|
# Run hooks manually on all files
|
|
980
|
-
|
|
1167
|
+
pre-commit run --all-files
|
|
981
1168
|
|
|
982
1169
|
# Update hooks to latest versions
|
|
983
|
-
|
|
1170
|
+
pre-commit autoupdate
|
|
984
1171
|
```
|
|
985
1172
|
|
|
986
1173
|
**What the hooks check:**
|
|
@@ -1045,7 +1232,7 @@ This project is in active development. Currently implemented:
|
|
|
1045
1232
|
- **Query Builder**: `StrapiQuery` fluent API with full type safety
|
|
1046
1233
|
- **Typed Client Methods**: `get_one()`, `get_many()`, `create()`, `update()`, `remove()`
|
|
1047
1234
|
- **Dependency Injection**: Full DI support with protocols for testability
|
|
1048
|
-
- **
|
|
1235
|
+
- **Full test coverage** with type-safe query building
|
|
1049
1236
|
|
|
1050
1237
|
### ✅ Phase 3: Media Operations (Complete)
|
|
1051
1238
|
- **Media Upload**: Single and batch file uploads with metadata
|
|
@@ -1061,13 +1248,19 @@ This project is in active development. Currently implemented:
|
|
|
1061
1248
|
- **Media Export**: Download and package media files
|
|
1062
1249
|
- **Content Import**: Import with ID mapping and relation resolution
|
|
1063
1250
|
- **Schema Caching**: Efficient content type metadata handling
|
|
1064
|
-
- **
|
|
1251
|
+
- **85% overall test coverage** with 460 passing tests
|
|
1252
|
+
|
|
1253
|
+
### ✅ Phase 5: Schema Introspection (Complete)
|
|
1254
|
+
- **Content-Type Builder API**: List content types, components, and full schemas
|
|
1255
|
+
- **UID Utilities**: Convert UIDs to endpoints, singularize, build admin URLs
|
|
1256
|
+
- **SEO Detection**: Detect SEO configuration patterns in schemas
|
|
1257
|
+
- **86% overall test coverage** with 528 passing tests
|
|
1065
1258
|
|
|
1066
|
-
### 🚧 Phase
|
|
1259
|
+
### 🚧 Phase 6: Advanced Features (Planned)
|
|
1067
1260
|
- Bulk operations with streaming
|
|
1068
|
-
- Content type introspection
|
|
1069
1261
|
- Advanced retry strategies
|
|
1070
1262
|
- Rate limiting
|
|
1263
|
+
- GraphQL support
|
|
1071
1264
|
|
|
1072
1265
|
### Key Features
|
|
1073
1266
|
- **Type-Safe**: Full Pydantic validation and mypy strict mode compliance
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
strapi_kit/__init__.py,sha256=
|
|
1
|
+
strapi_kit/__init__.py,sha256=z4BR2eysdjTvsFaTqyUX0aPnSODMC2MyhdpvtCgWHVY,2177
|
|
2
2
|
strapi_kit/__version__.py,sha256=oLc_AUMPwiL7J2vgrvXdzVqbSQl2hqkPZ6dNfUx1lTU,478
|
|
3
|
-
strapi_kit/_version.py,sha256=
|
|
4
|
-
strapi_kit/config_provider.py,sha256=
|
|
3
|
+
strapi_kit/_version.py,sha256=pBZsQt6tlL02W-ri--X_4JCubpAK7jjCSnOmUp_isjc,704
|
|
4
|
+
strapi_kit/config_provider.py,sha256=Eky8mH6XgvgrwzsQuAc4gPpbPby_miycxqQH175rlU4,11864
|
|
5
5
|
strapi_kit/protocols.py,sha256=wMeGSFCSxeamv2YDzWWWSVJtiGrm__1Xg00QighEbQ4,10971
|
|
6
6
|
strapi_kit/auth/__init__.py,sha256=VhjbOiyBVSafz3lf2a43bnbSm0J8PG-lguIKHlRplx8,117
|
|
7
7
|
strapi_kit/auth/api_token.py,sha256=FntOxnf18ZdF0YwGjt0J6DM9tlxmIGZGIplqkLvstl0,1419
|
|
8
8
|
strapi_kit/cache/__init__.py,sha256=MpqVNsjbE6_QGEwyxZ80h-PFkB8NzDv7xGxJK1g5agQ,126
|
|
9
9
|
strapi_kit/cache/schema_cache.py,sha256=cmZBS2E0m0YyxpqS7_Z9evDqu_JZxQH086Vv7th7140,6552
|
|
10
10
|
strapi_kit/client/__init__.py,sha256=R9Ux5bCret4mnXItnFh5MxYlMOjoS4bepPX1KpNSs5w,216
|
|
11
|
-
strapi_kit/client/async_client.py,sha256=
|
|
12
|
-
strapi_kit/client/base.py,sha256=
|
|
13
|
-
strapi_kit/client/sync_client.py,sha256=
|
|
14
|
-
strapi_kit/exceptions/__init__.py,sha256=
|
|
15
|
-
strapi_kit/exceptions/errors.py,sha256=
|
|
11
|
+
strapi_kit/client/async_client.py,sha256=GUWFfUABcm6tJgWb9CaoYGhfEu7lmZx_nKUr0v97tJ4,39021
|
|
12
|
+
strapi_kit/client/base.py,sha256=jITcMtDPNpup60yHAbdn7jzATz-ccQv5l1WuefPJ-00,19567
|
|
13
|
+
strapi_kit/client/sync_client.py,sha256=bJGzhdTedIl2nnZqjzASEyejiOHM8-_AlubItp_IqcY,36078
|
|
14
|
+
strapi_kit/exceptions/__init__.py,sha256=lGjEMAbbKO4MXIodY6jxF5x0WerbSZEnYL_r990tzXM,748
|
|
15
|
+
strapi_kit/exceptions/errors.py,sha256=Yc051k-3tCmT7ybJjQXs9V_i6bh0pY4xW6zmTT7i4PQ,5328
|
|
16
16
|
strapi_kit/export/__init__.py,sha256=s1_1e75FodxpzaC8oWmrXNBUKIXt_0wuhQk5Iz2YUpY,340
|
|
17
|
-
strapi_kit/export/exporter.py,sha256=
|
|
17
|
+
strapi_kit/export/exporter.py,sha256=F3ow3NlyutdC-yc-cGZwyAoIVCu-8UnbQyOSrBR4QV0,14056
|
|
18
18
|
strapi_kit/export/importer.py,sha256=8ReQK7UivJGJU78W8RfPCwLSEGcYURzsNlVuI2fvugE,23010
|
|
19
19
|
strapi_kit/export/media_handler.py,sha256=xmx06M4ehtpNpVDwwuppwGpLwRd9s2M-NNnQ7I1T5Pk,11014
|
|
20
20
|
strapi_kit/export/relation_resolver.py,sha256=bXsrY80JWdvzmfFZc0UIpluReg9BWWBdr5SXhEqlaCs,5660
|
|
21
|
-
strapi_kit/models/__init__.py,sha256=
|
|
21
|
+
strapi_kit/models/__init__.py,sha256=zm-V86_4yWVS0LGezajQvK0lALmHiZtX8o0tC0QVBk0,3441
|
|
22
22
|
strapi_kit/models/bulk.py,sha256=g1swXgk8nWE_C-u6LIwKJzk2E5xmqMxDMQgY6SzxY7Q,2100
|
|
23
23
|
strapi_kit/models/config.py,sha256=Nq1pWlDc50wSV3RvQseKG688zlHw8vlNFRZqAPtvj0Q,4543
|
|
24
|
+
strapi_kit/models/content_type.py,sha256=AIONiPq6-ZyNdoAygiR1_ynh-s2d5ti2GvtmnaktzMs,4150
|
|
24
25
|
strapi_kit/models/enums.py,sha256=sxxlBNwOyxasqI7hwTanrv1kppseIkNUf-3SJF15TH8,2939
|
|
25
|
-
strapi_kit/models/export_format.py,sha256=
|
|
26
|
+
strapi_kit/models/export_format.py,sha256=x8cH-uktCaUVxOJCVtLdS1gs3NpNqTqExWQa5wWoEqc,5351
|
|
26
27
|
strapi_kit/models/import_options.py,sha256=aRjWSI2ZOPl8j0ZiLlR8TfAjLrpzn7HBpK1LQ3Rt1IA,4795
|
|
27
28
|
strapi_kit/models/schema.py,sha256=qNU7v_HF0AESDqmmKmMy_ERPOI-zUqFCujlAjTZ1Lo8,2489
|
|
28
29
|
strapi_kit/models/request/__init__.py,sha256=RvuVgPvc2tAx9A_Esh04SZZ5Oi1GFiYpxdg90TLsd6A,54
|
|
@@ -30,7 +31,7 @@ strapi_kit/models/request/fields.py,sha256=VrPyf0Pg_EQ3z2IyzBhaw_4fr7N5VWJRcN2Li
|
|
|
30
31
|
strapi_kit/models/request/filters.py,sha256=3qMzI8cTMfYCFWRAGMbw6DmEBtD2yUWB4UswABQavR4,19274
|
|
31
32
|
strapi_kit/models/request/pagination.py,sha256=hXFp534JutocVgWN0L0kInwSVGmhzhCJGTPdNzpJpUc,5244
|
|
32
33
|
strapi_kit/models/request/populate.py,sha256=xYjOFdauqxHtIEaYI5w-hXeX92TcfIdYGybJzrSdxYA,9399
|
|
33
|
-
strapi_kit/models/request/query.py,sha256=
|
|
34
|
+
strapi_kit/models/request/query.py,sha256=3s9TQlskxCb6ShCj9Lyu6Se4whRpuaxsriZukPAdPDQ,15074
|
|
34
35
|
strapi_kit/models/request/sort.py,sha256=BJqBt5ZEw3LkyHWfKHmQ7NtOtZMWFP3tNxdgbrsSJhw,4654
|
|
35
36
|
strapi_kit/models/response/__init__.py,sha256=1Cn009-Zp-vLcRSV-E65TaszK1b09qCVi6_LNKHBMNo,56
|
|
36
37
|
strapi_kit/models/response/base.py,sha256=mutKKPSUMdd4Jsg7bv18bad9OwNUdKHjutHDloz9_5E,1982
|
|
@@ -42,14 +43,15 @@ strapi_kit/models/response/relation.py,sha256=wZb4HIwM6RChZmFDbtKgLjunGS1dauxwm8
|
|
|
42
43
|
strapi_kit/models/response/v4.py,sha256=7i-HmNIkL6alyM0o7Y-u3v57O8ROMYH4w0HH95_p9iw,1996
|
|
43
44
|
strapi_kit/models/response/v5.py,sha256=bXHK4TH15aUy3ssxZZBz2myI6JR4BYnrSRWitju1HoQ,1838
|
|
44
45
|
strapi_kit/operations/__init__.py,sha256=9tUk9gZQQThF93jXjB38XM20rPCfp6QVhgmiYTC28AY,355
|
|
45
|
-
strapi_kit/operations/media.py,sha256=
|
|
46
|
-
strapi_kit/operations/streaming.py,sha256=
|
|
46
|
+
strapi_kit/operations/media.py,sha256=26eUo-o6UDtHOKNuVc8bvoXht037-bH114glLvk-RQg,7498
|
|
47
|
+
strapi_kit/operations/streaming.py,sha256=A6Czlq_c2yIc7vQMx4OwLURBgdTPnnOfa80z-Mw5pMQ,4796
|
|
47
48
|
strapi_kit/parsers/__init__.py,sha256=-4WSHKbFhnbOB4j7MF2qyktgkb6t8RY3slTYKV4vhvg,142
|
|
48
49
|
strapi_kit/parsers/version_detecting.py,sha256=i6Wh7NSQYPWSv0GR63ZJLuPF6BqFwQ_Y7J3q7l7h1JQ,6421
|
|
49
|
-
strapi_kit/utils/__init__.py,sha256=
|
|
50
|
-
strapi_kit/utils/rate_limiter.py,sha256=
|
|
51
|
-
strapi_kit/utils/
|
|
52
|
-
strapi_kit
|
|
53
|
-
strapi_kit-0.0.
|
|
54
|
-
strapi_kit-0.0.
|
|
55
|
-
strapi_kit-0.0.
|
|
50
|
+
strapi_kit/utils/__init__.py,sha256=FFSuu9W6Yt1r0OEU55bs9zLz2RuAy0wCVPfzN2BRz7E,823
|
|
51
|
+
strapi_kit/utils/rate_limiter.py,sha256=c-oAgCILG-6nrjhxIXEx3sKqRgkxOHcNJE496ix7aVA,6367
|
|
52
|
+
strapi_kit/utils/seo.py,sha256=p1CR3NGPJfarLosqRa3PAgigS9l9IB_LXUMjaZBXDeM,9317
|
|
53
|
+
strapi_kit/utils/uid.py,sha256=XjZ7tTPpiAiVzxylmwCE7aMPZKXhF_uL7ZwFotYLSZs,6102
|
|
54
|
+
strapi_kit-0.0.3.dist-info/METADATA,sha256=tKu7Xae8xYsdokePSiZvURE1d4mbSStMDbSNwCZze2E,38005
|
|
55
|
+
strapi_kit-0.0.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
56
|
+
strapi_kit-0.0.3.dist-info/licenses/LICENSE,sha256=lN0YUtXlAFBt9MNYr2F0GJEYdprxDOTIqcVhKxMsaTI,1067
|
|
57
|
+
strapi_kit-0.0.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|