-
Notifications
You must be signed in to change notification settings - Fork 25
refactor: restructure kinde_client_api for improved modularity #94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Remove outdated API paths and client components - Introduce new management models for better handling of entitlements and feature flags - Improve directory structure for easier maintenance and scalability - Add placeholder models for upcoming features
WalkthroughThis update removes a large number of auto-generated files from the Changes
Sequence Diagram(s)Not applicable due to the nature of the changes (large-scale deletions and import path updates). Estimated code review effort🎯 4 (Complex) | ⏱️ ~30–45 minutes
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. 📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
@coderabbitai configuration |
CodeRabbit configurationlanguage: en-US
tone_instructions: ''
early_access: false
enable_free_tier: true
reviews:
profile: chill
request_changes_workflow: true
high_level_summary: false
high_level_summary_placeholder: '@coderabbitai summary'
high_level_summary_in_walkthrough: false
auto_title_placeholder: '@coderabbitai'
auto_title_instructions: ''
review_status: true
commit_status: true
fail_commit_status: false
collapse_walkthrough: false
changed_files_summary: true
sequence_diagrams: true
estimate_code_review_effort: true
assess_linked_issues: true
related_issues: true
related_prs: true
suggested_labels: true
auto_apply_labels: false
suggested_reviewers: true
auto_assign_reviewers: false
poem: false
labeling_instructions: []
path_filters:
- '!dist/**'
- '!**/*.app'
- '!**/*.bin'
- '!**/*.bz2'
- '!**/*.class'
- '!**/*.db'
- '!**/*.csv'
- '!**/*.tsv'
- '!**/*.dat'
- '!**/*.dll'
- '!**/*.dylib'
- '!**/*.egg'
- '!**/*.glif'
- '!**/*.gz'
- '!**/*.xz'
- '!**/*.zip'
- '!**/*.7z'
- '!**/*.rar'
- '!**/*.zst'
- '!**/*.ico'
- '!**/*.jar'
- '!**/*.tar'
- '!**/*.war'
- '!**/*.lo'
- '!**/*.log'
- '!**/*.mp3'
- '!**/*.wav'
- '!**/*.wma'
- '!**/*.mp4'
- '!**/*.avi'
- '!**/*.mkv'
- '!**/*.wmv'
- '!**/*.m4a'
- '!**/*.m4v'
- '!**/*.3gp'
- '!**/*.3g2'
- '!**/*.rm'
- '!**/*.mov'
- '!**/*.flv'
- '!**/*.iso'
- '!**/*.swf'
- '!**/*.flac'
- '!**/*.nar'
- '!**/*.o'
- '!**/*.ogg'
- '!**/*.otf'
- '!**/*.p'
- '!**/*.pdf'
- '!**/*.doc'
- '!**/*.docx'
- '!**/*.xls'
- '!**/*.xlsx'
- '!**/*.map'
- '!**/*.out'
- '!**/*.ppt'
- '!**/*.pptx'
- '!**/*.pkl'
- '!**/*.pickle'
- '!**/*.pyc'
- '!**/*.pyd'
- '!**/*.pyo'
- '!**/*.pub'
- '!**/*.pem'
- '!**/*.rkt'
- '!**/*.so'
- '!**/*.ss'
- '!**/*.eot'
- '!**/*.exe'
- '!**/*.pb.go'
- '!**/*.pb.gw.go'
- '!**/*.lock'
- '!**/*.ttf'
- '!**/*.yaml'
- '!**/*.yml'
- '!**/*.xml'
- '!**/*.cfg'
- '!**/*.toml'
- '!**/*.ini'
- '!**/*.mod'
- '!**/*.sum'
- '!**/*.work'
- '!**/*.json'
- '!**/*.mmd'
- '!**/*.svg'
- '!**/*.jpeg'
- '!**/*.jpg'
- '!**/*.png'
- '!**/*.gif'
- '!**/*.bmp'
- '!**/*.tiff'
- '!**/*.webm'
- '!**/*.woff'
- '!**/*.woff2'
- '!**/*.dot'
- '!**/*.md5sum'
- '!**/*.wasm'
- '!**/*.snap'
- '!**/*.parquet'
- '!**/gen/**'
- '!**/_gen/**'
- '!**/generated/**'
- '!**/@generated/**'
- '!**/vendor/**'
- '!**/*.min.js'
- '!**/*.min.js.map'
- '!**/*.min.js.css'
- '!**/*.tfstate'
- '!**/*.tfstate.backup'
path_instructions: []
abort_on_close: true
disable_cache: false
auto_review:
enabled: true
auto_incremental_review: true
ignore_title_keywords: []
labels: []
drafts: false
base_branches: []
finishing_touches:
docstrings:
enabled: true
unit_tests:
enabled: true
pre_merge_checks:
docstrings:
mode: warning
threshold: 80
title:
mode: warning
requirements: ''
description:
mode: warning
issue_assessment:
mode: warning
tools:
ast-grep:
rule_dirs: []
util_dirs: []
essential_rules: true
packages: []
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 90000
languagetool:
enabled: true
enabled_rules: []
disabled_rules: []
enabled_categories: []
disabled_categories: []
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
swiftlint:
enabled: true
phpstan:
enabled: true
level: default
phpmd:
enabled: true
phpcs:
enabled: true
golangci-lint:
enabled: true
yamllint:
enabled: true
gitleaks:
enabled: true
checkov:
enabled: true
detekt:
enabled: true
eslint:
enabled: true
flake8:
enabled: true
rubocop:
enabled: true
buf:
enabled: true
regal:
enabled: true
actionlint:
enabled: true
pmd:
enabled: true
cppcheck:
enabled: true
semgrep:
enabled: true
circleci:
enabled: true
clippy:
enabled: true
sqlfluff:
enabled: true
prismaLint:
enabled: true
pylint:
enabled: true
oxc:
enabled: true
shopifyThemeCheck:
enabled: true
luacheck:
enabled: true
brakeman:
enabled: true
dotenvLint:
enabled: true
htmlhint:
enabled: true
checkmake:
enabled: true
chat:
auto_reply: true
integrations:
jira:
usage: auto
linear:
usage: auto
knowledge_base:
opt_out: false
web_search:
enabled: true
code_guidelines:
enabled: true
filePatterns: []
learnings:
scope: auto
issues:
scope: auto
jira:
usage: auto
project_keys: []
linear:
usage: auto
team_keys: []
pull_requests:
scope: auto
code_generation:
docstrings:
language: en-US
path_instructions: []
unit_tests:
path_instructions: []
|
- Add .coderabbit.yaml configuration file for automated code reviews - Configure review settings and preferences for the project
|
@CodeRabbit review |
✅ Actions performedReview triggered.
|
- Update .coderabbit.yaml with revised settings - Improve code review automation and preferences
|
@coderabbitai resume |
✅ Actions performedReviews resumed. |
- Further optimize .coderabbit.yaml settings - Enhance automated code review workflow
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (2)
kinde_sdk/management/__init__.py (2)
33-35: DuplicateFeatureFlagsApiimport – remove the extra lineThe second import is redundant and may trigger flake8
F401/F811warnings.-from kinde_sdk.management.api.feature_flags_api import FeatureFlagsApi
272-274: Optional: consider consolidating the variousUpdateConnectionRequestOptions*importsAll three option shapes are now imported twice (create & update). Not wrong, but grouping them improves readability.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (205)
.coderabbit.yamlis excluded by!**/*.yamlkinde_sdk/management/api/billing_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/callbacks_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/connections_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/organizations_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/permissions_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/self_serve_portal_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/subscribers_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/api/users_api.pyis excluded by!kinde_sdk/management/api/**kinde_sdk/management/models/__init__.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/create_application_request.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/create_connection_request_options_one_of1.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/create_meter_usage_record_request.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_api_response_api_applications_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_entitlement_response.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_entitlement_response_data.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_entitlement_response_data_entitlement.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_entitlements_response_data_entitlements_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_entitlements_response_data_plans_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_feature_flags_response_data_feature_flags_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_feature_flags_response_data_feature_flags_inner_value.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_user_properties_response_data_properties_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/get_user_properties_response_data_properties_inner_value.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/portal_link.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/replace_connection_request_options_one_of.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/update_connection_request.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/update_connection_request_options.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/update_connection_request_options_one_of.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/users_response_users_inner.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/management/models/users_response_users_inner_billing.pyis excluded by!kinde_sdk/management/models/**kinde_sdk/model/__init__.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/add_organization_users_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/add_organization_users_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/api.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/api.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/api_result.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/api_result.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/apis.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/apis.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/applications.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/applications.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/category.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/category.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/connected_apps_access_token.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/connected_apps_access_token.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/connected_apps_auth_url.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/connected_apps_auth_url.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/connection.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/connection.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_application_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_application_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_category_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_category_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_connection_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_connection_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_organization_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_organization_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_property_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_property_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_subscriber_success_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_subscriber_success_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_user_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_user_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/create_webhook_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/create_webhook_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/delete_webhook_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/delete_webhook_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/error.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/error.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/error_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/error_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/event_type.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/event_type.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_application_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_application_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_applications_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_applications_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_categories_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_categories_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_connections_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_connections_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_environment_feature_flags_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_environment_feature_flags_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_event_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_event_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_event_types_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_event_types_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organization_feature_flags_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organization_feature_flags_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organization_users_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organization_users_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_user_permissions_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_user_permissions_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_user_roles_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_organizations_user_roles_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_permissions_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_permissions_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_properties_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_properties_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_property_values_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_property_values_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_redirect_callback_urls_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_redirect_callback_urls_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_roles_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_roles_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_subscriber_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_subscriber_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_subscribers_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_subscribers_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/get_webhooks_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/get_webhooks_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/logout_redirect_urls.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/logout_redirect_urls.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/model_property.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/model_property.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_permission.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_permission.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_role.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_role.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_role_permissions.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_user_role_permissions.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_users.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/organization_users.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/permissions.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/permissions.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/property_value.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/property_value.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/redirect_callback_urls.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/redirect_callback_urls.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/role.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/role.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/roles.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/roles.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/roles_permission_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/roles_permission_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/subscriber.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/subscriber.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/subscribers_subscriber.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/subscribers_subscriber.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/success_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/success_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/token_error_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/token_error_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/token_introspect.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/token_introspect.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/update_organization_users_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/update_organization_users_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/update_role_permissions_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/update_role_permissions_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/update_user_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/update_user_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/update_webhook_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/update_webhook_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/user.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/user.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/user_identity.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/user_identity.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/user_profile.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/user_profile.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/user_profile_v2.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/user_profile_v2.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/users.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/users.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/users_response.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/users_response.pyiis excluded by!kinde_sdk/model/**kinde_sdk/model/webhook.pyis excluded by!kinde_sdk/model/**kinde_sdk/model/webhook.pyiis excluded by!kinde_sdk/model/**kinde_sdk/paths/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis/get.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis/get.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis/post.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis/post.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id/delete.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id/delete.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id/get.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id/get.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id_applications/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id_applications/patch.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_apis_api_id_applications/patch.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications/get.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications/get.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications/post.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications/post.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/delete.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/delete.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/get.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/get.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/post.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/post.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/put.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/put.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/__init__.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/delete.pyis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/delete.pyiis excluded by!kinde_sdk/paths/**kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/get.pyis excluded by!kinde_sdk/paths/**
📒 Files selected for processing (95)
README.md(3 hunks)README_management_client.md(1 hunks)generate_management_sdk.py(4 hunks)kinde_sdk/api_client.py(0 hunks)kinde_sdk/apis/__init__.py(0 hunks)kinde_sdk/apis/path_to_api.py(0 hunks)kinde_sdk/apis/paths/__init__.py(0 hunks)kinde_sdk/apis/paths/api_v1_apis.py(0 hunks)kinde_sdk/apis/paths/api_v1_apis_api_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_apis_api_id_applications.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications_app_id_auth_logout_urls.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications_app_id_auth_redirect_urls.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications_application_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications_application_id_connections.py(0 hunks)kinde_sdk/apis/paths/api_v1_applications_application_id_connections_connection_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_business.py(0 hunks)kinde_sdk/apis/paths/api_v1_connected_apps_auth_url.py(0 hunks)kinde_sdk/apis/paths/api_v1_connected_apps_revoke.py(0 hunks)kinde_sdk/apis/paths/api_v1_connected_apps_token.py(0 hunks)kinde_sdk/apis/paths/api_v1_connections.py(0 hunks)kinde_sdk/apis/paths/api_v1_connections_connection_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_environment_feature_flags.py(0 hunks)kinde_sdk/apis/paths/api_v1_environment_feature_flags_feature_flag_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_event_types.py(0 hunks)kinde_sdk/apis/paths/api_v1_events_event_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_feature_flags.py(0 hunks)kinde_sdk/apis/paths/api_v1_feature_flags_feature_flag_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_industries.py(0 hunks)kinde_sdk/apis/paths/api_v1_organization.py(0 hunks)kinde_sdk/apis/paths/api_v1_organization_org_code.py(0 hunks)kinde_sdk/apis/paths/api_v1_organization_org_code_handle.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_properties.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_properties_property_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions_permission_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles.py(0 hunks)kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles_role_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_permissions.py(0 hunks)kinde_sdk/apis/paths/api_v1_permissions_permission_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_properties.py(0 hunks)kinde_sdk/apis/paths/api_v1_properties_property_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_property_categories.py(0 hunks)kinde_sdk/apis/paths/api_v1_property_categories_category_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_roles.py(0 hunks)kinde_sdk/apis/paths/api_v1_roles_role_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_roles_role_id_permissions.py(0 hunks)kinde_sdk/apis/paths/api_v1_roles_role_id_permissions_permission_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_subscribers.py(0 hunks)kinde_sdk/apis/paths/api_v1_subscribers_subscriber_id.py(0 hunks)kinde_sdk/apis/paths/api_v1_timezones.py(0 hunks)kinde_sdk/apis/paths/api_v1_user.py(0 hunks)kinde_sdk/apis/paths/api_v1_users.py(0 hunks)kinde_sdk/apis/paths/api_v1_users_user_id_feature_flags_feature_flag_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_users_user_id_password.py(0 hunks)kinde_sdk/apis/paths/api_v1_users_user_id_properties.py(0 hunks)kinde_sdk/apis/paths/api_v1_users_user_id_properties_property_key.py(0 hunks)kinde_sdk/apis/paths/api_v1_users_user_id_refresh_claims.py(0 hunks)kinde_sdk/apis/paths/api_v1_webhooks.py(0 hunks)kinde_sdk/apis/paths/api_v1_webhooks_webhook_id.py(0 hunks)kinde_sdk/apis/paths/oauth2_introspect.py(0 hunks)kinde_sdk/apis/paths/oauth2_revoke.py(0 hunks)kinde_sdk/apis/paths/oauth2_user_profile.py(0 hunks)kinde_sdk/apis/paths/oauth2_v2_user_profile.py(0 hunks)kinde_sdk/apis/tag_to_api.py(0 hunks)kinde_sdk/apis/tags/__init__.py(0 hunks)kinde_sdk/apis/tags/apis_api.py(0 hunks)kinde_sdk/apis/tags/applications_api.py(0 hunks)kinde_sdk/apis/tags/business_api.py(0 hunks)kinde_sdk/apis/tags/callbacks_api.py(0 hunks)kinde_sdk/apis/tags/connected_apps_api.py(0 hunks)kinde_sdk/apis/tags/connections_api.py(0 hunks)kinde_sdk/apis/tags/environments_api.py(0 hunks)kinde_sdk/apis/tags/feature_flags_api.py(0 hunks)kinde_sdk/apis/tags/industries_api.py(0 hunks)kinde_sdk/apis/tags/o_auth_api.py(0 hunks)kinde_sdk/apis/tags/organizations_api.py(0 hunks)kinde_sdk/apis/tags/permissions_api.py(0 hunks)kinde_sdk/apis/tags/properties_api.py(0 hunks)kinde_sdk/apis/tags/property_categories_api.py(0 hunks)kinde_sdk/apis/tags/roles_api.py(0 hunks)kinde_sdk/apis/tags/subscribers_api.py(0 hunks)kinde_sdk/apis/tags/timezones_api.py(0 hunks)kinde_sdk/apis/tags/users_api.py(0 hunks)kinde_sdk/apis/tags/webhooks_api.py(0 hunks)kinde_sdk/configuration.py(0 hunks)kinde_sdk/exceptions.py(0 hunks)kinde_sdk/management/__init__.py(7 hunks)kinde_sdk/management/exceptions.py(1 hunks)kinde_sdk/management/kinde_api_client.py(1 hunks)
💤 Files with no reviewable changes (89)
- kinde_sdk/apis/paths/api_v1_webhooks_webhook_id.py
- kinde_sdk/apis/paths/init.py
- kinde_sdk/apis/init.py
- kinde_sdk/apis/paths/api_v1_business.py
- kinde_sdk/apis/paths/api_v1_applications_application_id_connections.py
- kinde_sdk/apis/paths/oauth2_introspect.py
- kinde_sdk/apis/paths/api_v1_subscribers_subscriber_id.py
- kinde_sdk/apis/paths/oauth2_user_profile.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key.py
- kinde_sdk/apis/paths/api_v1_users_user_id_refresh_claims.py
- kinde_sdk/apis/paths/api_v1_applications_application_id.py
- kinde_sdk/apis/paths/api_v1_feature_flags_feature_flag_key.py
- kinde_sdk/apis/paths/oauth2_v2_user_profile.py
- kinde_sdk/apis/paths/api_v1_users_user_id_properties_property_key.py
- kinde_sdk/apis/paths/api_v1_events_event_id.py
- kinde_sdk/apis/paths/api_v1_property_categories.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags.py
- kinde_sdk/apis/tags/properties_api.py
- kinde_sdk/apis/paths/api_v1_users_user_id_feature_flags_feature_flag_key.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_properties_property_key.py
- kinde_sdk/apis/paths/api_v1_feature_flags.py
- kinde_sdk/apis/paths/api_v1_event_types.py
- kinde_sdk/apis/paths/api_v1_connections_connection_id.py
- kinde_sdk/apis/paths/api_v1_apis_api_id_applications.py
- kinde_sdk/apis/paths/api_v1_webhooks.py
- kinde_sdk/apis/paths/api_v1_organization.py
- kinde_sdk/apis/tags/callbacks_api.py
- kinde_sdk/apis/paths/api_v1_roles_role_id_permissions.py
- kinde_sdk/apis/paths/api_v1_permissions_permission_id.py
- kinde_sdk/apis/paths/api_v1_connected_apps_revoke.py
- kinde_sdk/apis/paths/api_v1_apis_api_id.py
- kinde_sdk/apis/paths/api_v1_timezones.py
- kinde_sdk/apis/paths/api_v1_applications.py
- kinde_sdk/apis/tags/industries_api.py
- kinde_sdk/apis/paths/api_v1_apis.py
- kinde_sdk/apis/paths/api_v1_connections.py
- kinde_sdk/apis/paths/api_v1_property_categories_category_id.py
- kinde_sdk/apis/paths/api_v1_properties_property_id.py
- kinde_sdk/apis/paths/api_v1_connected_apps_auth_url.py
- kinde_sdk/apis/paths/api_v1_roles_role_id.py
- kinde_sdk/apis/paths/api_v1_applications_application_id_connections_connection_id.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id.py
- kinde_sdk/apis/paths/api_v1_users_user_id_properties.py
- kinde_sdk/apis/tags/users_api.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions_permission_id.py
- kinde_sdk/apis/tags/organizations_api.py
- kinde_sdk/apis/tags/apis_api.py
- kinde_sdk/apis/tags/applications_api.py
- kinde_sdk/apis/paths/api_v1_environment_feature_flags.py
- kinde_sdk/apis/paths/api_v1_organizations.py
- kinde_sdk/apis/paths/api_v1_roles_role_id_permissions_permission_id.py
- kinde_sdk/apis/paths/api_v1_users.py
- kinde_sdk/apis/tags/business_api.py
- kinde_sdk/apis/paths/api_v1_connected_apps_token.py
- kinde_sdk/apis/tags/roles_api.py
- kinde_sdk/apis/paths/api_v1_industries.py
- kinde_sdk/apis/paths/api_v1_applications_app_id_auth_redirect_urls.py
- kinde_sdk/apis/paths/api_v1_organization_org_code_handle.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles_role_id.py
- kinde_sdk/apis/paths/api_v1_permissions.py
- kinde_sdk/apis/paths/api_v1_environment_feature_flags_feature_flag_key.py
- kinde_sdk/apis/paths/api_v1_subscribers.py
- kinde_sdk/apis/paths/api_v1_properties.py
- kinde_sdk/apis/paths/api_v1_applications_app_id_auth_logout_urls.py
- kinde_sdk/apis/paths/api_v1_users_user_id_password.py
- kinde_sdk/apis/paths/oauth2_revoke.py
- kinde_sdk/apis/paths/api_v1_organization_org_code.py
- kinde_sdk/apis/paths/api_v1_roles.py
- kinde_sdk/apis/tags/feature_flags_api.py
- kinde_sdk/apis/tags/timezones_api.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_properties.py
- kinde_sdk/apis/tags/permissions_api.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users.py
- kinde_sdk/apis/tags/connections_api.py
- kinde_sdk/apis/tag_to_api.py
- kinde_sdk/apis/path_to_api.py
- kinde_sdk/apis/tags/subscribers_api.py
- kinde_sdk/apis/tags/init.py
- kinde_sdk/apis/tags/o_auth_api.py
- kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions.py
- kinde_sdk/apis/tags/environments_api.py
- kinde_sdk/apis/paths/api_v1_user.py
- kinde_sdk/apis/tags/connected_apps_api.py
- kinde_sdk/configuration.py
- kinde_sdk/apis/tags/property_categories_api.py
- kinde_sdk/api_client.py
- kinde_sdk/exceptions.py
- kinde_sdk/apis/tags/webhooks_api.py
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: brettchaldecott
PR: kinde-oss/kinde-python-sdk#83
File: kinde_sdk/auth/feature_flags.py:85-102
Timestamp: 2025-07-04T07:09:21.430Z
Learning: In the Kinde Python SDK v2, the maintainer (brettchaldecott) prefers to keep async keywords on methods in the feature flags module even when they don't currently perform await operations, as this approach has been tested and is preferred for the SDK's design.
📚 Learning: in the kinde python sdk v2, the maintainer (brettchaldecott) prefers to keep async keywords on metho...
Learnt from: brettchaldecott
PR: kinde-oss/kinde-python-sdk#83
File: kinde_sdk/auth/feature_flags.py:85-102
Timestamp: 2025-07-04T07:09:21.430Z
Learning: In the Kinde Python SDK v2, the maintainer (brettchaldecott) prefers to keep async keywords on methods in the feature flags module even when they don't currently perform await operations, as this approach has been tested and is preferred for the SDK's design.
Applied to files:
README_management_client.mdkinde_sdk/management/kinde_api_client.pykinde_sdk/management/__init__.py
📚 Learning: in the kinde python sdk v2, the tokenmanager.get_claims() method internally handles token lookups wi...
Learnt from: brettchaldecott
PR: kinde-oss/kinde-python-sdk#83
File: kinde_sdk/auth/claims.py:35-49
Timestamp: 2025-07-03T13:05:24.796Z
Learning: In the Kinde Python SDK v2, the TokenManager.get_claims() method internally handles token lookups with a fallback strategy - it first tries to get claims from access_token_claims and falls back to id_token_claims if access token claims are unavailable. The token_type parameter in Claims class methods (get_claim, get_all_claims) is therefore not used because the TokenManager abstracts away the token selection logic.
Applied to files:
kinde_sdk/management/kinde_api_client.py
🪛 Ruff (0.12.2)
generate_management_sdk.py
171-174: Combine if branches using logical or operator
Combine if branches
(SIM114)
🔇 Additional comments (12)
README_management_client.md (1)
287-287: Import-path update is correct and keeps docs in sync with package layoutThe example now points to
kinde_sdk.management.kinde_api_client, matching the refactor. No further action needed.README.md (3)
89-96: Docs kept consistent with new package structureAll FastAPI examples now import
KindeApiClientfromkinde_sdk.management.kinde_api_client. 👍
214-224: Good catch updating the management-client exampleThe management API quick-start also uses the new path – keeps readers from copy-pasting stale code.
357-369: Path fixed in the full usage exampleThe longer walkthrough compiles with the new layout. No issues spotted.
kinde_sdk/management/kinde_api_client.py (1)
8-15: Import paths updated correctly, but will currently break due to missing exceptionsMoving to
kinde_sdk.management.*is correct.
However, until the missing exceptions are added (seeexceptions.pycomment) these imports will error.kinde_sdk/management/__init__.py (2)
158-161: New entitlement models exported – looks fineExposing the new billing/entitlement response models from the package root is consistent with other models.
234-235: RenamedPortalLinkimport seems intentional
GetPortalLinkwas previously generated; the new name matches the schema. No action required.generate_management_sdk.py (5)
26-48: LGTM! Comprehensive import path fixing.The enhanced import fixing logic thoroughly handles all import patterns including individual imports, combined imports, and remaining references. This ensures a complete migration to the new
kinde_sdk.managementstructure.
96-131: Well-implemented cleanup function.The cleanup function properly handles the removal of legacy files and directories with appropriate error handling. Using warnings instead of failures ensures the script continues even if some files can't be removed due to permissions or other issues.
187-235: Well-implemented restore function.The restore function properly handles file restoration with appropriate existence checks and special handling for Kinde-specific exceptions. The cleanup of the backup directory after restoration is a good practice.
283-288: Excellent workflow implementation.The generation workflow properly sequences cleanup, backup, generation, and restoration operations. This ensures custom code is preserved while allowing clean regeneration of the SDK.
Also applies to: 316-318, 324-325
331-331: Good error handling improvement.Exiting with an error code when the generated directory is not found is the correct approach. This prevents leaving the SDK in an inconsistent state and helps CI/CD pipelines detect generation failures.
- Improve generate_management_sdk.py functionality - Enhance SDK generation process for better code quality
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
generate_management_sdk.py (1)
164-187: Improve exception extraction logic for robustnessThe exception extraction logic needs improvement as mentioned in the previous review. Additionally, the static analysis correctly identifies that lines 179-183 can be simplified.
To address the static analysis hint while waiting for the full refactor:
- # Include class body (pass statement or other content) - elif current_class_indent is not None and line.strip() and len(line) - len(line.lstrip()) > current_class_indent: - kinde_exceptions.append(line) - # Include empty lines within the section - elif not line.strip() and i + 1 < len(lines) and lines[i + 1].strip(): - kinde_exceptions.append(line) + # Include class body content or empty lines within the section + elif (current_class_indent is not None and line.strip() and len(line) - len(line.lstrip()) > current_class_indent) or \ + (not line.strip() and i + 1 < len(lines) and lines[i + 1].strip()): + kinde_exceptions.append(line)
🧹 Nitpick comments (1)
generate_management_sdk.py (1)
229-236: Consider improving newline handlingThe current implementation works but the newline handling could be cleaner.
- # Add Kinde-specific exceptions at the end - kinde_exceptions_section = f""" - -{kinde_exceptions_text}""" - - content += kinde_exceptions_section + # Add Kinde-specific exceptions at the end + if not content.endswith('\n'): + content += '\n' + content += f"\n{kinde_exceptions_text}"
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
generate_management_sdk.py(4 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: brettchaldecott
PR: kinde-oss/kinde-python-sdk#83
File: kinde_sdk/auth/feature_flags.py:85-102
Timestamp: 2025-07-04T07:09:21.430Z
Learning: In the Kinde Python SDK v2, the maintainer (brettchaldecott) prefers to keep async keywords on methods in the feature flags module even when they don't currently perform await operations, as this approach has been tested and is preferred for the SDK's design.
🪛 Ruff (0.12.2)
generate_management_sdk.py
179-183: Combine if branches using logical or operator
Combine if branches
(SIM114)
🔇 Additional comments (3)
generate_management_sdk.py (3)
96-131: LGTM! Well-structured cleanup functionThe function safely removes old generated files and directories with proper existence checks and error handling.
292-340: LGTM! Well-orchestrated generation flowThe updated generation flow properly handles:
- Cleanup of old generated files to prevent conflicts
- Preservation and restoration of custom files
- Proper error handling with exit codes
The removal of import fixing for the main
kinde_sdkdirectory aligns with the PR objective of restructuring into the management subpackage.
26-48: Potential double replacement issue in import fixing logicThe current implementation could cause double replacements. For example, if a file already contains
from kinde_sdk.management import schemas, line 39 would transform it tofrom kinde_sdk.management.management import schemas.Consider reordering the replacements or making the general replacement more specific:
- # Fix all kinde_sdk imports to use management module - content = content.replace('from kinde_sdk import schemas', 'from kinde_sdk.management import schemas') - content = content.replace('from kinde_sdk import api_client', 'from kinde_sdk.management import api_client') - content = content.replace('from kinde_sdk import exceptions', 'from kinde_sdk.management import exceptions') - content = content.replace('from kinde_sdk import configuration', 'from kinde_sdk.management import configuration') - content = content.replace('from kinde_sdk import rest', 'from kinde_sdk.management import rest') - - # Fix combined imports - content = content.replace('from kinde_sdk import api_client, exceptions', 'from kinde_sdk.management import api_client, exceptions') - content = content.replace('from kinde_sdk import exceptions, api_client', 'from kinde_sdk.management import exceptions, api_client') - - # Fix import statements - content = content.replace('from kinde_sdk import', 'from kinde_sdk.management import') + # Fix import statements - do general replacement first + content = content.replace('from kinde_sdk import', 'from kinde_sdk.management import') + + # Fix any double replacements that might have occurred + content = content.replace('from kinde_sdk.management.management import', 'from kinde_sdk.management import')Likely an incorrect or invalid review comment.
- Add custom_exceptions.py for specialized error handling - Improve kinde_api_client.py with enhanced functionality - Update exceptions.py with better error management - Refine generate_management_sdk.py for improved SDK generation
- Remove deprecated kinde_api_client.py from management module - Remove associated test file test_kinde_api_client.py - Clean up legacy components as part of SDK restructure
- Improve example_app.py with enhanced functionality - Update FastAPI integration examples for better demonstration
Explain your changes
Checklist
🛟 If you need help, consider asking for advice over in the Kinde community.