flashforge-python-api 1.3.1__tar.gz → 1.3.3__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.
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.gitignore +3 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/CHANGELOG.md +22 -2
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/CLAUDE.md +24 -7
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/PKG-INFO +1 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/ai_specs/TEST_COVERAGE_SPEC.md +1 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/models.md +12 -2
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/control.py +16 -9
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/creator5_palette.py +9 -6
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/files.py +26 -8
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/info.py +33 -9
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/job_control.py +109 -71
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/temp_control.py +14 -7
- flashforge_python_api-1.3.3/flashforge/api/misc/redaction.py +88 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/client.py +27 -10
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/discovery/discovery.py +10 -6
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/models/machine_info.py +40 -7
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/models/responses.py +22 -17
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/a3_client.py +27 -8
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/a4_client.py +5 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/endstop_status.py +10 -6
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/location_info.py +3 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/print_status.py +8 -3
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/printer_info.py +3 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/temp_info.py +3 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/thumbnail_info.py +19 -12
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/tcp_client.py +6 -5
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/pyproject.toml +1 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/fixtures/printer_responses.py +74 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_a3_client.py +36 -36
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_ad5x_job_control.py +3 -3
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_ad5x_live_integration.py +3 -3
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_client.py +55 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_creator5_palette.py +1 -3
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_discovery.py +23 -7
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_files.py +56 -0
- flashforge_python_api-1.3.3/tests/test_logging.py +229 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_machine_info_parity.py +91 -2
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_network_utils.py +2 -1
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_tcp_client.py +6 -9
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_utility_classes.py +6 -6
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.agent/rules/general-rules.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.claude/settings.local.json +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.github/workflows/publish.yml +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.github/workflows/test.yml +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/agents/code-quality.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/agents/data-model-specialist.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/agents/devops-specialist.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/agents/engineer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/agents/testing-specialist.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/bootstrap.json +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/best-practices/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/best-practices/references/patterns-reference.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/best-practices/references/solid-examples.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/_index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/billing-and-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/metrics.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/actions-runner-controller.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/github-hosted-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/larger-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/private-networking.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/runner-groups.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/runner-scale-sets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/self-hosted-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/runners/support-for-arc.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/artifact-attestations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/compromised-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/github_token.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/kubernetes-admissions-controller.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/openid-connect.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/script-injections.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/security/secrets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/concurrency.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/contexts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/custom-actions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/dependency-caching.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/deployment-environments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/expressions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/notifications-for-workflow-runs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/reusing-workflow-configurations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/variables.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/workflow-artifacts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/concepts/workflows-and-actions/workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/actions-vs-apps.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/continuous-deployment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/continuous-integration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/quickstart.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/get-started/understand-github-actions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/administer/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/administer/reuse-namespaces-on-ghecom.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/administer/view-metrics.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/create-a-cli-action.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/manage-custom-actions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/publish-in-github-marketplace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/release-and-maintain-actions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/set-exit-codes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/create-and-publish-actions/using-immutable-releases-and-tags-to-manage-your-actions-releases.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/configure-custom-protection-rules.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/control-deployments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/create-custom-protection-rules.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/manage-environments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/review-deployments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/configure-and-manage-deployments/view-deployment-history.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/amazon-elastic-container-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/azure-kubernetes-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/azure-static-web-app.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/docker-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/google-kubernetes-engine.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/java-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/net-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/nodejs-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/php-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/python-to-azure-app-service.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/deploy-to-third-party-platforms/sign-xcode-applications.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/deploy/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/get-support.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/connect-to-a-private-network/connect-with-oidc.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/connect-to-a-private-network/connect-with-wireguard.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/connect-to-a-private-network/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/customize-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/use-github-hosted-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/github-hosted-runners/view-current-jobs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/larger-runners/control-access.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/larger-runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/larger-runners/manage-larger-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/larger-runners/use-custom-images.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/larger-runners/use-larger-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/add-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/apply-labels.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/configure-the-application.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/customize-containers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/manage-access.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/monitor-and-troubleshoot.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/remove-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/run-scripts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/self-hosted-runners/use-in-a-workflow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-runners/use-proxy-servers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/approve-runs-from-forks.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/cancel-a-workflow-run.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/delete-a-workflow-run.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/disable-and-enable-workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/download-workflow-artifacts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/manage-caches.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/manually-run-a-workflow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/re-run-workflows-and-jobs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/remove-workflow-artifacts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/manage-workflow-runs/skip-workflow-runs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/add-a-status-badge.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/enable-debug-logging.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/use-the-visualization-graph.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/use-workflow-run-logs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/view-job-condition-logs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/view-job-execution-time.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/monitor-workflows/view-workflow-run-history.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/create-workflow-templates.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/reuse-workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/share-across-private-repositories.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/share-with-your-enterprise.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/reuse-automations/share-with-your-organization.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-azure.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-cloud-providers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-google-cloud-platform.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-hashicorp-vault.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-jfrog.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-octopus-deploy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-in-pypi.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/security-harden-deployments/oidc-with-reusable-workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/enforce-artifact-attestations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/increase-security-rating.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/manage-attestations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/secure-your-work/use-artifact-attestations/verify-attestations-offline.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/troubleshoot-workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/add-scripts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/deploy-to-environment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/pass-job-outputs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/run-job-variations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/set-default-values-for-jobs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/use-github-cli.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/use-jobs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/use-secrets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-what-workflows-do/use-variables.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-when-workflows-run/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-where-workflows-run/choose-the-runner-for-a-job.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-where-workflows-run/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/choose-where-workflows-run/run-jobs-in-a-container.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/how-tos/write-workflows/use-workflow-templates.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/github-actions-importer/custom-transformers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/github-actions-importer/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/github-actions-importer/supplemental-arguments-and-settings.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/limits.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/runners/github-hosted-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/runners/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/runners/larger-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/runners/self-hosted-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/security/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/security/oidc.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/security/secrets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/security/secure-use.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/contexts.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/dependency-caching.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/deployments-and-environments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/dockerfile-support.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/events-that-trigger-workflows.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/expressions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/metadata-syntax.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/reusing-workflow-configurations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/variables.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/workflow-cancellation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/workflow-commands.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/reference/workflows-and-actions/workflow-syntax.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/authenticate-with-github_token.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/go.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/java-with-ant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/java-with-gradle.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/java-with-maven.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/net.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/nodejs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/powershell.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/python.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/ruby.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/rust.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/swift.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/build-and-test-code/xamarin-apps.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/create-actions/create-a-composite-action.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/create-actions/create-a-javascript-action.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/create-actions/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/create-an-example-workflow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/manage-your-work/add-comments-with-labels.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/manage-your-work/add-labels-to-issues.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/manage-your-work/close-inactive-issues.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/manage-your-work/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/manage-your-work/schedule-issue-creation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/azure-devops-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/bamboo-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/bitbucket-pipelines-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/circleci-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/gitlab-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/jenkins-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/travis-ci-migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/automated-migrations/use-github-actions-importer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-azure-pipelines.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-circleci.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-gitlab-cicd.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-jenkins.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/migrate-to-github-runners.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/publish-packages/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/publish-packages/publish-docker-images.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/publish-packages/publish-java-packages-with-gradle.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/publish-packages/publish-java-packages-with-maven.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/publish-packages/publish-nodejs-packages.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/store-and-share-data.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/authenticate-to-the-api.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/deploy-runner-scale-sets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/quickstart.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/troubleshoot.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-actions-runner-controller/use-arc-in-a-workflow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-containerized-services/create-a-docker-container-action.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-containerized-services/create-postgresql-service-containers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-containerized-services/create-redis-service-containers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-containerized-services/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/github-actions/references/tutorials/use-containerized-services/use-docker-service-containers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/additional_features.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/builtin_types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/changelog.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/cheat_sheet_py3.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/class_basics.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/command_line.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/common_issues.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/config_file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/duck_type_compatibility.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/dynamic_typing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/error_code_list.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/error_code_list2.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/error_codes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/existing_code.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/extending_mypy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/faq.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/final_attrs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/generics.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/getting_started.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/inline_config.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/installed_packages.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/kinds_of_types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/literal_types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/metaclasses.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/more_types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/mypy_daemon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/protocols.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/running_mypy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/runtime_troubles.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/stubgen.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/stubs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/stubtest.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/supported_python_features.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/type_inference_and_annotations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/type_narrowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/references/typed_dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/scripts/clean_markdown.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/scripts/discover_pages.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/mypy/scripts/scrape_docs.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/aliases/AliasChoices.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/aliases/AliasGenerator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/aliases/AliasPath.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/base_model/BaseModel.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/base_model/create_model.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/config/ConfigDict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/config/with_config.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/dataclasses/dataclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/dataclasses/is_pydantic_dataclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/dataclasses/rebuild_dataclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticErrorMixin.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticForbiddenQualifier.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticImportError.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticInvalidForJsonSchema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticSchemaGenerationError.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticUndefinedAnnotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/errors/PydanticUserError.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/ComputedFieldInfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/Field.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/FieldInfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/ModelPrivateAttr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/PrivateAttr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/fields/computed_field.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_serializers/PlainSerializer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_serializers/SerializeAsAny.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_serializers/WrapSerializer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_serializers/field_serializer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_serializers/model_serializer.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/AfterValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/BeforeValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/FreeModelBeforeValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/FreeModelBeforeValidatorWithoutInfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/InstanceOf.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ModelBeforeValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ModelBeforeValidatorWithoutInfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ModelWrapValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ModelWrapValidatorHandler.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ModelWrapValidatorWithoutInfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/PlainValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/SkipValidation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/ValidateAs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/WrapValidator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/field_validator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/functional_validators/model_validator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/Examples.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/GenerateJsonSchema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/PydanticJsonSchemaWarning.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/SkipJsonSchema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/WithJsonSchema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/model_json_schema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/json_schema/models_json_schema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/AmqpDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/AnyHttpUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/AnyUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/AnyWebsocketUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/ClickHouseDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/CockroachDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/EmailStr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/FileUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/FtpUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/HttpUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/IPvAnyAddress.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/IPvAnyInterface.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/IPvAnyNetwork.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/KafkaDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/MariaDBDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/MongoDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/MySQLDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/NameEmail.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/NatsDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/PostgresDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/RedisDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/SnowflakeDsn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/UrlConstraints.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/WebsocketUrl.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/import_email_validator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/networks/validate_email.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/type_adapter/TypeAdapter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/AllowInfNan.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/AwareDatetime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Base64Encoder.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Base64UrlEncoder.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/ByteSize.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Discriminator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/EncodedBytes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/EncodedStr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/EncoderProtocol.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/FailFast.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/FutureDate.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/FutureDatetime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/GetPydanticSchema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/ImportString.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Json.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/NaiveDatetime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/PastDate.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/PastDatetime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/PathType.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/PaymentCardBrand.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/PaymentCardNumber.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Secret.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/SecretBytes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/SecretStr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Strict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/StringConstraints.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/Tag.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/UuidVersion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/conbytes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/condate.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/condecimal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/confloat.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/confrozenset.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/conint.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/conlist.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/conset.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/types/constr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/validate_call/validate_call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/version/check_pydantic_core_version.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/version/parse_mypy_version.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/version/version_info.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/api/version/version_short.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/config.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/conversion_table.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/dataclasses.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/experimental.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/fields.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/forward_annotations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/json.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/json_schema.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/models.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/performance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/pydantic_settings.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/serialization.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/strict_mode.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/type_adapter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/unions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/validation_decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/concepts/validators.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/contributing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/errors/errors.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/errors/usage_errors.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/errors/validation_errors.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/custom_validators.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/dynamic_models.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/files.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/orms.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/queues.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/examples/requests.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/help_with_pydantic.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/index.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/install.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/integrations/linting.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/version-policy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pydantic-dev/references/why.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/attic.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/customdirectory.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/markers.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/nonpython.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/parametrize.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/pythoncollection.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/reportingdemo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/simple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/example/special.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/anatomy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/ci.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/fixtures.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/flaky.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/goodpractices.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/pythonpath.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/explanation/types.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/getting-started.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/assert.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/bash-completion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/cache.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/capture-stdout-stderr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/capture-warnings.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/doctest.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/existingtestsuite.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/failures.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/fixtures.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/logging.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/mark.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/monkeypatch.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/output.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/parametrize.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/plugins.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/skipping.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/subtests.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/tmp_path.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/unittest.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/writing_hook_functions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/writing_plugins.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/how-to/xunit_setup.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/reference/customize.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/reference/exit-codes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/reference/fixtures.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/reference/plugin_list.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/pytest/references/reference/reference.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/anti-patterns.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/async-patterns.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/clean-code.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/code-review.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/data-validation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/error-handling.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/logging.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/performance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/project-structure.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/security.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/testing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/python-best-practices/references/type-hints.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/readme-generator/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/readme-generator/references/badge-patterns.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/readme-generator/references/section-templates.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/readme-generator/scripts/package.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/readme-generator/scripts/validate_readme.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/INDEX.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/configuration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/contributing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/editors/features.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/editors/migration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/editors/overview.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/editors/settings.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/editors/setup.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/faq.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/formatter/black.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/formatter/overview.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/installation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/integrations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/linter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/preview.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/ruff.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/abstract-base-class-without-abstract-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/access-annotations-from-class-dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow-dag-no-schedule-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow-variable-name-task-id-mismatch.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow3-moved-to-provider.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow3-removal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow3-suggested-to-move-to-provider.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/airflow3-suggested-update.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-class-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-function-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-unicode-character-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-unicode-character-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-unicode-character-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ambiguous-variable-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/and-or-ternary.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/any-eq-ne-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/any-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/argument-default-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert-false.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert-on-string-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert-raises-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert-with-print-message.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assert.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assignment-default-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assignment-in-assert.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/assignment-to-os-environ.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/async-busy-wait.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/async-function-with-timeout.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/async-zero-sleep.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/asyncio-dangling-task.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/avoidable-escaped-quote.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/await-outside-async.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-dunder-method-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-exit-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-file-permissions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-open-mode.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-quotes-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-quotes-inline-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-quotes-multiline-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-staticmethod-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-str-strip-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-string-format-character.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-string-format-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-version-info-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bad-version-info-order.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/banned-api.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/banned-import-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/banned-import-from.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/banned-module-level-imports.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bare-except.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/batched-without-explicit-strict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bidirectional-unicode.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/binary-op-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/bit-count.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-after-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-after-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-before-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-before-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-between-methods.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-line-with-whitespace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-lines-after-function-or-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-lines-before-nested-definition.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-lines-between-header-and-content.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blank-lines-top-level.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blanket-noqa.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blanket-type-ignore.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blind-except.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-http-call-httpx-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-http-call-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-input-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-open-call-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-path-method-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/blocking-sleep-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/boolean-chained-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/boolean-default-value-positional-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/boolean-positional-value-in-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/boolean-type-hint-positional-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/break-outside-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-argument-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-attribute-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-import-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-lambda-argument-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-open.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/builtin-variable-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/byte-string-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/cached-instance-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-date-fromtimestamp.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-date-today.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-fromtimestamp.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-now-without-tzinfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-strptime-without-zone.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-today.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-utcfromtimestamp.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-utcnow.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-datetime-without-tzinfo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/call-with-shell-equals-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/camelcase-imported-as-acronym.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/camelcase-imported-as-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/camelcase-imported-as-lowercase.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/cancel-scope-no-checkpoint.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/check-and-remove-from-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/class-as-data-structure.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/class-with-mixed-type-vars.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/collapsible-else-if.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/collapsible-if.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/collection-literal-concatenation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/collections-named-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/commented-out-code.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/compare-to-empty-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/compare-with-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/comparison-of-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/comparison-with-itself.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/complex-assignment-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/complex-if-statement-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/complex-structure.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/constant-imported-as-non-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/continue-in-finally.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/continue-outside-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/convert-named-tuple-functional-to-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/convert-typed-dict-functional-to-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/create-subprocess-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/custom-type-var-for-self.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dataclass-enum.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/datetime-min-max.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/datetime-timezone-utc.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/debugger.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/decimal-from-float-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/default-except-not-last.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/default-factory-kwarg.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/delete-full-slice.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/deprecated-c-element-tree.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/deprecated-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/deprecated-log-warn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/deprecated-mock-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/deprecated-unittest-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dict-get-with-none-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dict-index-missing-items.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dict-iter-missing-items.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/direct-logger-instantiation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-all-with-model-form.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-exclude-with-model-form.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-extra.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-locals-in-render-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-model-without-dunder-str.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-non-leading-receiver-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-nullable-model-string-field.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-raw-sql.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/django-unordered-body-content-in-model.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/doc-line-too-long.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-extraneous-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-extraneous-parameter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-extraneous-returns.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-extraneous-yields.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-missing-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-missing-returns.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-missing-yields.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-starts-with-this.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/docstring-tab-indentation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dot-format-in-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/double-negation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/dunder-function-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-bases.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-class-field-definition.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-handler-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-isinstance-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-literal-member.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-try-block-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-union-member.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/duplicate-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ellipsis-in-non-empty-class-body.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/empty-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/empty-docstring-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/empty-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/empty-method-without-abstract-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/empty-type-checking-block.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/enumerate-for-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/eq-without-hash.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/error-instead-of-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/error-suffix-on-exception-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/escape-sequence-in-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/eval.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/exc-info-outside-except-handler.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/except-with-empty-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/except-with-non-exception-classes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/exception-without-exc-info.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/exec-builtin.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/explicit-f-string-type-conversion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/explicit-string-concatenation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/expr-and-false.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/expr-and-not-expr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/expr-or-not-expr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/expr-or-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/expressions-in-star-assignment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/extraneous-parentheses.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string-in-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string-in-get-text-func-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string-missing-placeholders.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string-number-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/f-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/falsy-dict-get-fallback.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/fast-api-non-annotated-dependency.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/fast-api-redundant-response-model.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/fast-api-unused-path-parameter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/first-word-uncapitalized.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/flask-debug-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/for-loop-set-mutations.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/for-loop-writes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/format-in-get-text-func-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/format-literals.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/forward-annotation-syntax-error.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/fromisoformat-replace-z.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/function-call-in-dataclass-default-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/function-call-in-default-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/function-uses-loop-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/future-annotations-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/future-feature-not-defined.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/future-required-type-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/future-rewritable-type-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/generator-return-from-iter-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/generic-not-last-base-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/get-attr-with-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/glob.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/global-at-module-level.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/global-statement.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/global-variable-not-assigned.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-bind-all-interfaces.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-password-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-password-func-arg.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-password-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-sql-expression.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-string-charset.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hardcoded-temp-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hashlib-digest-hex.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/hashlib-insecure-hash-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-else-block-instead-of-dict-get.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-else-block-instead-of-dict-lookup.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-else-block-instead-of-if-exp.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-exp-instead-of-or-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-expr-min-max.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-expr-with-false-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-expr-with-true-false.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-expr-with-twisted-arms.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-key-in-dict-del.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-stmt-min-max.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/if-with-same-arms.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-class-var-in-dataclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-cwd.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-namespace-package.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-optional.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-return-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-return.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/implicit-string-concatenation-in-collection-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/import-outside-top-level.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/import-private-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/import-self.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/import-shadowed-by-loop-var.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/in-dict-keys.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/in-empty-collection.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/incorrect-blank-line-after-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/incorrect-blank-line-before-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/incorrect-dict-iterator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/incorrectly-parenthesized-tuple-in-subscript.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/indentation-with-invalid-multiple-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/indentation-with-invalid-multiple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/indented-form-feed.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/int-on-sliced-str.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-all-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-all-object.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-argument-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-assert-message-literal-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-bool-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-bytes-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-character-backspace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-character-esc.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-character-nul.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-character-sub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-character-zero-width-space.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-class-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-envvar-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-envvar-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-escape-sequence.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-first-argument-name-for-class-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-first-argument-name-for-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-formatter-suppression-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-function-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-get-logger-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-hash-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-index-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-index-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-length-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-mock-access.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-module-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-pathlib-with-suffix.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-print-syntax.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-pyproject-toml.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-rule-code.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-str-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-todo-capitalization.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/invalid-todo-tag.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/io-error.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/is-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/isinstance-type-none.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/iter-method-return-iterable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/iteration-over-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/jinja2-autoescape-false.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/jump-statement-in-finally.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/lambda-assignment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/late-future-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/legacy-form-pytest-raises.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/len-test.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/line-contains-fixme.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/line-contains-hack.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/line-contains-todo.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/line-contains-xxx.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/line-too-long.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/list-reverse-copy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/literal-membership.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/load-before-global-declaration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/log-exception-outside-except-handler.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-config-insecure-listen.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-eager-conversion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-exc-info.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-extra-attr-clash.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-f-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-percent-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-redundant-exc-info.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-string-concat.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-string-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-too-few-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-too-many-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/logging-warn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/long-sleep-not-forever.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/loop-iterator-mutation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/loop-variable-overrides-iterator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/lowercase-imported-as-non-lowercase.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/lru-cache-with-maxsize-none.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/lru-cache-without-parameters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/magic-value-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mako-templates.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/manual-dict-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/manual-from-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/manual-list-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/manual-list-copy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/map-int-version-parsing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/map-without-explicit-strict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/math-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/meta-class-abc-meta.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mismatched-section-underline-length.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/misplaced-bare-raise.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-blank-line-after-last-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-blank-line-after-summary.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-copyright-notice.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-dashed-underline-after-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-f-string-syntax.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-maxsplit-arg.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-new-line-after-section-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-newline-at-end-of-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-required-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-return-type-class-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-return-type-private-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-return-type-special-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-return-type-static-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-return-type-undocumented-public-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-section-name-colon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-section-underline-after-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-space-after-todo-colon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-terminal-punctuation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-todo-author.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-todo-colon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-todo-description.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-todo-link.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-trailing-comma.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-trailing-period.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-type-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-type-cls.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-type-function-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-type-kwargs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-type-self.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-after-keyword.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-around-arithmetic-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-around-bitwise-or-shift-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-around-modulo-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-around-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace-around-parameter-equals.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/missing-whitespace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mixed-case-variable-in-class-scope.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mixed-case-variable-in-global-scope.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mixed-spaces-and-tabs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/modified-iterating-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/module-import-not-at-top-of-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multi-line-implicit-string-concatenation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multi-line-summary-first-line.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multi-line-summary-second-line.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multi-value-repeated-key-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multi-value-repeated-key-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-imports-on-one-line.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-leading-hashes-for-block-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-spaces-after-comma.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-spaces-after-keyword.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-spaces-after-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-spaces-before-keyword.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-spaces-before-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-starred-expressions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-starts-ends-with.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-statements-on-one-line-colon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-statements-on-one-line-semicolon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/multiple-with-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mutable-argument-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mutable-class-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mutable-contextvar-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mutable-dataclass-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/mutable-fromkeys-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/named-expr-without-context.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/nan-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/native-literals.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/needless-bool.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/needless-else.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/negate-equal-op.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/negate-not-equal-op.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/nested-min-max.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/never-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/new-line-after-last-paragraph.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-blank-line-after-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-blank-line-before-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-classmethod-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-explicit-stacklevel.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-indented-block-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-indented-block.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-return-argument-annotation-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-self-use.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-slots-in-namedtuple-subclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-slots-in-str-subclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-slots-in-tuple-subclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-space-after-block-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-space-after-inline-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/no-staticmethod-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-ascii-import-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-ascii-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-augmented-assignment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-capitalized-section-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-empty-stub-body.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-imperative-mood.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-lowercase-variable-in-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-octal-permissions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep585-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep604-annotation-optional.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep604-annotation-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep604-isinstance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep646-unpack.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep695-generic-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep695-generic-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-pep695-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-self-return-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-slot-assignment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/non-unique-enums.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/none-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/none-not-at-end-of-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/nonlocal-and-global.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/nonlocal-without-binding.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/not-in-test.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/not-is-test.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/numeric-literal-too-long.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/numpy-deprecated-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/numpy-deprecated-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/numpy-legacy-random.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/numpy2-deprecation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/open-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/open-file-with-context-handler.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-chmod.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-error-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-getcwd.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-listdir.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-makedirs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-mkdir.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-abspath.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-basename.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-dirname.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-exists.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-expanduser.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-getatime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-getctime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-getmtime.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-getsize.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-isabs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-isdir.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-isfile.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-islink.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-join.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-samefile.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-path-splitext.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-readlink.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-remove.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-rename.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-replace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-rmdir.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-sep-split.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-stat.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-symlink.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/os-unlink.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/outdated-version-block.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/over-indentation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/over-indented.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/overindented-section-underline.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/overindented-section.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/overload-with-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/p-print.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-df-variable-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-nunique-constant-series-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-at.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-iat.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-is-null.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-ix.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-not-null.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-pivot-or-unstack.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-read-table.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-stack.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-dot-values.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-inplace-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pandas-use-of-pd-merge.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/paramiko-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/parenthesize-chained-operators.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pass-in-class-body.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pass-statement-stub-body.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/patch-version-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/path-constructor-current-directory.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pep484-style-positional-only-parameter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-expected-mapping.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-expected-sequence.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-extra-named-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-invalid-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-missing-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-mixed-positional-and-named.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-positional-count-mismatch.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-star-requires-sequence.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/percent-format-unsupported-format-character.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/post-init-default.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/potential-index-error.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/print-empty-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/print.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/printf-in-get-text-func-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/printf-string-formatting.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/private-member-access.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/private-type-parameter.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/prohibited-trailing-comma.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/property-with-parameters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/property-without-return.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/py-path.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-assert-always-false.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-assert-in-except.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-composite-assertion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-deprecated-yield-fixture.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-duplicate-parametrize-test-cases.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-erroneous-use-fixtures-on-fixture.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-extraneous-scope-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-fail-without-message.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-fixture-finalizer-callback.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-fixture-incorrect-parentheses-style.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-fixture-param-without-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-fixture-positional-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-incorrect-fixture-name-underscore.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-incorrect-mark-parentheses-style.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-incorrect-pytest-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-missing-fixture-name-underscore.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-parameter-with-default-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-parametrize-names-wrong-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-parametrize-values-wrong-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-patch-with-lambda.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-raises-ambiguous-pattern.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-raises-too-broad.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-raises-with-multiple-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-raises-without-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-unittest-assertion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-unittest-raises-assertion.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-unnecessary-asyncio-mark-on-fixture.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-use-fixtures-without-parameters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-useless-yield-fixture.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-warns-too-broad.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-warns-with-multiple-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/pytest-warns-without-warning.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/quadratic-list-summation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/quoted-annotation-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/quoted-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/quoted-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-not-implemented.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-vanilla-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-vanilla-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-within-try.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raise-without-from-inside-except.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/raw-string-in-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/re-sub-positional-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/read-whole-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/readlines-in-for.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redeclared-assigned-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redefined-argument-from-local.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redefined-loop-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redefined-slots-in-subclass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redefined-while-unused.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redirected-noqa.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-backslash.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-bool-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-final-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-literal-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-log-base.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-none-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-numeric-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-open-modes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/redundant-tuple-in-exception-handler.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/regex-flag-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reimplemented-builtin.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reimplemented-container-builtin.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reimplemented-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reimplemented-starmap.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/relative-imports.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/repeated-append.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/repeated-equality-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/repeated-global.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/repeated-isinstance-calls.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/repeated-keyword-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/replace-stdout-stderr.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/replace-str-enum.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/replace-universal-newlines.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/request-with-no-cert-validation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/request-without-timeout.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reraise-no-cause.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/return-in-generator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/return-in-init.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/return-in-try-except-finally.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/return-outside-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/reuse-of-groupby-generator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/root-logger-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ruff-static-key-dict-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ruff-unsafe-markup-use.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/rules.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/run-process-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/runtime-cast-value.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/runtime-import-in-type-checking-block.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/runtime-string-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/self-assigning-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/self-or-cls-assignment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/set-attr-with-constant.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shallow-copy-environ.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shebang-leading-whitespace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shebang-missing-executable-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shebang-missing-python.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shebang-not-executable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/shebang-not-first-line.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/signature-in-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/single-item-membership-test.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/single-line-implicit-string-concatenation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/single-string-slots.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/singledispatch-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/singledispatchmethod-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/six-py3.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/slice-copy.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/slice-to-remove-prefix-or-suffix.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/snake-case-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/snmp-insecure-version.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/snmp-weak-cryptography.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sorted-min-max.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/split-static-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ssh-no-host-key-verification.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ssl-insecure-version.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ssl-with-bad-defaults.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/ssl-with-no-version.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/star-arg-unpacking-after-keyword-arg.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/starmap-zip.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/start-process-with-a-shell.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/start-process-with-no-shell.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/start-process-with-partial-path.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/static-join-to-f-string.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/static-key-dict-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/stdlib-module-shadowing.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/stop-iteration-return.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/str-or-repr-defined-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-dot-format-extra-named-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-dot-format-extra-positional-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-dot-format-invalid-format.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-dot-format-missing-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-dot-format-mixing-automatic.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/string-or-bytes-too-long.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/strip-with-multi-characters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/stub-body-multiple-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/subclass-builtin.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/subprocess-popen-preexec-fn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/subprocess-popen-with-shell-equals-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/subprocess-run-without-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/subprocess-without-shell-equals-true.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/super-call-with-parameters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/super-without-brackets.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/superfluous-else-break.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/superfluous-else-continue.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/superfluous-else-raise.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/superfluous-else-return.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suppressible-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/surrounding-whitespace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-eval-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-ftp-lib-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-ftplib-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-httpoxy-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-insecure-cipher-mode-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-insecure-cipher-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-insecure-hash-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-lxml-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-mark-safe-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-marshal-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-mktemp-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-non-cryptographic-random-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-pickle-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-pickle-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-pycrypto-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-pyghmi-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-subprocess-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-telnet-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-telnetlib-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-unverified-context-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-url-open-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-element-tree-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-etree-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-expat-builder-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-expat-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-expat-reader-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-mini-dom-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-minidom-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-pull-dom-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-pulldom-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-sax-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xml-sax-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xmlc-element-tree-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xmle-tree-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/suspicious-xmlrpc-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/syntax-error.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-exit-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-cmp-str10.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-cmp-str3.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-info-minor-cmp-int.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-info0-eq3.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-info1-cmp-int.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-slice1.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version-slice3.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version0.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/sys-version2.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/t-suffixed-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-after-comma.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-after-keyword.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-after-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-before-keyword.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-before-operator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tab-indentation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/tarfile-unsafe-members.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/timeout-error-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-few-spaces-before-inline-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-blank-lines.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-boolean-expressions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-branches.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-locals.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-nested-blocks.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-newlines-at-end-of-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-positional-arguments.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-public-methods.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-return-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/too-many-statements.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/trailing-comma-on-bare-tuple.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/trailing-whitespace.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/trio-sync-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/triple-single-quotes.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/true-false-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/try-consider-else.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/try-except-continue.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/try-except-in-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/try-except-pass.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-alias-without-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-bivariance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-check-without-type-error.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-comment-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-name-incorrect-variance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-none-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-of-primitive.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/type-param-name-mismatch.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/typed-argument-default-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/typing-only-first-party-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/typing-only-standard-library-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/typing-only-third-party-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/typing-text-str-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unaliased-collections-abc-set-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unannotated-assignment-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unary-prefix-increment-decrement.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unassigned-special-variable-in-stub.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/uncapitalized-environment-variables.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unconventional-import-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-export.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-local-with-import-star-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-local-with-import-star.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-local-with-nested-import-star-usage.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-local.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undefined-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/under-indentation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-magic-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-param.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-init.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-method.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-module.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-nested-class.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-public-package.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/undocumented-warn.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unexpected-indentation-comment.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unexpected-indentation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unexpected-spaces-around-keyword-parameter-equals.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unexpected-special-method-signature.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unicode-kind-prefix.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unintentional-type-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unix-command-wildcard-injection.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-assign.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-builtin-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-call-around-sorted.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-cast-to-int.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-class-parentheses.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-collection-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-comprehension-in-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-default-type-args.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-dict-comprehension-for-iterable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-dict-index-lookup.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-dict-kwargs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-direct-lambda-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-double-cast-or-process.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-dunder-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-empty-iterable-within-deque-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-encode-utf8.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-enumerate.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-escaped-quote.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-from-float.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-future-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-generator-dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-generator-list.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-generator-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-iterable-allocation-for-first-element.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-key-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-lambda.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-list-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-list-cast.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-list-comprehension-dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-list-comprehension-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-list-index-lookup.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-set.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-within-dict-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-within-list-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-literal-within-tuple-call.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-map.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-multiline-docstring.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-nested-literal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-paren-on-raise-exception.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-placeholder.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-range-start.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-regular-expression.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-return-none.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-round.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-spread.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-subscript-reversal.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unnecessary-type-union.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unpacked-list-comprehension.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unprefixed-type-param.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unquoted-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unraw-re-pattern.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unrecognized-platform-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unrecognized-platform-name.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unrecognized-version-info-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unreliable-callable-check.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsafe-markup-use.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsafe-yaml-load.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsorted-dunder-all.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsorted-dunder-slots.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsorted-imports.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unspecified-encoding.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unsupported-method-call-on-all.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-annotation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-async.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-class-method-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-function-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-import.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-lambda-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-loop-control-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-method-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-noqa.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-private-protocol.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-private-type-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-private-type-var.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-private-typed-dict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-static-method-argument.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-unpacked-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/unused-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/used-dummy-variable.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-class-metaclass-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-contextlib-suppress.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-else-on-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-exception-statement.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-expression.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-if-else.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-import-alias.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-metaclass-type.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-object-inheritance.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-return.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-semicolon.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-try-except.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/useless-with-lock.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/utf8-encoding-declaration.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/verbose-decimal-constructor.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/verbose-log-message.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/verbose-raise.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/wait-for-process-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/weak-cryptographic-key.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/whitespace-after-decorator.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/whitespace-after-open-bracket.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/whitespace-before-close-bracket.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/whitespace-before-parameters.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/whitespace-before-punctuation.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/write-whole-file.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/wrong-tuple-length-version-comparison.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/yield-from-in-async-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/yield-in-for-loop.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/yield-in-init.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/yield-outside-function.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/yoda-conditions.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/zip-dict-keys-and-values.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/zip-instead-of-pairwise.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/rules/zip-without-explicit-strict.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/settings.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/tutorial.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/references/versioning.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/scripts/bulk_scrape_ruff.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/scripts/discover_ruff_docs.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/ruff-dev/scripts/scrape_ruff_docs.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/sub-agent-creator/SKILL.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/sub-agent-creator/references/agent-creation-prompt.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/sub-agent-creator/references/sub-agents-docs.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/.pi/skills/sub-agent-creator/scripts/validate_agent.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/LICENSE +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/README.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/README.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/advanced.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/api_reference.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/client.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/parity.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/docs/protocols.md +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/advanced_tcp.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/basic_connection.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/discovery.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/file_operations.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/job_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/led_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/status_monitoring.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/examples/temperature_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/constants/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/constants/commands.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/constants/endpoints.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/filament/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/filament/filament.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/misc/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/misc/scientific_notation.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/misc/temperature.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/network/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/network/fnet_code.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/network/utils.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/discovery/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/models/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/ff_client.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/gcode/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/gcode/a3_gcode_controller.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/gcode/gcode_controller.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/gcode/gcodes.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/tcp/parsers/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/__init__.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/conftest.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/printer_config.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/run_tests.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_5m_pro_live_integration.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_a4_client.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_ad5x_models.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_additional_parsers.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_creator5_job_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_http_only_guard.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_info.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_job_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_parsers.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_temp_control.py +0 -0
- {flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/tests/test_temp_control_http.py +0 -0
|
@@ -5,7 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [1.3.3] - 2026-07-26
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Diagnostic output now goes to the `logging` module instead of `print()`.** 95 `print()` calls across 10 modules were the library's only record of why an operation failed — and under Home Assistant, the largest consumer, stdout reaches nowhere the user can see. Every silent failure therefore looked identical from the outside: a `/detail` response the library could not parse, an unreachable printer, and a rejected check code all produced the same bare `None` or `False` with no explanation anywhere. That is the ambiguity behind both reports on `ff-5mp-hass#18`, where one reporter concluded their check code was wrong and another concluded the integration needed TCP port 8899; neither could see the actual cause. Failures and refused commands now log at `WARNING`, request/response tracing at `DEBUG`, under per-module loggers (`flashforge.api.controls.info`, `…job_control`, and so on) so consumers can raise the level for one area alone. Two intentional exceptions remain on stdout: `FlashForgePrinterDiscovery.print_debug_info()`, whose entire purpose is to dump a hex/ASCII view for a human, and the `_async_main` CLI demo.
|
|
13
|
+
|
|
14
|
+
### Security
|
|
15
|
+
|
|
16
|
+
- **Credentials, network identifiers, and cloud registration codes are redacted from logs.** Moving diagnostics into `logging` would otherwise have written secrets to a file users routinely paste into bug reports. The upload paths logged their full HTTP headers — including `serialNumber` and `checkCode`, which together are complete control of the printer over the LAN API — and `send_control_command` printed its whole payload, credentials included, on *every single command*. The new `flashforge.api.misc.redaction` helpers mask `serialNumber`, `checkCode`, `macAddr`, `ipAddr`, `flashRegisterCode`, and `polarRegisterCode` (in both firmware camelCase and library snake_case, recursing into nested structures) before any value can be formatted into a log record. The key set deliberately matches what `ff-5mp-hass` already strips from its diagnostics download, so a log paste and a diagnostics upload cannot disagree about what is safe to share.
|
|
17
|
+
|
|
18
|
+
## [1.3.2] - 2026-07-26
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **A firmware field this library has not seen no longer presents to the user as a wrong check code.** `Product`, `ProductResponse`, `ThumbnailResponse`, and `GenericResponse` — the envelope every inbound response inherits — were `extra="forbid"`, so one unrecognized key raised `ValidationError`. `send_product_command` caught it and returned a bare `False`, which is exactly what a printer refusing the credentials returns; `ff-5mp-hass` turns that into "the check code is incorrect". The same trap sat one level deeper on `/detail`: `FFPrinterDetail` has been `extra="allow"` since 1.3.0, but its children `MatlStationInfo`, `SlotInfo`, `IndepMatlInfo`, and `FFGcodeToolData` still forbade extras, and a child that rejects a field fails the whole response — most likely on a 4-head Creator 5 Pro reporting four loaded slots, the model least covered by existing fixtures. All inbound models now allow extras. Outbound request-parameter models (`AD5X*Params`, `Creator5*Params`, `FilamentArgs`) and the internally constructed `FFMachineInfo` / `Temperature` keep `extra="forbid"`, where it catches our own typos rather than a firmware revision. `send_product_command` now logs the `ValidationError` distinctly instead of letting an unparsed response impersonate rejected credentials. Reported as `ff-5mp-hass#18`.
|
|
23
|
+
|
|
24
|
+
- **`FFMachineInfo.has_matl_station` no longer misses the Material Station on the Creator 5 series.** It was a straight copy of the raw `hasMatlStation` value from `/detail`, which is an AD5X-only field — a Creator 5 Pro omits it entirely (verified on real hardware, pid 41, firmware 1.9.4) while reporting a fully populated `matlStationInfo` with four loaded slots. It therefore parsed as `None`, and consumers gating on it saw no station on exactly the models that have one. The parser already computed the correct value for its own AD5X heuristic (flag `is True` OR `slot_cnt > 0` OR non-empty `slot_infos`) and then discarded it; that derived value is now what the property exposes. Its type narrows from `bool | None` to `bool` — a capability has no "unknown" state, and offering one is what allowed an unreported flag to read as absent hardware. `FFPrinterDetail.has_matl_station` still carries the untouched firmware value.
|
|
25
|
+
|
|
26
|
+
- **`/gcodeList` no longer loses every file's metadata when the firmware adds a field.** `GCodeListResponse` and `FFGcodeFileEntry` were `extra="forbid"`, and `Files.get_recent_file_list()` caught the resulting `ValidationError` and fell back to a names-only list — `printing_time=0` and every other field `None`, for every file. One unrecognized key anywhere in the payload was therefore enough to silently strip print time, filament weight, and the per-tool material data on all models, and the result is byte-for-byte what a printer that genuinely reports names only looks like. Both models now use `extra="allow"` (matching `FFPrinterDetail`), and the remaining fallback logs a warning naming what was lost instead of degrading in silence.
|
|
9
27
|
|
|
10
28
|
## [1.3.1] - 2026-06-28
|
|
11
29
|
|
|
@@ -185,7 +203,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
185
203
|
- Type hints for all public APIs
|
|
186
204
|
- Inline code documentation
|
|
187
205
|
|
|
188
|
-
[Unreleased]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.3.
|
|
206
|
+
[Unreleased]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.3.3...HEAD
|
|
207
|
+
[1.3.3]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.3.2...v1.3.3
|
|
208
|
+
[1.3.2]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.3.1...v1.3.2
|
|
189
209
|
[1.3.1]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.3.0...v1.3.1
|
|
190
210
|
[1.3.0]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.2.3...v1.3.0
|
|
191
211
|
[1.2.3]: https://github.com/GhostTypes/ff-5mp-api-py/compare/v1.2.2...v1.2.3
|
|
@@ -5,7 +5,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
5
5
|
## Project Overview
|
|
6
6
|
|
|
7
7
|
FlashForge Python API is a comprehensive Python library for controlling FlashForge 3D printers. The library provides **dual-protocol** support:
|
|
8
|
-
- **HTTP API**: Modern REST-like API for Adventurer 5M/5X series printers
|
|
8
|
+
- **HTTP API**: Modern REST-like API for Adventurer 5M/5X and Creator 5 series printers
|
|
9
9
|
- **TCP/G-code API**: Legacy protocol supporting all networked FlashForge printers
|
|
10
10
|
|
|
11
11
|
The architecture is fully async/await throughout and uses Pydantic for type-safe data models.
|
|
@@ -26,7 +26,7 @@ The library has a layered client architecture:
|
|
|
26
26
|
- `info`: Status and machine information
|
|
27
27
|
- `files`: File operations (upload/download/list)
|
|
28
28
|
- `temp_control`: Temperature settings
|
|
29
|
-
- Automatically detects printer capabilities (is_ad5x, is_pro) based on model
|
|
29
|
+
- Automatically detects printer capabilities (is_ad5x, is_pro, is_creator5, is_creator5_pro) based on model
|
|
30
30
|
|
|
31
31
|
2. **`flashforge.tcp.ff_client.FlashForgeClient`** (TCP high-level client)
|
|
32
32
|
- Extends `FlashForgeTcpClient`
|
|
@@ -69,7 +69,8 @@ flashforge/
|
|
|
69
69
|
│ │ ├── job_control.py # JobControl class
|
|
70
70
|
│ │ ├── info.py # Info class
|
|
71
71
|
│ │ ├── files.py # Files class (named 'files' for user API)
|
|
72
|
-
│ │
|
|
72
|
+
│ │ ├── temp_control.py # TempControl class
|
|
73
|
+
│ │ └── creator5_palette.py # Creator 5 material-station palette (CIEDE2000)
|
|
73
74
|
│ ├── network/ # Network utilities
|
|
74
75
|
│ │ ├── utils.py # NetworkUtils for HTTP requests
|
|
75
76
|
│ │ └── fnet_code.py # FNetCode for authentication
|
|
@@ -84,7 +85,7 @@ flashforge/
|
|
|
84
85
|
|
|
85
86
|
**Dual Protocol Strategy**: HTTP is used for high-level operations (printer status, file listing, job control commands) while TCP/G-code is used for real-time operations (temperature monitoring via M105, print progress via M27, thumbnails via M662).
|
|
86
87
|
|
|
87
|
-
**Model Detection**: `MachineInfoParser.from_detail()` derives `is_pro` / `is_ad5x` on `FFMachineInfo` from the firmware-set integer `pid` field on `/detail` (35 = Adventurer 5M, 36 = 5M Pro, 38 = AD5X — see `KNOWN_HTTP_PIDS` in `flashforge/api/controls/info.py`). The `pid` value is also passed through to `FFMachineInfo.pid` for downstream consumers. When `pid` is absent (older firmware) the parser falls back to a name+capability heuristic, but new code should NOT rely on substring-matching `detail.name` — that field is user-mutable via the printer's LCD or cloud account and changing it broke detection in pre-1.2.3 builds (see CHANGELOG entry for 1.2.3, ref `ff-5mp-hass#13`).
|
|
88
|
+
**Model Detection**: `MachineInfoParser.from_detail()` derives `is_pro` / `is_ad5x` / `is_creator5` / `is_creator5_pro` on `FFMachineInfo` from the firmware-set integer `pid` field on `/detail` (35 = Adventurer 5M, 36 = 5M Pro, 38 = AD5X, plus Creator 5 / Creator 5 Pro PIDs — see `KNOWN_HTTP_PIDS` and the `PID_*` constants in `flashforge/api/controls/info.py`). The `pid` value is also passed through to `FFMachineInfo.pid` for downstream consumers. When `pid` is absent (older firmware) the parser falls back to a name+capability heuristic, but new code should NOT rely on substring-matching `detail.name` — that field is user-mutable via the printer's LCD or cloud account and changing it broke detection in pre-1.2.3 builds (see CHANGELOG entry for 1.2.3, ref `ff-5mp-hass#13`). The Creator 5 series is **HTTP-only**: it exposes no TCP/8899 service, so `client._http_only` is true and the client routes temperature control through the HTTP `temperatureCtl_cmd` instead of TCP M105.
|
|
88
89
|
|
|
89
90
|
**Parser Pattern**: TCP responses are parsed by specialized parser classes in `tcp/parsers/` that extract structured data from text responses (e.g., `M105` returns text like `T0:25/0 T1:25/0 B:25/0` which TempInfo parses).
|
|
90
91
|
|
|
@@ -206,7 +207,7 @@ twine check dist/*
|
|
|
206
207
|
```
|
|
207
208
|
|
|
208
209
|
**Version Management**:
|
|
209
|
-
- Current version: **1.3.
|
|
210
|
+
- Current version: **1.3.3** (as of 2026-07-26)
|
|
210
211
|
- Package name: `flashforge-python-api`
|
|
211
212
|
- PyPI: https://pypi.org/project/flashforge-python-api/
|
|
212
213
|
- Build system: Hatchling (defined in `pyproject.toml`)
|
|
@@ -269,8 +270,20 @@ async with FlashForgeClient(ip, serial, check) as client:
|
|
|
269
270
|
Certain features only work on specific models:
|
|
270
271
|
- **LED control**: Adventurer 5M/5X only (check `client.led_control`)
|
|
271
272
|
- **Filtration**: Adventurer 5M Pro only (check `client.filtration_control`)
|
|
273
|
+
- **Per-nozzle & chamber temperature control, material-station slot configuration / color mapping**: Creator 5 / Creator 5 Pro only (HTTP `temperatureCtl_cmd`; slot colors snap to the firmware palette via CIEDE2000 in `api/controls/creator5_palette.py`)
|
|
272
274
|
|
|
273
|
-
Capability flags (`client.is_pro`, `client.is_ad5x`) are populated from `FFMachineInfo` after `verify_connection()`, which itself reads `pid` off `/detail`. Trust those flags — do not re-derive them from `info.name`.
|
|
275
|
+
Capability flags (`client.is_pro`, `client.is_ad5x`, `client.is_creator5`, `client.is_creator5_pro`) are populated from `FFMachineInfo` after `verify_connection()`, which itself reads `pid` off `/detail`. Trust those flags — do not re-derive them from `info.name`.
|
|
276
|
+
|
|
277
|
+
**Never surface a raw `/detail` field as a capability flag, and never give a capability an "unknown" state.** Firmware omits fields that don't apply to a model, so an absent value means "not reported", not "no" — and any type that can hold `None` invites a consumer to read the two as the same thing. `hasMatlStation` is the known case: it is AD5X-only, and a Creator 5 Pro leaves it out of `/detail` entirely (verified on firmware 1.9.4) while reporting a fully populated `matlStationInfo` with four loaded slots. `FFMachineInfo.has_matl_station` is therefore **derived** in `MachineInfoParser.from_detail` (flag `is True` OR `slot_cnt > 0` OR non-empty `slot_infos`) and typed `bool`, not `bool | None`; the raw value stays on `FFPrinterDetail`. The same trap caught `led_control_override` downstream, where a caller's unset `False` was read as "force the capability off". Apply the rule to any new capability: derive it from the data the capability actually produces, give it no unknown state, and cover it with a fixture built from a real payload — the Creator 5 fixtures originally had no material station at all, which is why this went unnoticed through v1.3.1.
|
|
278
|
+
|
|
279
|
+
**The rule for response models: `extra="allow"` on anything parsed from a printer response, `extra="forbid"` on anything this library constructs itself.** A model that forbids unknown fields turns a firmware addition into a parse failure, and every parse failure here degrades into something that looks like a working printer with less to report — or worse. `ff-5mp-hass#18` is the canonical case: `Product` forbade extras, so an unrecognized control-state flag raised `ValidationError`, `send_product_command` returned the same bare `False` it returns for bad credentials, and the user was told their check code was wrong when it was not.
|
|
280
|
+
|
|
281
|
+
Two things this rule is easy to get half-right:
|
|
282
|
+
|
|
283
|
+
1. **It applies to nested models, not just the top-level response.** A child that forbids extras fails validation for the entire response, so `FFPrinterDetail` being `extra="allow"` bought nothing while `MatlStationInfo` / `SlotInfo` / `IndepMatlInfo` underneath it still forbade them. Every model reachable from a parsed payload has to allow extras, all the way down.
|
|
284
|
+
2. **The inverse half is load-bearing — do not strip `extra="forbid"` indiscriminately.** Outbound request-parameter models (`AD5XLocalJobParams`, `Creator5UploadParams`, `FilamentArgs`, …) are request bodies *we* build, so no firmware update can break them, and forbidding extras turns a caller's typo'd keyword into an error instead of a field the printer silently ignores. Same for `FFMachineInfo` and `Temperature`, which are only ever constructed by `MachineInfoParser.from_detail` from keyword arguments — there, forbidding extras is a typo check on our own parser.
|
|
285
|
+
|
|
286
|
+
The one cost of `extra="allow"` on inbound models: a typo'd `alias=` stops raising and silently becomes an extra field. Keep asserting on parsed *values* in fixtures rather than just successful construction, which is what still catches it.
|
|
274
287
|
|
|
275
288
|
### Why TCP Bootstrap Is Still Required for Modern Printers
|
|
276
289
|
The HTTP `/detail` endpoint requires authentication (`serialNumber` + `checkCode` via `FNetCode`). During discovery and the very first connection attempt — before a check code has been entered — there are no credentials, so the parser cannot read `pid` from `/detail`. The library handles this by:
|
|
@@ -308,6 +321,10 @@ The HTTP `/detail` endpoint requires authentication (`serialNumber` + `checkCode
|
|
|
308
321
|
- FlashForge Adventurer 5M / 5M Pro
|
|
309
322
|
- FlashForge Adventurer 4
|
|
310
323
|
|
|
324
|
+
**Full Support** (HTTP only — no TCP/8899 service):
|
|
325
|
+
- FlashForge Creator 5
|
|
326
|
+
- FlashForge Creator 5 Pro
|
|
327
|
+
|
|
311
328
|
**Partial Support** (TCP only):
|
|
312
329
|
- FlashForge Adventurer 3
|
|
313
330
|
|
|
@@ -327,7 +344,7 @@ The HTTP `/detail` endpoint requires authentication (`serialNumber` + `checkCode
|
|
|
327
344
|
**Imaging** (optional `[imaging]`):
|
|
328
345
|
- `pillow>=10.0.0` - For thumbnail image processing
|
|
329
346
|
|
|
330
|
-
**Python version**: Requires Python 3.
|
|
347
|
+
**Python version**: Requires Python 3.11+
|
|
331
348
|
|
|
332
349
|
## Common Gotchas
|
|
333
350
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flashforge-python-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: A comprehensive Python library for controlling FlashForge 3D printers
|
|
5
5
|
Project-URL: Homepage, https://github.com/GhostTypes/ff-5mp-api-py
|
|
6
6
|
Project-URL: Documentation, https://github.com/GhostTypes/ff-5mp-api-py#readme
|
|
@@ -727,7 +727,7 @@ class Test5MProLiveIntegration:
|
|
|
727
727
|
info = await client.info.get()
|
|
728
728
|
assert info is not None
|
|
729
729
|
assert info.is_ad5x == False
|
|
730
|
-
assert info.has_matl_station is
|
|
730
|
+
assert info.has_matl_station is False # derived capability: no station present
|
|
731
731
|
|
|
732
732
|
async def test_get_file_list_5m_pro(self):
|
|
733
733
|
"""Test getting file list from 5M Pro (non-AD5X format)."""
|
|
@@ -71,14 +71,24 @@ The primary model for printer status, aggregating data from various sources into
|
|
|
71
71
|
| `flash_cloud_register_code` | `str` | FlashCloud registration code |
|
|
72
72
|
| `polar_cloud_register_code` | `str` | PolarCloud registration code |
|
|
73
73
|
|
|
74
|
-
#### Material Station (AD5X)
|
|
74
|
+
#### Material Station (AD5X / Creator 5 series)
|
|
75
75
|
|
|
76
76
|
| Property | Type | Description |
|
|
77
77
|
|----------|------|-------------|
|
|
78
|
-
| `has_matl_station` | `
|
|
78
|
+
| `has_matl_station` | `bool` | Material station present (derived — see below) |
|
|
79
79
|
| `matl_station_info` | `Optional[MatlStationInfo]` | Material station details |
|
|
80
80
|
| `indep_matl_info` | `Optional[IndepMatlInfo]` | Independent material info |
|
|
81
81
|
|
|
82
|
+
`has_matl_station` is **derived**, not copied from the printer's raw
|
|
83
|
+
`hasMatlStation` field. That field is AD5X-only: a Creator 5 Pro omits it from
|
|
84
|
+
`/detail` entirely even with four loaded slots, so an absent value means "not
|
|
85
|
+
reported", never "no station". The parser therefore also accepts a populated
|
|
86
|
+
`matlStationInfo` (`slot_cnt` / `slot_infos`) as proof, and the property is a
|
|
87
|
+
plain `bool` — the capability has no unknown state to represent.
|
|
88
|
+
|
|
89
|
+
Gate features on this property. `FFPrinterDetail.has_matl_station` keeps the
|
|
90
|
+
untouched firmware value and is `Optional[bool]` for that reason.
|
|
91
|
+
|
|
82
92
|
### Temperature
|
|
83
93
|
|
|
84
94
|
Represents temperature readings for a component.
|
{flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/control.py
RENAMED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
FlashForge Python API - Control Module
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from typing import TYPE_CHECKING, Any
|
|
6
7
|
|
|
7
8
|
from ...models.responses import FilamentArgs
|
|
@@ -14,6 +15,8 @@ if TYPE_CHECKING:
|
|
|
14
15
|
from ...client import FlashForgeClient
|
|
15
16
|
from ...tcp.ff_client import FlashForgeClient as TcpClient
|
|
16
17
|
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
17
20
|
|
|
18
21
|
class Control:
|
|
19
22
|
"""
|
|
@@ -75,7 +78,7 @@ class Control:
|
|
|
75
78
|
return await self._send_filtration_command(
|
|
76
79
|
FilamentArgs(internal="close", external="open")
|
|
77
80
|
)
|
|
78
|
-
|
|
81
|
+
logger.warning("set_external_filtration_on: filtration is not equipped on this printer.")
|
|
79
82
|
return False
|
|
80
83
|
|
|
81
84
|
async def set_internal_filtration_on(self) -> bool:
|
|
@@ -90,7 +93,7 @@ class Control:
|
|
|
90
93
|
return await self._send_filtration_command(
|
|
91
94
|
FilamentArgs(internal="open", external="close")
|
|
92
95
|
)
|
|
93
|
-
|
|
96
|
+
logger.warning("set_internal_filtration_on: filtration is not equipped on this printer.")
|
|
94
97
|
return False
|
|
95
98
|
|
|
96
99
|
async def set_filtration_off(self) -> bool:
|
|
@@ -105,7 +108,7 @@ class Control:
|
|
|
105
108
|
return await self._send_filtration_command(
|
|
106
109
|
FilamentArgs(internal="close", external="close")
|
|
107
110
|
)
|
|
108
|
-
|
|
111
|
+
logger.warning("set_filtration_off: filtration is not equipped on this printer.")
|
|
109
112
|
return False
|
|
110
113
|
|
|
111
114
|
async def turn_camera_on(self) -> bool:
|
|
@@ -188,7 +191,7 @@ class Control:
|
|
|
188
191
|
True if the command is successful, False otherwise.
|
|
189
192
|
"""
|
|
190
193
|
if not self.client.led_control:
|
|
191
|
-
|
|
194
|
+
logger.warning("set_led_on: LED control is not equipped on this printer.")
|
|
192
195
|
return False
|
|
193
196
|
return await self.send_control_command(Commands.LIGHT_CONTROL_CMD, {"status": "open"})
|
|
194
197
|
|
|
@@ -200,7 +203,7 @@ class Control:
|
|
|
200
203
|
True if the command is successful, False otherwise.
|
|
201
204
|
"""
|
|
202
205
|
if not self.client.led_control:
|
|
203
|
-
|
|
206
|
+
logger.warning("set_led_off: LED control is not equipped on this printer.")
|
|
204
207
|
return False
|
|
205
208
|
return await self.send_control_command(Commands.LIGHT_CONTROL_CMD, {"status": "close"})
|
|
206
209
|
|
|
@@ -259,7 +262,9 @@ class Control:
|
|
|
259
262
|
True if the command is successful, False otherwise.
|
|
260
263
|
"""
|
|
261
264
|
if not self.client.is_ad5x and not self.client.is_creator5:
|
|
262
|
-
|
|
265
|
+
logger.warning(
|
|
266
|
+
"configure_slot: the material station is only available on the AD5X / Creator 5."
|
|
267
|
+
)
|
|
263
268
|
return False
|
|
264
269
|
# The AD5X and Creator 5 use MUTUALLY EXCLUSIVE color wire formats (see
|
|
265
270
|
# creator5_palette for the firmware match rules), so model-gate here:
|
|
@@ -293,7 +298,9 @@ class Control:
|
|
|
293
298
|
"payload": {"cmd": command, "args": args},
|
|
294
299
|
}
|
|
295
300
|
|
|
296
|
-
|
|
301
|
+
# Log the command, never `payload`: it carries the serial number and
|
|
302
|
+
# check code, and these lines end up pasted into bug reports.
|
|
303
|
+
logger.debug("Sending control command %s with args %s", command, args)
|
|
297
304
|
|
|
298
305
|
try:
|
|
299
306
|
await self.client.is_http_client_busy()
|
|
@@ -305,12 +312,12 @@ class Control:
|
|
|
305
312
|
headers={"Content-Type": "application/json"},
|
|
306
313
|
) as response:
|
|
307
314
|
data = await json_from_response(response)
|
|
308
|
-
|
|
315
|
+
logger.debug("Control command %s reply: %s", command, data)
|
|
309
316
|
|
|
310
317
|
return NetworkUtils.is_ok(data)
|
|
311
318
|
|
|
312
319
|
except Exception as e:
|
|
313
|
-
|
|
320
|
+
logger.warning("Error in send_control_command (%s): %s", command, e)
|
|
314
321
|
return False
|
|
315
322
|
finally:
|
|
316
323
|
self.client.release_http_client()
|
|
@@ -16,6 +16,7 @@ for the model-gating that splits them.
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import logging
|
|
19
20
|
import math
|
|
20
21
|
import re
|
|
21
22
|
from dataclasses import dataclass
|
|
@@ -25,6 +26,8 @@ from dataclasses import dataclass
|
|
|
25
26
|
# reference. PEP 8 lowercase locals are therefore relaxed here on purpose.
|
|
26
27
|
# ruff: noqa: N806
|
|
27
28
|
|
|
29
|
+
logger = logging.getLogger(__name__)
|
|
30
|
+
|
|
28
31
|
|
|
29
32
|
@dataclass(frozen=True)
|
|
30
33
|
class Creator5PaletteColor:
|
|
@@ -70,7 +73,7 @@ CREATOR5_PALETTE: tuple[Creator5PaletteColor, ...] = (
|
|
|
70
73
|
)
|
|
71
74
|
|
|
72
75
|
# 25^7, the CIEDE2000 chroma weighting constant.
|
|
73
|
-
_25_POW_7 = 25.0
|
|
76
|
+
_25_POW_7 = 25.0**7
|
|
74
77
|
|
|
75
78
|
# D65 reference white point used by the sRGB -> XYZ transform.
|
|
76
79
|
_D65_XN = 0.95047
|
|
@@ -132,7 +135,7 @@ def _delta_e_2000(c1: tuple[float, float, float], c2: tuple[float, float, float]
|
|
|
132
135
|
C1 = math.sqrt(a1 * a1 + b1 * b1)
|
|
133
136
|
C2 = math.sqrt(a2 * a2 + b2 * b2)
|
|
134
137
|
Cbar = (C1 + C2) / 2.0
|
|
135
|
-
Cbar7 = Cbar
|
|
138
|
+
Cbar7 = Cbar**7
|
|
136
139
|
G = 0.5 * (1 - math.sqrt(Cbar7 / (Cbar7 + _25_POW_7)))
|
|
137
140
|
|
|
138
141
|
a1p = (1 + G) * a1
|
|
@@ -178,7 +181,7 @@ def _delta_e_2000(c1: tuple[float, float, float], c2: tuple[float, float, float]
|
|
|
178
181
|
)
|
|
179
182
|
|
|
180
183
|
dTheta = 30 * math.exp(-(((hbarp - 275) / 25.0) ** 2))
|
|
181
|
-
Cbarp7 = Cbarp
|
|
184
|
+
Cbarp7 = Cbarp**7
|
|
182
185
|
RC = 2 * math.sqrt(Cbarp7 / (Cbarp7 + _25_POW_7))
|
|
183
186
|
SL = 1 + (0.015 * (Lbarp - 50) ** 2) / math.sqrt(20 + (Lbarp - 50) ** 2)
|
|
184
187
|
SC = 1 + 0.045 * Cbarp
|
|
@@ -238,9 +241,9 @@ def snap_to_creator5_palette(hex_str: str) -> Creator5PaletteColor:
|
|
|
238
241
|
"""
|
|
239
242
|
rgb = _hex_to_rgb(hex_str)
|
|
240
243
|
if rgb is None:
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
logger.warning(
|
|
245
|
+
'snap_to_creator5_palette: could not parse "%s" as hex; falling back to White.',
|
|
246
|
+
hex_str,
|
|
244
247
|
)
|
|
245
248
|
return CREATOR5_PALETTE[0]
|
|
246
249
|
|
{flashforge_python_api-1.3.1 → flashforge_python_api-1.3.3}/flashforge/api/controls/files.py
RENAMED
|
@@ -3,6 +3,7 @@ FlashForge Python API - Files Module
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import base64
|
|
6
|
+
import logging
|
|
6
7
|
from typing import TYPE_CHECKING
|
|
7
8
|
|
|
8
9
|
from pydantic import ValidationError
|
|
@@ -15,6 +16,8 @@ from ..network.utils import NetworkUtils, json_from_response
|
|
|
15
16
|
if TYPE_CHECKING:
|
|
16
17
|
from ...client import FlashForgeClient
|
|
17
18
|
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
18
21
|
|
|
19
22
|
class Files:
|
|
20
23
|
"""
|
|
@@ -87,13 +90,27 @@ class Files:
|
|
|
87
90
|
data = await json_from_response(response)
|
|
88
91
|
|
|
89
92
|
if not NetworkUtils.is_ok(data):
|
|
90
|
-
|
|
93
|
+
logger.warning(
|
|
94
|
+
"Error retrieving the file list: %s",
|
|
95
|
+
NetworkUtils.get_error_message(data),
|
|
96
|
+
)
|
|
91
97
|
return []
|
|
92
98
|
|
|
93
99
|
# Parse the response using GCodeListResponse
|
|
94
100
|
try:
|
|
95
101
|
result = GCodeListResponse(**data)
|
|
96
|
-
except ValidationError:
|
|
102
|
+
except ValidationError as err:
|
|
103
|
+
# The names-only fallback below silently costs the caller
|
|
104
|
+
# every per-file field, which is indistinguishable from a
|
|
105
|
+
# printer that only reports names. Say so, loudly enough to
|
|
106
|
+
# reach an integration's log, or the next model that changes
|
|
107
|
+
# this payload looks like it reports no metadata at all.
|
|
108
|
+
logger.warning(
|
|
109
|
+
"Could not parse the /gcodeList response; falling back to file "
|
|
110
|
+
"names only, so print time, filament weight, and per-tool "
|
|
111
|
+
"material data are unavailable for every file. %s",
|
|
112
|
+
err,
|
|
113
|
+
)
|
|
97
114
|
raw_list = data.get("gcodeList", [])
|
|
98
115
|
if isinstance(raw_list, list):
|
|
99
116
|
entries: list[FFGcodeFileEntry] = []
|
|
@@ -127,15 +144,13 @@ class Files:
|
|
|
127
144
|
elif isinstance(first_item, FFGcodeFileEntry):
|
|
128
145
|
# Already FFGcodeFileEntry objects - need explicit type narrowing
|
|
129
146
|
return [
|
|
130
|
-
item
|
|
131
|
-
for item in result.gcode_list
|
|
132
|
-
if isinstance(item, FFGcodeFileEntry)
|
|
147
|
+
item for item in result.gcode_list if isinstance(item, FFGcodeFileEntry)
|
|
133
148
|
]
|
|
134
149
|
|
|
135
150
|
return []
|
|
136
151
|
|
|
137
152
|
except Exception as err:
|
|
138
|
-
|
|
153
|
+
logger.warning("get_recent_file_list error: %s", err)
|
|
139
154
|
return []
|
|
140
155
|
|
|
141
156
|
async def get_gcode_thumbnail(self, file_name: str) -> bytes | None:
|
|
@@ -173,9 +188,12 @@ class Files:
|
|
|
173
188
|
result = ThumbnailResponse(**data)
|
|
174
189
|
return base64.b64decode(result.image_data)
|
|
175
190
|
else:
|
|
176
|
-
|
|
191
|
+
logger.warning(
|
|
192
|
+
"Error retrieving the thumbnail: %s",
|
|
193
|
+
NetworkUtils.get_error_message(data),
|
|
194
|
+
)
|
|
177
195
|
return None
|
|
178
196
|
|
|
179
197
|
except Exception as err:
|
|
180
|
-
|
|
198
|
+
logger.warning("get_gcode_thumbnail error: %s", err)
|
|
181
199
|
return None
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
FlashForge Python API - Info Module
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import re
|
|
6
7
|
from datetime import datetime, timedelta
|
|
7
8
|
from typing import TYPE_CHECKING
|
|
@@ -9,11 +10,14 @@ from typing import TYPE_CHECKING
|
|
|
9
10
|
from ...models.machine_info import FFMachineInfo, MachineState, Temperature
|
|
10
11
|
from ...models.responses import DetailResponse, FFPrinterDetail
|
|
11
12
|
from ..constants.endpoints import Endpoints
|
|
13
|
+
from ..misc.redaction import redact_model
|
|
12
14
|
from ..network.utils import json_from_response
|
|
13
15
|
|
|
14
16
|
if TYPE_CHECKING:
|
|
15
17
|
from ...client import FlashForgeClient
|
|
16
18
|
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
17
21
|
|
|
18
22
|
# Firmware-reported PIDs from FlashForge's /detail endpoint. These are stable
|
|
19
23
|
# identifiers set by firmware, unlike the user-mutable `name` field.
|
|
@@ -89,10 +93,17 @@ class MachineInfoParser:
|
|
|
89
93
|
print_progress = getattr(detail, "print_progress", 0) or 0
|
|
90
94
|
est_length = total_job_filament_meters * print_progress
|
|
91
95
|
est_weight = (getattr(detail, "estimated_right_weight", 0) or 0) * print_progress
|
|
96
|
+
# Material Station presence, derived rather than read off a single
|
|
97
|
+
# field. `hasMatlStation` is AD5X-only: the Creator 5 series omits it
|
|
98
|
+
# from /detail entirely (verified on a Creator 5 Pro, pid 41, firmware
|
|
99
|
+
# 1.9.4) while reporting a fully populated matlStationInfo with four
|
|
100
|
+
# loaded slots, so an absent flag means "not reported", never "absent
|
|
101
|
+
# hardware". Populated slot data is the reliable signal.
|
|
92
102
|
has_material_station = (
|
|
93
103
|
getattr(detail, "has_matl_station", None) is True
|
|
94
104
|
or (getattr(getattr(detail, "matl_station_info", None), "slot_cnt", 0) or 0) > 0
|
|
95
|
-
or len(getattr(getattr(detail, "matl_station_info", None), "slot_infos", []) or [])
|
|
105
|
+
or len(getattr(getattr(detail, "matl_station_info", None), "slot_infos", []) or [])
|
|
106
|
+
> 0
|
|
96
107
|
)
|
|
97
108
|
printer_name = getattr(detail, "name", "") or ""
|
|
98
109
|
pid = getattr(detail, "pid", None)
|
|
@@ -236,7 +247,9 @@ class MachineInfoParser:
|
|
|
236
247
|
print_speed_adjust=getattr(detail, "print_speed_adjust", 0) or 0,
|
|
237
248
|
filament_type=getattr(detail, "right_filament_type", "") or "",
|
|
238
249
|
# Machine state
|
|
239
|
-
machine_state=MachineInfoParser._get_machine_state(
|
|
250
|
+
machine_state=MachineInfoParser._get_machine_state(
|
|
251
|
+
getattr(detail, "status", "") or ""
|
|
252
|
+
),
|
|
240
253
|
status=getattr(detail, "status", "") or "",
|
|
241
254
|
total_print_layers=getattr(detail, "target_print_layer", 0) or 0,
|
|
242
255
|
tvoc=getattr(detail, "tvoc", 0) or 0,
|
|
@@ -249,8 +262,8 @@ class MachineInfoParser:
|
|
|
249
262
|
completion_time=completion_time,
|
|
250
263
|
formatted_run_time=formatted_run_time,
|
|
251
264
|
formatted_total_run_time=formatted_total_run_time,
|
|
252
|
-
# AD5X
|
|
253
|
-
has_matl_station=
|
|
265
|
+
# Material Station (AD5X / Creator 5 series)
|
|
266
|
+
has_matl_station=has_material_station,
|
|
254
267
|
matl_station_info=getattr(detail, "matl_station_info", None),
|
|
255
268
|
indep_matl_info=getattr(detail, "indep_matl_info", None),
|
|
256
269
|
)
|
|
@@ -258,8 +271,14 @@ class MachineInfoParser:
|
|
|
258
271
|
return machine_info
|
|
259
272
|
|
|
260
273
|
except Exception as error:
|
|
261
|
-
|
|
262
|
-
|
|
274
|
+
logger.warning(
|
|
275
|
+
"Could not parse the /detail payload into FFMachineInfo; the caller sees "
|
|
276
|
+
"this as an unreachable printer. %s",
|
|
277
|
+
error,
|
|
278
|
+
)
|
|
279
|
+
# Redacted: this dump carries the MAC, IP and cloud registration
|
|
280
|
+
# codes, and it exists to be pasted into a bug report.
|
|
281
|
+
logger.debug("Detail object that failed to parse: %s", redact_model(detail))
|
|
263
282
|
return None
|
|
264
283
|
|
|
265
284
|
@staticmethod
|
|
@@ -294,7 +313,7 @@ class MachineInfoParser:
|
|
|
294
313
|
return state_mapping[valid_status]
|
|
295
314
|
|
|
296
315
|
if valid_status:
|
|
297
|
-
|
|
316
|
+
logger.warning("Unknown machine status received: %r", status)
|
|
298
317
|
return MachineState.UNKNOWN
|
|
299
318
|
|
|
300
319
|
|
|
@@ -375,12 +394,17 @@ class Info:
|
|
|
375
394
|
headers={"Content-Type": "application/json"},
|
|
376
395
|
) as response:
|
|
377
396
|
if response.status != 200:
|
|
378
|
-
|
|
397
|
+
logger.warning("Non-200 status from the /detail endpoint: %s", response.status)
|
|
379
398
|
return None
|
|
380
399
|
|
|
381
400
|
data = await json_from_response(response)
|
|
382
401
|
return DetailResponse(**data)
|
|
383
402
|
|
|
384
403
|
except Exception as error:
|
|
385
|
-
|
|
404
|
+
logger.warning(
|
|
405
|
+
"Could not read /detail; callers cannot tell this from an unreachable "
|
|
406
|
+
"printer or a rejected check code, so this line is the only record of "
|
|
407
|
+
"the real cause. %s",
|
|
408
|
+
error,
|
|
409
|
+
)
|
|
386
410
|
return None
|