Skip to content

Conversation

@AryanBagade
Copy link
Contributor

Summary

When a stub file has a top-level __getattr__ function, it indicates the stub is incomplete and any name can be imported from that module. This is documented in the typing spec for incomplete stubs

Previously, from module import name would fail with "Could not import name from module" even when __getattr__ was defined. Now, the imported name correctly gets the return type of __getattr__.
Example:

# foo.pyi
def __getattr__(name: str) -> int: ...

# main.py
from foo import x, y  # Previously failed, now works
assert_type(x, int)   # x is correctly typed as int

Fixes #1988

Test Plan

Test Plan

  • Added test_module_getattr_from_import - tests basic from foo import x with getattr
  • Added test_module_getattr_stub_incomplete - tests .pyi stub with Incomplete return type
  • Verified existing test_module_getattr still passes (tests import foo; foo.x)
  • Ran python3 test.py - all tests pass
  • Ran conformance tests - all pass
  • Manually tested with CLI: pyrefly check on test files shows 0 errors
CleanShot 2026-01-02 at 19 25 24@2x

@meta-cla meta-cla bot added the cla signed label Jan 3, 2026
@github-actions

This comment has been minimized.

@AryanBagade
Copy link
Contributor Author

i see errors in AutoSplit, black, pydantic these occur because their dependency stubs have __getattr__ returning object/list instead of Any. When we return that type, subsequent attribute access fails.

This is technically correct behavior —> we return whatever __getattr__ declares. The intended use case (stubs with -> Incomplete or -> Any) works as expected.

Let me know if you'd prefer we only apply this fallback when __getattr__ returns Any/Incomplete.

@rchen152 rchen152 self-assigned this Jan 5, 2026
@meta-codesync
Copy link

meta-codesync bot commented Jan 5, 2026

@rchen152 has imported this pull request. If you are a Meta employee, you can view this in D90141115.

Copy link
Contributor

@rchen152 rchen152 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Back to you with a couple comments

@rchen152
Copy link
Contributor

rchen152 commented Jan 5, 2026

i see errors in AutoSplit, black, pydantic these occur because their dependency stubs have __getattr__ returning object/list instead of Any. When we return that type, subsequent attribute access fails.

This is technically correct behavior —> we return whatever __getattr__ declares. The intended use case (stubs with -> Incomplete or -> Any) works as expected.

Let me know if you'd prefer we only apply this fallback when __getattr__ returns Any/Incomplete.

Always applying the fallback seems like correct behavior to me, no need to change it!

@AryanBagade AryanBagade requested a review from rchen152 January 6, 2026 03:29
@github-actions
Copy link

github-actions bot commented Jan 6, 2026

Diff from mypy_primer, showing the effect of this PR on open source code:

urllib3 (https://github.com/urllib3/urllib3)
- ERROR test/__init__.py:32:31-58: Could not import `zstd` from `backports` [missing-module-attribute]
- ERROR test/test_response.py:43:31-35: Could not import `zstd` from `backports` [missing-module-attribute]
- ERROR src/urllib3/response.py:244:31-35: Could not import `zstd` from `backports` [missing-module-attribute]
- ERROR src/urllib3/util/request.py:37:31-58: Could not import `zstd` from `backports` [missing-module-attribute]
- ::error file=test/__init__.py,line=32,col=31,endLine=32,endColumn=58,title=Pyrefly missing-module-attribute::Could not import `zstd` from `backports`
- ::error file=test/test_response.py,line=43,col=31,endLine=43,endColumn=35,title=Pyrefly missing-module-attribute::Could not import `zstd` from `backports`
- ::error file=src/urllib3/response.py,line=244,col=31,endLine=244,endColumn=35,title=Pyrefly missing-module-attribute::Could not import `zstd` from `backports`
- ::error file=src/urllib3/util/request.py,line=37,col=31,endLine=37,endColumn=58,title=Pyrefly missing-module-attribute::Could not import `zstd` from `backports`

dd-trace-py (https://github.com/DataDog/dd-trace-py)
- ERROR scripts/iast/print_patched_code.py:18:33-44: Could not import `PythonLexer` from `pygments.lexers` [missing-module-attribute]
- ERROR tests/appsec/iast_packages/packages/pkg_pygments.py:21:33-44: Could not import `PythonLexer` from `pygments.lexers` [missing-module-attribute]
- ERROR tests/appsec/iast_packages/packages/pkg_pygments.py:47:33-44: Could not import `PythonLexer` from `pygments.lexers` [missing-module-attribute]
- ::error file=scripts/iast/print_patched_code.py,line=18,col=33,endLine=18,endColumn=44,title=Pyrefly missing-module-attribute::Could not import `PythonLexer` from `pygments.lexers`
- ::error file=tests/appsec/iast_packages/packages/pkg_pygments.py,line=21,col=33,endLine=21,endColumn=44,title=Pyrefly missing-module-attribute::Could not import `PythonLexer` from `pygments.lexers`
- ::error file=tests/appsec/iast_packages/packages/pkg_pygments.py,line=47,col=33,endLine=47,endColumn=44,title=Pyrefly missing-module-attribute::Could not import `PythonLexer` from `pygments.lexers`

schemathesis (https://github.com/schemathesis/schemathesis)
- ERROR src/schemathesis/specs/openapi/adapter/validators.py:6:52-72: Could not import `OPENAPI_30_VALIDATOR` from `schemathesis.specs.openapi.definitions` [missing-module-attribute]
- ERROR src/schemathesis/specs/openapi/adapter/validators.py:6:74-94: Could not import `OPENAPI_31_VALIDATOR` from `schemathesis.specs.openapi.definitions` [missing-module-attribute]
- ERROR src/schemathesis/specs/openapi/adapter/validators.py:6:96-116: Could not import `SWAGGER_20_VALIDATOR` from `schemathesis.specs.openapi.definitions` [missing-module-attribute]
- ::error file=src/schemathesis/specs/openapi/adapter/validators.py,line=6,col=52,endLine=6,endColumn=72,title=Pyrefly missing-module-attribute::Could not import `OPENAPI_30_VALIDATOR` from `schemathesis.specs.openapi.definitions`
- ::error file=src/schemathesis/specs/openapi/adapter/validators.py,line=6,col=74,endLine=6,endColumn=94,title=Pyrefly missing-module-attribute::Could not import `OPENAPI_31_VALIDATOR` from `schemathesis.specs.openapi.definitions`
- ::error file=src/schemathesis/specs/openapi/adapter/validators.py,line=6,col=96,endLine=6,endColumn=116,title=Pyrefly missing-module-attribute::Could not import `SWAGGER_20_VALIDATOR` from `schemathesis.specs.openapi.definitions`

Expression (https://github.com/cognitedata/Expression)
- ERROR docs/notebooks.ipynb#2:1:34-40: Could not import `cycler` from `matplotlib` [missing-module-attribute]
- ::error file=docs/notebooks.ipynb,line=1,col=34,endLine=1,endColumn=40,title=Pyrefly missing-module-attribute::Could not import `cycler` from `matplotlib`

porcupine (https://github.com/Akuli/porcupine)
- ERROR porcupine/plugins/highlight/pygments_highlighter.py:9:29-42: Could not import `MarkdownLexer` from `pygments.lexers` [missing-module-attribute]
- ERROR porcupine/tabs.py:20:29-38: Could not import `TextLexer` from `pygments.lexers` [missing-module-attribute]
- ::error file=porcupine/plugins/highlight/pygments_highlighter.py,line=9,col=29,endLine=9,endColumn=42,title=Pyrefly missing-module-attribute::Could not import `MarkdownLexer` from `pygments.lexers`
- ::error file=porcupine/tabs.py,line=20,col=29,endLine=20,endColumn=38,title=Pyrefly missing-module-attribute::Could not import `TextLexer` from `pygments.lexers`

pandera (https://github.com/pandera-dev/pandera)
- ERROR pandera/decorators.py:19:22-40: Could not import `validate_arguments` from `pydantic` [missing-module-attribute]
+ ERROR pandera/decorators.py:822:29-47: Expected a callable, got `object` [not-callable]
+ ERROR pandera/decorators.py:833:23-41: Expected a callable, got `object` [not-callable]
- ::error file=pandera/decorators.py,line=19,col=22,endLine=19,endColumn=40,title=Pyrefly missing-module-attribute::Could not import `validate_arguments` from `pydantic`
+ ::error file=pandera/decorators.py,line=822,col=29,endLine=822,endColumn=47,title=Pyrefly not-callable::Expected a callable, got `object`
+ ::error file=pandera/decorators.py,line=833,col=23,endLine=833,endColumn=41,title=Pyrefly not-callable::Expected a callable, got `object`

prefect (https://github.com/PrefectHQ/prefect)
- ERROR src/prefect/__init__.py:6:15-26: Could not import `_build_info` from `prefect` [missing-module-attribute]
- ERROR src/prefect/_internal/_logging.py:22:38-68: Could not import `PREFECT_LOGGING_INTERNAL_LEVEL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/_internal/schemas/validators.py:489:9-46: Could not import `PREFECT_API_TASK_CACHE_KEY_MAX_LENGTH` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/cloud/__init__.py:45:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/cloud/__init__.py:46:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/cloud/__init__.py:47:5-25: Could not import `PREFECT_CLOUD_UI_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/dev.py:24:5-28: Could not import `PREFECT_SERVER_API_HOST` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/dev.py:25:5-28: Could not import `PREFECT_SERVER_API_PORT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:33:5-43: Could not import `PREFECT_API_SERVICES_LATE_RUNS_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:34:5-43: Could not import `PREFECT_API_SERVICES_SCHEDULER_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:35:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:36:5-17: Could not import `PREFECT_HOME` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:37:5-37: Could not import `PREFECT_SERVER_ANALYTICS_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:38:5-33: Could not import `PREFECT_SERVER_API_BASE_PATH` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:39:5-28: Could not import `PREFECT_SERVER_API_HOST` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:40:5-41: Could not import `PREFECT_SERVER_API_KEEPALIVE_TIMEOUT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:41:5-28: Could not import `PREFECT_SERVER_API_PORT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:42:5-33: Could not import `PREFECT_SERVER_LOGGING_LEVEL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/server.py:43:5-23: Could not import `PREFECT_UI_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/worker.py:21:5-37: Could not import `PREFECT_WORKER_HEARTBEAT_SECONDS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/cli/worker.py:22:5-36: Could not import `PREFECT_WORKER_PREFETCH_SECONDS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:26:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:27:5-31: Could not import `PREFECT_CLIENT_MAX_RETRIES` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:28:5-37: Could not import `PREFECT_CLIENT_RETRY_EXTRA_CODES` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:29:5-39: Could not import `PREFECT_CLIENT_RETRY_JITTER_FACTOR` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:30:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/base.py:31:5-40: Could not import `PREFECT_SERVER_ALLOW_EPHEMERAL_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/cloud.py:21:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/cloud.py:22:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/cloud.py:23:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/cloud.py:24:5-35: Could not import `PREFECT_TESTING_UNIT_TEST_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:123:5-28: Could not import `PREFECT_API_AUTH_STRING` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:124:5-40: Could not import `PREFECT_API_DATABASE_CONNECTION_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:125:5-29: Could not import `PREFECT_API_ENABLE_HTTP2` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:126:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:127:5-32: Could not import `PREFECT_API_REQUEST_TIMEOUT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:128:5-30: Could not import `PREFECT_API_SSL_CERT_FILE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:129:5-41: Could not import `PREFECT_API_TLS_INSECURE_SKIP_VERIFY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:130:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:131:5-40: Could not import `PREFECT_CLIENT_CSRF_SUPPORT_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:132:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:133:5-40: Could not import `PREFECT_SERVER_ALLOW_EPHEMERAL_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/orchestration/__init__.py:134:5-35: Could not import `PREFECT_TESTING_UNIT_TEST_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/schemas/actions.py:39:30-76: Could not import `PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/schemas/objects.py:58:30-51: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/client/schemas/objects.py:58:53-73: Could not import `PREFECT_CLOUD_UI_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/deployments/runner.py:99:5-35: Could not import `PREFECT_DEFAULT_WORK_POOL_NAME` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/deployments/runner.py:100:5-19: Could not import `PREFECT_UI_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/deployments/steps/core.py:32:30-48: Could not import `PREFECT_DEBUG_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/docker/docker_image.py:5:5-43: Could not import `PREFECT_DEFAULT_DOCKER_BUILD_NAMESPACE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:36:5-28: Could not import `PREFECT_API_AUTH_STRING` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:37:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:38:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:39:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:40:5-23: Could not import `PREFECT_DEBUG_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/clients.py:41:5-40: Could not import `PREFECT_SERVER_ALLOW_EPHEMERAL_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/schemas/events.py:32:5-47: Could not import `PREFECT_EVENTS_MAXIMUM_LABELS_PER_RESOURCE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/schemas/events.py:104:34-74: Could not import `PREFECT_EVENTS_MAXIMUM_RELATED_RESOURCES` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/worker.py:10:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/worker.py:11:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/events/worker.py:12:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flow_engine.py:89:30-48: Could not import `PREFECT_DEBUG_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flows.py:72:5-35: Could not import `PREFECT_DEFAULT_WORK_POOL_NAME` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flows.py:73:5-33: Could not import `PREFECT_FLOW_DEFAULT_RETRIES` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flows.py:74:5-45: Could not import `PREFECT_FLOW_DEFAULT_RETRY_DELAY_SECONDS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flows.py:75:5-35: Could not import `PREFECT_TESTING_UNIT_TEST_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/flows.py:76:5-19: Could not import `PREFECT_UI_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/infrastructure/provisioners/cloud_run.py:24:5-23: Could not import `PREFECT_DEBUG_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/infrastructure/provisioners/cloud_run.py:25:5-43: Could not import `PREFECT_DEFAULT_DOCKER_BUILD_NAMESPACE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/infrastructure/provisioners/container_instance.py:38:5-43: Could not import `PREFECT_DEFAULT_DOCKER_BUILD_NAMESPACE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/infrastructure/provisioners/ecs.py:29:5-43: Could not import `PREFECT_DEFAULT_DOCKER_BUILD_NAMESPACE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/clients.py:34:5-28: Could not import `PREFECT_API_AUTH_STRING` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/clients.py:35:5-20: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/clients.py:36:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/clients.py:37:5-26: Could not import `PREFECT_CLOUD_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/clients.py:38:5-40: Could not import `PREFECT_SERVER_ALLOW_EPHEMERAL_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/configuration.py:16:5-34: Could not import `PREFECT_LOGGING_EXTRA_LOGGERS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/configuration.py:17:5-34: Could not import `PREFECT_LOGGING_SETTINGS_PATH` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/filters.py:36:38-53: Could not import `PREFECT_API_KEY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:29:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:30:5-27: Could not import `PREFECT_LOGGING_COLORS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:31:5-35: Could not import `PREFECT_LOGGING_INTERNAL_LEVEL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:32:5-27: Could not import `PREFECT_LOGGING_MARKUP` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:33:5-42: Could not import `PREFECT_LOGGING_TO_API_BATCH_INTERVAL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:34:5-38: Could not import `PREFECT_LOGGING_TO_API_BATCH_SIZE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:35:5-40: Could not import `PREFECT_LOGGING_TO_API_MAX_LOG_SIZE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/logging/handlers.py:36:5-45: Could not import `PREFECT_LOGGING_TO_API_WHEN_MISSING_FLOW` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/runner.py:104:5-20: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/runner.py:105:5-33: Could not import `PREFECT_RUNNER_SERVER_ENABLE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/server.py:13:5-34: Could not import `PREFECT_RUNNER_POLL_FREQUENCY` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/server.py:14:5-31: Could not import `PREFECT_RUNNER_SERVER_HOST` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/server.py:15:5-36: Could not import `PREFECT_RUNNER_SERVER_LOG_LEVEL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/server.py:16:5-49: Could not import `PREFECT_RUNNER_SERVER_MISSED_POLLS_TOLERANCE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runner/server.py:17:5-31: Could not import `PREFECT_RUNNER_SERVER_PORT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runtime/flow_run.py:33:30-45: Could not import `PREFECT_API_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/runtime/flow_run.py:33:47-61: Could not import `PREFECT_UI_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/concurrency_limits.py:31:30-80: Could not import `PREFECT_TASK_RUN_TAG_CONCURRENCY_SLOT_WAIT_SECONDS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/csrf_token.py:11:30-68: Could not import `PREFECT_SERVER_CSRF_PROTECTION_ENABLED` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/dependencies.py:20:30-55: Could not import `PREFECT_API_DEFAULT_LIMIT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/events.py:34:5-46: Could not import `PREFECT_EVENTS_MAXIMUM_WEBSOCKET_BACKFILL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/events.py:35:5-48: Could not import `PREFECT_EVENTS_WEBSOCKET_BACKFILL_PAGE_SIZE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:59:5-40: Could not import `PREFECT_API_DATABASE_CONNECTION_URL` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:60:5-37: Could not import `PREFECT_API_LOG_RETRYABLE_ERRORS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:61:5-23: Could not import `PREFECT_DEBUG_MODE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:62:5-28: Could not import `PREFECT_MEMO_STORE_PATH` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:63:5-44: Could not import `PREFECT_MEMOIZE_BLOCK_AUTO_REGISTRATION` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:64:5-33: Could not import `PREFECT_SERVER_API_BASE_PATH` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:65:5-53: Could not import `PREFECT_SERVER_EPHEMERAL_STARTUP_TIMEOUT_SECONDS` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/api/server.py:66:5-26: Could not import `PREFECT_UI_SERVE_BASE` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/database/configurations.py:37:5-44: Could not import `PREFECT_API_DATABASE_CONNECTION_TIMEOUT` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/database/configurations.py:38:5-30: Could not import `PREFECT_API_DATABASE_ECHO` from `prefect.settings` [missing-module-attribute]
- ERROR src/prefect/server/database/configurations.py:39:5-33: Could not import `PREFECT_API_DATABASE_TIMEOUT` from `prefect.settings` [missing-module-attribute]

... (truncated 206 lines) ...

strawberry (https://github.com/strawberry-graphql/strawberry)
- ERROR strawberry/exceptions/syntax.py:5:29-40: Could not import `PythonLexer` from `pygments.lexers` [missing-module-attribute]
- ::error file=strawberry/exceptions/syntax.py,line=5,col=29,endLine=5,endColumn=40,title=Pyrefly missing-module-attribute::Could not import `PythonLexer` from `pygments.lexers`

pandas (https://github.com/pandas-dev/pandas)
- ERROR pandas/io/pytables.py:141:39-44: Could not import `Block` from `pandas.core.internals` [missing-module-attribute]
+ ERROR pandas/io/pytables.py:4298:22-27: Expected a type form, got instance of `((blocks: list[Block], axes: list[Index], consolidate: bool = True, verify_integrity: bool = True) -> BlockManager) | type[Block] | type[ExtensionBlock] | type[_DatetimeTZBlock]` [not-a-type]
+ ERROR pandas/io/pytables.py:4326:30-35: Expected a type form, got instance of `((blocks: list[Block], axes: list[Index], consolidate: bool = True, verify_integrity: bool = True) -> BlockManager) | type[Block] | type[ExtensionBlock] | type[_DatetimeTZBlock]` [not-a-type]
- ERROR pandas/tests/util/test_hashing.py:16:5-15: Could not import `hash_array` from `pandas.util` [missing-module-attribute]
- ERROR pandas/tests/util/test_hashing.py:17:5-23: Could not import `hash_pandas_object` from `pandas.util` [missing-module-attribute]
+ ERROR pandas/tests/util/test_hashing.py:45:33-61: Argument `Index` is not assignable to parameter `vals` with type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` in function `pandas.core.util.hashing.hash_array` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:45:33-61: Argument `Index` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:45:33-61: Argument `Index` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:63:26-53: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `obj` with type `DataFrame | Index | Series` in function `pandas.core.util.hashing.hash_pandas_object` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:63:26-53: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:63:26-53: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:64:26-62: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `obj` with type `DataFrame | Index | Series` in function `pandas.core.util.hashing.hash_pandas_object` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:64:26-62: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:64:26-62: Argument `ndarray[tuple[Any, ...], dtype[Any]]` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:82:20-23: Argument `DatetimeIndex` is not assignable to parameter `vals` with type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` in function `pandas.core.util.hashing.hash_array` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:82:20-23: Argument `DatetimeIndex` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:82:20-23: Argument `DatetimeIndex` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:89:16-73: Object of class `Appender` has no attribute `values`
+ Object of class `Substitution` has no attribute `values`
+ Object of class `ndarray` has no attribute `values`
+ Object of class `property` has no attribute `values` [missing-attribute]
+ ERROR pandas/tests/util/test_hashing.py:89:35-65: Argument `MultiIndex` is not assignable to parameter `vals` with type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` in function `pandas.core.util.hashing.hash_array` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:89:35-65: Argument `MultiIndex` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:89:35-65: Argument `MultiIndex` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:109:33-35: Argument `MultiIndex` is not assignable to parameter `vals` with type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` in function `pandas.core.util.hashing.hash_array` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:109:33-35: Argument `MultiIndex` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:109:33-35: Argument `MultiIndex` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:110:12-28: Object of class `Appender` has no attribute `is_unique`
+ Object of class `Substitution` has no attribute `is_unique`
+ Object of class `ndarray` has no attribute `is_unique`
+ Object of class `property` has no attribute `is_unique` [missing-attribute]
+ ERROR pandas/tests/util/test_hashing.py:156:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:156:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:156:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:157:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:157:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:157:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:189:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:189:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:189:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:190:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:190:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:190:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:208:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:208:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:208:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:209:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:209:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:209:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:214:36-41: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:214:36-41: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:214:36-41: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:215:36-41: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:215:36-41: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:215:36-41: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:220:36-41: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:220:36-41: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:220:36-41: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:221:36-41: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:221:36-41: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:221:36-41: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:231:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:231:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:231:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:232:33-38: Unexpected keyword argument `index` in function `pandas.core.util.hashing.hash_array` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:232:33-38: Unexpected keyword argument `index` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:232:33-38: Unexpected keyword argument `index` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:255:29-31: Argument `Series` is not assignable to parameter `vals` with type `ExtensionArray | ndarray[tuple[Any, ...], dtype[Any]]` in function `pandas.core.util.hashing.hash_array` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:255:29-31: Argument `Series` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:255:29-31: Argument `Series` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:255:33-43: Unexpected keyword argument `categorize` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:255:33-43: Unexpected keyword argument `categorize` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:256:33-43: Unexpected keyword argument `categorize` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:256:33-43: Unexpected keyword argument `categorize` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:257:33-43: Unexpected keyword argument `categorize` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:257:33-43: Unexpected keyword argument `categorize` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:266:27-30: Argument `Categorical` is not assignable to parameter `obj` with type `DataFrame | Index | Series` in function `pandas.core.util.hashing.hash_pandas_object` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:266:27-30: Argument `Categorical` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:266:27-30: Argument `Categorical` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:266:32-42: Unexpected keyword argument `categorize` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:266:32-42: Unexpected keyword argument `categorize` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:270:25-29: Argument `Categorical` is not assignable to parameter `obj` with type `DataFrame | Index | Series` in function `pandas.core.util.hashing.hash_pandas_object` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:270:25-29: Argument `Categorical` is not assignable to parameter `addendum` with type `str | None` in function `pandas.util._decorators.Appender.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:270:25-29: Argument `Categorical` is not assignable to parameter `fget` with type `((Any) -> Any) | None` in function `property.__init__` [bad-argument-type]
+ ERROR pandas/tests/util/test_hashing.py:270:31-41: Unexpected keyword argument `categorize` in function `pandas.util._decorators.Appender.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:270:31-41: Unexpected keyword argument `categorize` in function `property.__init__` [unexpected-keyword]
+ ERROR pandas/tests/util/test_hashing.py:272:12-21: Cannot index into `Appender` [bad-index]
+ ERROR pandas/tests/util/test_hashing.py:272:12-21: Cannot index into `Substitution` [bad-index]
+ ERROR pandas/tests/util/test_hashing.py:272:12-21: Cannot index into `property` [bad-index]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Series` and `Appender` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Series` and `Substitution` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Series` and `property` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `ndarray[tuple[Any, ...], dtype[Any]]` and `Appender` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `ndarray[tuple[Any, ...], dtype[Any]]` and `Substitution` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `ndarray[tuple[Any, ...], dtype[Any]]` and `property` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Unknown` and `Appender` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Unknown` and `Substitution` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:272:12-33: `in` is not supported between `Unknown` and `property` [not-iterable]
+ ERROR pandas/tests/util/test_hashing.py:273:12-21: Cannot index into `Appender` [bad-index]
+ ERROR pandas/tests/util/test_hashing.py:273:12-21: Cannot index into `Substitution` [bad-index]
+ ERROR pandas/tests/util/test_hashing.py:273:12-21: Cannot index into `property` [bad-index]

... (truncated 329 lines) ...

vision (https://github.com/pytorch/vision)
- ERROR references/detection/coco_utils.py:213:42-72: Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets` [missing-module-attribute]
- ERROR references/segmentation/coco_utils.py:102:42-72: Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets` [missing-module-attribute]
- ERROR test/builtin_dataset_mocks.py:1529:36-46: Could not import `fromarrays` from `numpy.core.records` [missing-module-attribute]
- ERROR test/datasets_utils.py:33:34-64: Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets` [missing-module-attribute]
- ERROR test/test_datasets.py:2754:40-50: Could not import `fromarrays` from `numpy.core.records` [missing-module-attribute]
- ::error file=references/detection/coco_utils.py,line=213,col=42,endLine=213,endColumn=72,title=Pyrefly missing-module-attribute::Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets`
- ::error file=references/segmentation/coco_utils.py,line=102,col=42,endLine=102,endColumn=72,title=Pyrefly missing-module-attribute::Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets`
- ::error file=test/builtin_dataset_mocks.py,line=1529,col=36,endLine=1529,endColumn=46,title=Pyrefly missing-module-attribute::Could not import `fromarrays` from `numpy.core.records`
- ::error file=test/datasets_utils.py,line=33,col=34,endLine=33,endColumn=64,title=Pyrefly missing-module-attribute::Could not import `wrap_dataset_for_transforms_v2` from `torchvision.datasets`
- ::error file=test/test_datasets.py,line=2754,col=40,endLine=2754,endColumn=50,title=Pyrefly missing-module-attribute::Could not import `fromarrays` from `numpy.core.records`

aiohttp-devtools (https://github.com/aio-libs/aiohttp-devtools)
- ERROR aiohttp_devtools/logs.py:16:29-50: Could not import `Python3TracebackLexer` from `pygments.lexers` [missing-module-attribute]
- ::error file=aiohttp_devtools/logs.py,line=16,col=29,endLine=16,endColumn=50,title=Pyrefly missing-module-attribute::Could not import `Python3TracebackLexer` from `pygments.lexers`

setuptools (https://github.com/pypa/setuptools)
- ERROR pkg_resources/__init__.py:648:34-46: Could not import `__requires__` from `__main__` [missing-module-attribute]
- ::error file=pkg_resources/__init__.py,line=648,col=34,endLine=648,endColumn=46,title=Pyrefly missing-module-attribute::Could not import `__requires__` from `__main__`

scrapy (https://github.com/scrapy/scrapy)
- ERROR scrapy/utils/display.py:41:33-44: Could not import `PythonLexer` from `pygments.lexers` [missing-module-attribute]
- ERROR tests/test_scrapy__getattr__.py:7:13-39: Could not import `CONCURRENT_REQUESTS_PER_IP` from `scrapy.settings.default_settings` [missing-module-attribute]
+  WARN tests/test_scrapy__getattr__.py:10:50-54: Identity comparison `0 is not None` is always True [unnecessary-comparison]
- ::error file=scrapy/utils/display.py,line=41,col=33,endLine=41,endColumn=44,title=Pyrefly missing-module-attribute::Could not import `PythonLexer` from `pygments.lexers`
- ::error file=tests/test_scrapy__getattr__.py,line=7,col=13,endLine=7,endColumn=39,title=Pyrefly missing-module-attribute::Could not import `CONCURRENT_REQUESTS_PER_IP` from `scrapy.settings.default_settings`
+ ::warning file=tests/test_scrapy__getattr__.py,line=10,col=50,endLine=10,endColumn=54,title=Pyrefly unnecessary-comparison::Identity comparison `0 is not None` is always True

altair (https://github.com/vega/altair)
- ERROR tests/utils/test_deprecation.py:61:28-34: Could not import `themes` from `altair` [missing-module-attribute]
- ::error file=tests/utils/test_deprecation.py,line=61,col=28,endLine=61,endColumn=34,title=Pyrefly missing-module-attribute::Could not import `themes` from `altair`

Copy link
Contributor

@rchen152 rchen152 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thank you!

Copy link
Contributor

@grievejia grievejia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review automatically exported from Phabricator review in Meta.

@meta-codesync
Copy link

meta-codesync bot commented Jan 6, 2026

@rchen152 merged this pull request in f17378b.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request: support module-level __getattr__ in stubs

4 participants