Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add autofix to move runtime-imports out of type-checking blocks #4743

Merged
merged 1 commit into from May 31, 2023

Conversation

charliermarsh
Copy link
Member

Summary

Similar to #4742, this PR adds autofix for the inverse rule: if an import is in an if TYPE_CHECKING: block, but is required at runtime, remove it from the block, and add it to the top level.

Test Plan

cargo test

@github-actions
Copy link
Contributor

github-actions bot commented May 31, 2023

PR Check Results

Ecosystem

ℹ️ ecosystem check detected changes. (+31, -31, 0 error(s))

airflow (+31, -31)

- airflow/models/__init__.py:118:37: TCH004 Move import `airflow.models.base.ID_LEN` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:118:37: TCH004 [*] Move import `airflow.models.base.ID_LEN` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:118:45: TCH004 Move import `airflow.models.base.Base` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:118:45: TCH004 [*] Move import `airflow.models.base.Base` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:119:45: TCH004 Move import `airflow.models.baseoperator.BaseOperator` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:119:45: TCH004 [*] Move import `airflow.models.baseoperator.BaseOperator` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:119:59: TCH004 Move import `airflow.models.baseoperator.BaseOperatorLink` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:119:59: TCH004 [*] Move import `airflow.models.baseoperator.BaseOperatorLink` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:120:43: TCH004 Move import `airflow.models.connection.Connection` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:120:43: TCH004 [*] Move import `airflow.models.connection.Connection` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:121:36: TCH004 Move import `airflow.models.dag.DAG` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:121:36: TCH004 [*] Move import `airflow.models.dag.DAG` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:121:41: TCH004 Move import `airflow.models.dag.DagModel` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:121:41: TCH004 [*] Move import `airflow.models.dag.DagModel` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:121:51: TCH004 Move import `airflow.models.dag.DagTag` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:121:51: TCH004 [*] Move import `airflow.models.dag.DagTag` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:122:39: TCH004 Move import `airflow.models.dagbag.DagBag` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:122:39: TCH004 [*] Move import `airflow.models.dagbag.DagBag` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:123:42: TCH004 Move import `airflow.models.dagpickle.DagPickle` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:123:42: TCH004 [*] Move import `airflow.models.dagpickle.DagPickle` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:124:39: TCH004 Move import `airflow.models.dagrun.DagRun` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:124:39: TCH004 [*] Move import `airflow.models.dagrun.DagRun` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:125:52: TCH004 Move import `airflow.models.db_callback_request.DbCallbackRequest` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:125:52: TCH004 [*] Move import `airflow.models.db_callback_request.DbCallbackRequest` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:126:39: TCH004 Move import `airflow.models.errors.ImportError` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:126:39: TCH004 [*] Move import `airflow.models.errors.ImportError` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:127:36: TCH004 Move import `airflow.models.log.Log` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:127:36: TCH004 [*] Move import `airflow.models.log.Log` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:128:47: TCH004 Move import `airflow.models.mappedoperator.MappedOperator` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:128:47: TCH004 [*] Move import `airflow.models.mappedoperator.MappedOperator` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:129:41: TCH004 Move import `airflow.models.operator.Operator` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:129:41: TCH004 [*] Move import `airflow.models.operator.Operator` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:130:38: TCH004 Move import `airflow.models.param.Param` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:130:38: TCH004 [*] Move import `airflow.models.param.Param` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:131:37: TCH004 Move import `airflow.models.pool.Pool` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:131:37: TCH004 [*] Move import `airflow.models.pool.Pool` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:132:49: TCH004 Move import `airflow.models.renderedtifields.RenderedTaskInstanceFields` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:132:49: TCH004 [*] Move import `airflow.models.renderedtifields.RenderedTaskInstanceFields` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:133:42: TCH004 Move import `airflow.models.skipmixin.SkipMixin` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:133:42: TCH004 [*] Move import `airflow.models.skipmixin.SkipMixin` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:134:40: TCH004 Move import `airflow.models.slamiss.SlaMiss` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:134:40: TCH004 [*] Move import `airflow.models.slamiss.SlaMiss` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:135:41: TCH004 Move import `airflow.models.taskfail.TaskFail` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:135:41: TCH004 [*] Move import `airflow.models.taskfail.TaskFail` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:136:45: TCH004 Move import `airflow.models.taskinstance.TaskInstance` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:136:45: TCH004 [*] Move import `airflow.models.taskinstance.TaskInstance` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:136:59: TCH004 Move import `airflow.models.taskinstance.clear_task_instances` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:136:59: TCH004 [*] Move import `airflow.models.taskinstance.clear_task_instances` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:137:47: TCH004 Move import `airflow.models.taskreschedule.TaskReschedule` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:137:47: TCH004 [*] Move import `airflow.models.taskreschedule.TaskReschedule` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:138:40: TCH004 Move import `airflow.models.trigger.Trigger` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:138:40: TCH004 [*] Move import `airflow.models.trigger.Trigger` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:139:41: TCH004 Move import `airflow.models.variable.Variable` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:139:41: TCH004 [*] Move import `airflow.models.variable.Variable` out of type-checking block. Import is used for more than type hinting.
- airflow/models/__init__.py:140:37: TCH004 Move import `airflow.models.xcom.XCom` out of type-checking block. Import is used for more than type hinting.
+ airflow/models/__init__.py:140:37: TCH004 [*] Move import `airflow.models.xcom.XCom` out of type-checking block. Import is used for more than type hinting.
- airflow/serialization/serialized_objects.py:74:39: TCH004 Move import `kubernetes.client.models` out of type-checking block. Import is used for more than type hinting.
+ airflow/serialization/serialized_objects.py:74:39: TCH004 [*] Move import `kubernetes.client.models` out of type-checking block. Import is used for more than type hinting.
- airflow/serialization/serialized_objects.py:76:54: TCH004 Move import `airflow.kubernetes.pod_generator.PodGenerator` out of type-checking block. Import is used for more than type hinting.
+ airflow/serialization/serialized_objects.py:76:54: TCH004 [*] Move import `airflow.kubernetes.pod_generator.PodGenerator` out of type-checking block. Import is used for more than type hinting.
- airflow/utils/mixins.py:28:12: TCH004 Move import `multiprocessing.context` out of type-checking block. Import is used for more than type hinting.
+ airflow/utils/mixins.py:28:12: TCH004 [*] Move import `multiprocessing.context` out of type-checking block. Import is used for more than type hinting.

