Factory.ai
All Reports

pytest

Python

Strong Task Discovery

pytest reaches Level 3 with 75% Task Discovery pass rate. Currently becoming autonomous-capable with 26/63 criteria passing (41%). Key areas for improvement include the opportunities listed below.

Strengths

01
Cyclomatic Complexity
Ruff includes PLR (pylint refactor) rules which monitor cyclomatic and cognitive complexity.
02
Dead Code Detection
Ruff includes F (pyflakes) rules which detect unused imports and variables.
03
Formatter
Black configuration exists in pyproject.toml, and ruff-format is used in pre-commit hooks.

Opportunities

01
Code Modularization
Well-structured project but no automated boundary enforcement tools like eslint-plugin-boundaries or import-linter.
02
Duplicate Code Detection
No evidence of jscpd, PMD CPD, SonarQube, or other duplicate code detection tools.
03
Large File Detection
No git hooks, CI jobs, LFS configuration, or linter rules found that check file size or line count.

All Criteria

Style & Validation6/12 (50%)
code_modularizationWell-structured project but no automated boundary enforcement tools like eslint-plugin-boundaries or import-linter.
cyclomatic_complexityRuff includes PLR (pylint refactor) rules which monitor cyclomatic and cognitive complexity.
dead_code_detectionRuff includes F (pyflakes) rules which detect unused imports and variables.
duplicate_code_detectionNo evidence of jscpd, PMD CPD, SonarQube, or other duplicate code detection tools.
formatterBlack configuration exists in pyproject.toml, and ruff-format is used in pre-commit hooks.
large_file_detectionNo git hooks, CI jobs, LFS configuration, or linter rules found that check file size or line count.
lint_configRuff is extensively configured in pyproject.toml with multiple rule sets (B, D, E, F, PLR, PLW, etc.) and integrated into pre-commit hooks.
n_plus_one_detectionSkipped: pytest is a testing framework/library without ORM or database query patterns to monitor.
naming_consistencyRuff has extensive linting but no explicit naming-convention rules visible. Pylint is configured but only runs in manual stage.
pre_commit_hooks.pre-commit-config.yaml exists with extensive hooks including ruff, mypy, pyright, trailing-whitespace, end-of-file-fixer, and more.
strict_typingMypy has some strict flags (check_untyped_defs, disallow_untyped_defs) but not full strict mode. Pyright uses basic mode, not strict.
tech_debt_trackingNo TODO/FIXME scanner in CI, no SonarQube, and pylint (which could catch FIXMEs) only runs in manual stage.
type_checkBoth mypy and pyright are configured in pyproject.toml with strict settings and integrated into pre-commit hooks.
Build System4/11 (36%)
agentic_developmentNo agent co-authorship in git history (last 100 commits), no .factory/droids/ or agent config directories, no agent workflows in CI.
automated_pr_reviewNo evidence of danger.js, droid exec reviews, AI review bots, or automated review comment generation in workflows or PR history.
build_cmd_docREADME.rst exists but doesn't clearly document build commands. No AGENTS.md. CONTRIBUTING.rst mentions 'tox -e docs' but not package building.
build_performance_trackingSkipped: No evidence of build caching (turbo, nx, webpack), build metrics export, or deliberate build performance monitoring.
dead_feature_flag_detectionSkipped: No feature flag infrastructure exists (prerequisite not met).
deployment_frequencyFrequent releases: 9.0.2 (Dec 6), 9.0.1 (Nov 12), 9.0.0 (Nov 8), 8.4.2 (Sep 4). Multiple deploys per month with automated deploy.yml workflow.
deps_pinnedDependencies are declared in pyproject.toml but not pinned with exact versions. No poetry.lock, requirements.txt with ==, or similar lockfile.
fast_ci_feedbackSkipped: While gh CLI is available, detailed timing analysis of CI runs would require calculating durations across multiple check runs, which is complex.
feature_flag_infrastructureNo evidence of LaunchDarkly, Statsig, Unleash, GrowthBook, or custom feature flag systems in code or configuration.
heavy_dependency_detectionSkipped: This is a Python library without bundling. Bundle size analysis tools are not applicable.
monorepo_toolingSkipped: This is a single-application repository, not a monorepo.
progressive_rolloutSkipped: This is a library published to PyPI, not an infrastructure repo requiring canary deployments or percentage-based rollouts.
release_automationdeploy.yml workflow automates the full release process: package building, PyPI publishing, tag pushing, and GitHub release creation.
release_notes_automationTowncrier is configured in pyproject.toml for automated changelog generation. deploy.yml generates release notes via tox generate-gh-release-notes.
rollback_automationSkipped: This is a library published to PyPI, not an infrastructure repo requiring rollback capability.
single_command_setupNo single command documented in README, AGENTS.md (doesn't exist), or CONTRIBUTING.rst for going from clone to running development environment.
unused_dependencies_detectionNo evidence of depcheck, deptry, pip-extra-reqs, or similar unused dependency detection tools in CI or pre-commit.
vcs_cli_toolsGitHub CLI (gh) is installed and authenticated (verified with gh auth status).
version_drift_detectionSkipped: Not a monorepo, so version drift detection is not applicable.
Testing5/8 (63%)
flaky_test_detectionNo test retry configuration (pytest-rerunfailures), flaky test tracking tools (BuildPulse), or quarantine mechanisms.
integration_tests_existtesting/ directory contains integration-style tests including plugin integration tests and freeze tests.
test_coverage_thresholdscodecov.yml enforces patch coverage target of 100%. Coverage is uploaded to Codecov in CI and codecov/patch is a required status check.
test_isolationNo default parallel execution configured. pytest-xdist is available in some tox environments but not enforced by default.
test_naming_conventionspyproject.toml [tool.pytest] explicitly defines python_files, python_classes, and python_functions patterns for test discovery.
test_performance_trackingNo evidence of test timing output configuration (--durations), test analytics platforms, or explicit test performance monitoring.
unit_tests_existExtensive test suite in testing/ directory with test_*.py files following pytest conventions.
unit_tests_runnableTests are runnable via pytest command or tox. tox.ini shows comprehensive test environment configuration.
Documentation2/7 (29%)
agents_mdNo AGENTS.md file found at repository root.
agents_md_validationCannot validate AGENTS.md as it doesn't exist (prerequisite not met).
api_schema_docsSkipped: pytest is a library/CLI tool, not a service exposing HTTP APIs or GraphQL.
automated_doc_generationNo evidence of automated documentation generation tools or workflows. Sphinx docs exist but require manual building.
documentation_freshnessREADME.rst and CONTRIBUTING.rst were both modified within the last 180 days (git log shows recent updates).
readmeREADME.rst exists at repo root with comprehensive setup and usage instructions.
service_flow_documentedNo architecture diagrams (.mermaid, .puml files) or service dependency documentation found in repository.
skillsNo skills directories (.factory/skills/, .skills/, .claude/skills/) found in repository.
Dev Environment0/2 (0%)
database_schemaSkipped: pytest is a testing framework without a database.
devcontainerNo .devcontainer directory or devcontainer.json found.
devcontainer_runnableSkipped: No devcontainer exists (prerequisite not met).
env_templateNo .env.example file found. Environment variables not documented in README or CONTRIBUTING. While pytest may not need env vars for basic use, development environment is not documented.
local_services_setupSkipped: pytest is a testing framework without external service dependencies like databases or message queues.
Debugging & Observability2/9 (22%)
alerting_configuredNo evidence of PagerDuty, OpsGenie, or custom alerting rules in code or documentation.
circuit_breakersSkipped: pytest is a library without external service dependencies requiring circuit breaker patterns.
code_quality_metricsCodecov tracks coverage metrics. codecov/patch is a required status check in branch protection. Coverage reports uploaded from CI.
deployment_observabilityNo documentation references to monitoring dashboards (Datadog, Grafana, New Relic) for tracking deployment impact.
distributed_tracingNo evidence of OpenTelemetry, X-Request-ID headers, trace ID propagation, or similar distributed tracing infrastructure.
error_tracking_contextualizedNo evidence of Sentry, Bugsnag, or Rollbar configuration for error tracking with source maps and context.
health_checksSkipped: pytest is a library/CLI tool, not a deployed service requiring health check endpoints.
metrics_collectionNo evidence of Datadog, Axiom, Prometheus, New Relic, CloudWatch, or other metrics/telemetry instrumentation.
profiling_instrumentationNo evidence of APM tools, continuous profiling (Pyroscope, Parca), or profiling configuration for production or development.
runbooks_documentedNo external references to runbooks, playbooks, or incident response procedures in README, docs, or CONTRIBUTING.
structured_loggingDedicated logging module exists at src/_pytest/logging.py providing structured logging capabilities for pytest.
Security4/8 (50%)
automated_security_reviewRequires GitHub admin API access to verify automated security review (skipped).
branch_protectionModern rulesets are configured (ID 2349834). Requires PR reviews (1 approval), status checks (check, docs, changelog, codecov/patch, pre-commit.ci), prevents deletion and non-fast-forward.
codeownersNo CODEOWNERS file found in repository root or .github/ directory.
dast_scanningSkipped: pytest is a library/CLI tool, not a deployed web service requiring DAST (OWASP ZAP, Burp Suite).
dependency_update_automationdependabot.yml is configured for both pip dependencies (testing/plugins_integration) and github-actions, runs weekly.
gitignore_comprehensive.gitignore properly excludes .env/, .venv/, build artifacts, IDE configs (.idea, .vscode), OS files, __pycache__, and coverage reports.
log_scrubbingNo evidence of log sanitization/redaction mechanisms, pino redact, winston filtering, or custom sanitization in logging code.
pii_handlingSkipped: pytest is a development tool without personal/user data processing requirements.
privacy_complianceSkipped: pytest is a development tool without end-user data collection (internal tool category).
secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
secrets_managementGitHub Actions properly uses secrets.GITHUB_TOKEN. .env files are gitignored. Token references in workflows follow secure patterns.
Task Discovery3/4 (75%)
backlog_healthMany open issues lack labels (empty labels array in gh issue list). Less than 70% of issues have both descriptive titles and labels.
issue_labeling_system.github/labels.toml exists with structured labels for type (bug, enhancement, proposal), plugin categories, topic categories, and platforms.
issue_templates.github/ISSUE_TEMPLATE/ exists with structured templates: 1_bug_report.md and 2_feature_request.md.
pr_templates.github/PULL_REQUEST_TEMPLATE.md exists with sections for checklist, documentation, tests, changelog, and issue linking.
Product & Analytics0/2 (0%)
error_to_insight_pipelineNo Sentry-GitHub integration, error-to-issue automation, or PagerDuty/OpsGenie issue creation workflows found.
product_analytics_instrumentationNo evidence of Mixpanel, Amplitude, PostHog, Heap, or GA4 instrumentation in code or dependencies.

start building

Ready to build the software of the future?

Start building

Arrow Right Icon