Rules changed: 1
Rule Changes Additions Removals
TCH004 62 31 31

Benchmark

Linux

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.00     14.3±0.24ms     2.9 MB/sec    1.01     14.4±0.29ms     2.8 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      3.4±0.05ms     4.9 MB/sec    1.00      3.4±0.07ms     4.9 MB/sec
linter/all-rules/numpy/globals.py          1.01    425.6±1.04µs     6.9 MB/sec    1.00    423.1±1.46µs     7.0 MB/sec
linter/all-rules/pydantic/types.py         1.00      6.0±0.14ms     4.3 MB/sec    1.00      6.0±0.13ms     4.3 MB/sec
linter/default-rules/large/dataset.py      1.01      6.9±0.08ms     5.9 MB/sec    1.00      6.8±0.07ms     6.0 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00   1498.8±6.93µs    11.1 MB/sec    1.00   1492.5±5.05µs    11.2 MB/sec
linter/default-rules/numpy/globals.py      1.00    170.1±0.33µs    17.3 MB/sec    1.00    169.9±0.26µs    17.4 MB/sec
linter/default-rules/pydantic/types.py     1.01      3.1±0.02ms     8.2 MB/sec    1.00      3.1±0.01ms     8.3 MB/sec
parser/large/dataset.py                    1.00      5.2±0.02ms     7.8 MB/sec    1.00      5.2±0.01ms     7.9 MB/sec
parser/numpy/ctypeslib.py                  1.00   1013.5±4.69µs    16.4 MB/sec    1.00   1011.5±0.73µs    16.5 MB/sec
parser/numpy/globals.py                    1.00    104.6±0.23µs    28.2 MB/sec    1.00    104.5±0.26µs    28.2 MB/sec
parser/pydantic/types.py                   1.00      2.2±0.00ms    11.4 MB/sec    1.00      2.2±0.00ms    11.4 MB/sec

Windows

group                                      main                                   pr
-----                                      ----                                   --
linter/all-rules/large/dataset.py          1.00     17.3±0.23ms     2.3 MB/sec    1.03     17.8±0.34ms     2.3 MB/sec
linter/all-rules/numpy/ctypeslib.py        1.00      4.4±0.05ms     3.8 MB/sec    1.00      4.4±0.15ms     3.8 MB/sec
linter/all-rules/numpy/globals.py          1.00   509.4±11.94µs     5.8 MB/sec    1.01    512.3±6.60µs     5.8 MB/sec
linter/all-rules/pydantic/types.py         1.00      7.4±0.18ms     3.5 MB/sec    1.00      7.4±0.12ms     3.5 MB/sec
linter/default-rules/large/dataset.py      1.00      8.9±0.09ms     4.6 MB/sec    1.00      8.9±0.12ms     4.6 MB/sec
linter/default-rules/numpy/ctypeslib.py    1.00  1867.7±24.97µs     8.9 MB/sec    1.01  1880.4±21.32µs     8.9 MB/sec
linter/default-rules/numpy/globals.py      1.00    210.5±3.28µs    14.0 MB/sec    1.00    210.5±4.76µs    14.0 MB/sec
linter/default-rules/pydantic/types.py     1.00      4.0±0.05ms     6.5 MB/sec    1.00      4.0±0.05ms     6.4 MB/sec
parser/large/dataset.py                    1.16      7.5±0.09ms     5.4 MB/sec    1.00      6.5±0.06ms     6.3 MB/sec
parser/numpy/ctypeslib.py                  1.13  1373.6±20.50µs    12.1 MB/sec    1.00  1214.7±17.95µs    13.7 MB/sec
parser/numpy/globals.py                    1.09    135.8±2.65µs    21.7 MB/sec    1.00    124.1±1.90µs    23.8 MB/sec
parser/pydantic/types.py                   1.13      3.1±0.04ms     8.2 MB/sec    1.00      2.7±0.04ms     9.3 MB/sec

@charliermarsh charliermarsh force-pushed the charlie/add-typing-import branch 2 times, most recently from 2b9311b to 498f270 Compare May 31, 2023 17:43
Base automatically changed from charlie/add-typing-import to main May 31, 2023 17:53
@charliermarsh charliermarsh enabled auto-merge (squash) May 31, 2023 17:58
@charliermarsh charliermarsh merged commit 1156c65 into main May 31, 2023
14 checks passed
@charliermarsh charliermarsh deleted the charlie/move-runtime-import branch May 31, 2023 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants