-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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 basic support for PEP 702 (@deprecated). #17476
base: master
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Thank you! I'll review this soon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this is looking pretty good!
This is a case where just one overload is deprecated, so I think For reference, pyright has the same issue:
Pyanalyze prints the affected overload (but appears to have a bug where the signature degenerates to
I would want it to either print the actual deprecated signature (like pyanalyze) or say something like "Deprecated call to logging.getLevelName", indicating that the function isn't fully deprecated, just this way of calling it is deprecated. |
Noticed this in primer output from python/mypy#17476.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Noticed this in primer output from python/mypy#17476.
This comment has been minimized.
This comment has been minimized.
docs/source/error_code_list2.rst
Outdated
Check that imported or used feature is deprecated [deprecated] | ||
-------------------------------------------------------------- | ||
|
||
If you use :option:`--warn-deprecated <mypy --warn-deprecated>`, mypy generates a note if |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like there has been some back and forth so docs are out of sync now. To summarize how I see the logic should be:
- Deprecation messages are always shown as notes by default (with code shown, see my previous comment), this will result in exit code 0 (which is kind of my main concern, I don't want users CI to break unnecessarily on new mypy version).
- People who still don't want to see the notes, can use
--disable-error-code=deprecated
and/or# type: ignore[deprecated]
. - There should be a flag that turns notes into errors (for more pedantic people). They will still be able to selectively silence the errors using
# type: ignore[deprecated]
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- There should be a flag that turns notes into errors (for more pedantic people).
Does Mypy implement other checks that can result in errors or notes, depending on an option? (I'm just asking to avoid reinventing the wheel.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH I don't remember. But in any case it should be as simple as changing last line in your warn_deprecated()
method in checker.py
to something like
if self.options.error_on_deprecated: # or other flag name
self.error(...)
else:
self.note(...)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That seems doable, thanks. I will implement it later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done! report-deprecated-as-error
is the shortest understandable description I could come up with. Other suggestions are welcome, of course.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@tyralla are you looking at implementing the feedback for this? I am happy to pick up where you left off otherwise. |
…e`, and `deserialize`.
…irectImport1-only_when_nocache`) fails due to currently unknown reasons.
…la/mypy into feature/support_deprecated
This comment has been minimized.
This comment has been minimized.
Sorry, I was too busy the last few weeks to continue working on it. @Youssefares: I could try to thoroughly address the last remarks in mid-September, but definitely not earlier, and Python 3.13 is on its way. So please do not hesitate if you can start sooner.
|
Noticed this in primer output from python/mypy#17476.
@Youssefares: Did you find time to work on it? I could restart soon, but likely only in small steps. (Especially if I have to solve the mystery about |
… to `semanal.py`.
for more information, see https://pre-commit.ci
This comment has been minimized.
This comment has been minimized.
@Youssefares: Okay, then I'll pick up again. @ilevkivskyi: a6d0e59 addresses your second remark (moving the deprecation note creation from |
…verloaded` to the symbol nodes `FuncDef` and `OverloadedFuncDef`
for more information, see https://pre-commit.ci
This comment has been minimized.
This comment has been minimized.
I moved the attribute After all these changes, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Except for the case of specific overload deprecations
I actually expected this. I think it is a worthy trade-off.
what strenghtens my impression the the test itself is flawed.
Hm, I don't see anything obviously wrong with the test. As a guess you need to update this part to include the new flag https://github.com/python/mypy/blob/master/mypy/server/astdiff.py#L228-L256 (since currently you effectively rely on node kind switching from function to decorator to trigger the update).
Anyway, my current comments are all minor, this is good to merge as soon as you fix the test.
…cial case so that `testDeprecatedAddFunctionDeprecationIndirectImport` passes both with `cache` and `nocache` and add some more tests.
for more information, see https://pre-commit.ci
My first attempt to include the new flag into the returned tuple made no difference. While thinking about it, I came across the |
Diff from mypy_primer, showing the effect of this PR on open source code: parso (https://github.com/davidhalter/parso)
+ parso/tree.py:1: note: class abc.abstractproperty is deprecated: Use 'property' with 'abstractmethod' instead [deprecated]
SinbadCogs (https://github.com/mikeshardmind/SinbadCogs)
+ rolemanagement/events.py:41: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ embedmaker/serialize.py:81: note: function datetime.datetime.utcfromtimestamp is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc) [deprecated]
+ antimentionspam/antimentionspam.py:239: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ scheduler/time_utils.py:42: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ embedmaker/time_utils.py:42: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ scheduler/message.py:82: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ modnotes/modnotes.py:148: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
spack (https://github.com/spack/spack)
+ lib/spack/spack/util/package_hash.py:30: note: class ast.Str is deprecated: Replaced by ast.Constant; removed in Python 3.14 [deprecated]
pydantic (https://github.com/pydantic/pydantic)
+ pydantic/deprecated/parse.py:78: note: function pydantic.deprecated.parse.load_str_bytes is deprecated: `load_str_bytes` is deprecated. [deprecated]
+ pydantic/__init__.py:59: note: function pydantic.deprecated.class_validators.root_validator is deprecated: Pydantic V1 style `@root_validator` validators are deprecated. You should migrate to Pydantic V2 style `@model_validator` validators, see the migration guide for more details [deprecated]
+ pydantic/__init__.py:59: note: function pydantic.deprecated.class_validators.validator is deprecated: Pydantic V1 style `@validator` validators are deprecated. You should migrate to Pydantic V2 style `@field_validator` validators, see the migration guide for more details [deprecated]
+ pydantic/__init__.py:60: note: class pydantic.deprecated.config.BaseConfig is deprecated: BaseConfig is deprecated. Use the `pydantic.ConfigDict` instead. [deprecated]
+ pydantic/__init__.py:60: note: class pydantic.deprecated.config.Extra is deprecated: Extra is deprecated. Use literal values instead (e.g. `extra='allow'`) [deprecated]
+ pydantic/color.py:252: note: class pydantic.color.Color is deprecated: The `Color` class is deprecated, use `pydantic_extra_types` instead. See https://docs.pydantic.dev/latest/api/pydantic_extra_types_color/. [deprecated]
+ pydantic/deprecated/json.py:16: note: class pydantic.color.Color is deprecated: The `Color` class is deprecated, use `pydantic_extra_types` instead. See https://docs.pydantic.dev/latest/api/pydantic_extra_types_color/. [deprecated]
+ pydantic/deprecated/json.py:132: note: function pydantic.deprecated.json.pydantic_encoder is deprecated: `pydantic_encoder` is deprecated, use `pydantic_core.to_jsonable_python` instead. [deprecated]
+ pydantic/main.py:1219: note: function pydantic.deprecated.parse.load_str_bytes is deprecated: `load_str_bytes` is deprecated. [deprecated]
+ pydantic/main.py:1271: note: function pydantic.deprecated.parse.load_file is deprecated: `load_file` is deprecated. [deprecated]
+ pydantic/main.py:1278: note: function pydantic.main.BaseModel.parse_obj is deprecated: The `parse_obj` method is deprecated; use `model_validate` instead. [deprecated]
+ pydantic/deprecated/tools.py:101: note: function pydantic.deprecated.tools.schema_of is deprecated: `schema_of` is deprecated. Use `pydantic.TypeAdapter.json_schema` instead. [deprecated]
+ pydantic/v1/_hypothesis_plugin.py:105: note: class pydantic.color.Color is deprecated: The `Color` class is deprecated, use `pydantic_extra_types` instead. See https://docs.pydantic.dev/latest/api/pydantic_extra_types_color/. [deprecated]
+ pydantic/v1/_hypothesis_plugin.py:126: note: class pydantic.types.PaymentCardNumber is deprecated: The `PaymentCardNumber` class is deprecated, use `pydantic_extra_types` instead. See https://docs.pydantic.dev/latest/api/pydantic_extra_types_payment/#pydantic_extra_types.payment.PaymentCardNumber. [deprecated]
+ pydantic/v1/_hypothesis_plugin.py:139: note: class pydantic.types.PaymentCardNumber is deprecated: The `PaymentCardNumber` class is deprecated, use `pydantic_extra_types` instead. See https://docs.pydantic.dev/latest/api/pydantic_extra_types_payment/#pydantic_extra_types.payment.PaymentCardNumber. [deprecated]
+ pydantic/deprecated/decorator.py:84: note: function pydantic.deprecated.decorator.validate_arguments is deprecated: The `validate_arguments` method is deprecated; use `validate_call` instead. [deprecated]
Tanjun (https://github.com/FasterSpeeding/Tanjun)
+ tanjun/injecting.py:106: note: class alluka._self_injecting.AsyncSelfInjecting is deprecated: Use Client.auto_inject_async [deprecated]
+ tanjun/context/base.py:58: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/base.py:133: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/base.py:136: note: function alluka._context.BasicContext._remove_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/slash.py:321: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/slash.py:1042: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/slash.py:1077: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/slash.py:1085: note: function alluka._context.BasicContext._remove_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/message.py:114: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/message.py:184: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/message.py:189: note: function alluka._context.BasicContext._remove_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/autocomplete.py:95: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/menu.py:98: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/menu.py:153: note: function alluka._context.BasicContext._set_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/context/menu.py:156: note: function alluka._context.BasicContext._remove_type_special_case is deprecated: Use ContextOverride [deprecated]
+ tanjun/annotations.py:1699: note: @overload should be placed before @deprecated
cloud-init (https://github.com/canonical/cloud-init)
+ cloudinit/reporting/handlers.py:378: note: function datetime.datetime.utcfromtimestamp is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc) [deprecated]
+ tests/integration_tests/clouds.py:328: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ cloudinit/sources/azure/errors.py:55: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ cloudinit/sources/azure/kvp.py:52: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ tests/unittests/sources/azure/test_kvp.py:14: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ tests/integration_tests/test_paths.py:69: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ tests/integration_tests/test_paths.py:101: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
pywin32 (https://github.com/mhammond/pywin32)
+ AutoDuck/fixHelpCompression.py:16:1: note: function win32.win32api.WriteProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ win32/Lib/win32serviceutil.py:140:19: note: function win32.win32api.GetProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/sgrepmdi.py:615:20: note: function win32.win32api.GetProfileSection is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/sgrepmdi.py:629:21: note: function win32.win32api.WriteProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/mdi_pychecker.py:703:20: note: function win32.win32api.GetProfileSection is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/mdi_pychecker.py:717:21: note: function win32.win32api.WriteProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/editor/vss.py:45:20: note: function win32.win32api.GetProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
+ Pythonwin/pywin/framework/editor/vss.py:46:19: note: function win32.win32api.GetProfileVal is deprecated: This function is obsolete, applications should use the registry instead. [deprecated]
pwndbg (https://github.com/pwndbg/pwndbg)
+ pwndbg/commands/__init__.py: note: In function "OnlyWithResolvedHeapSyms":
+ pwndbg/commands/__init__.py:453: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
dd-trace-py (https://github.com/DataDog/dd-trace-py)
+ ddtrace/internal/debug.py:121: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ ddtrace/appsec/_iast/_ast/visitor.py:228: note: class ast.Bytes is deprecated: Replaced by ast.Constant; removed in Python 3.14 [deprecated]
+ ddtrace/appsec/_iast/_ast/visitor.py:238: note: class ast.Num is deprecated: Replaced by ast.Constant; removed in Python 3.14 [deprecated]
+ ddtrace/appsec/_iast/_ast/visitor.py:390: note: class ast.NameConstant is deprecated: Replaced by ast.Constant; removed in Python 3.14 [deprecated]
+ ddtrace/profiling/exporter/http.py:219: note: function datetime.datetime.utcfromtimestamp is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc) [deprecated]
+ ddtrace/profiling/exporter/http.py:220: note: function datetime.datetime.utcfromtimestamp is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc) [deprecated]
alerta (https://github.com/alerta/alerta)
+ alerta/dev.py:4: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/utils/audit.py:94: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/note.py:25: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/key.py:31: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/key.py:42: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/key.py:164: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/heartbeat.py:56: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/heartbeat.py:59: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/heartbeat.py:61: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/blackout.py:37: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/blackout.py:60: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:66: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:75: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:282: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:335: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:379: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:430: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:574: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:609: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/alert.py:637: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/auth/utils.py:52: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/user.py:41: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/models/user.py:44: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/database/backends/mongodb/utils.py:250: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/database/backends/mongodb/utils.py:252: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/database/backends/mongodb/utils.py:254: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/database/backends/mongodb/utils.py:345: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ alerta/database/backends/mongodb/utils.py:347: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
scrapy (https://github.com/scrapy/scrapy)
+ scrapy/utils/misc.py:279: note: class ast.NameConstant is deprecated: Replaced by ast.Constant; removed in Python 3.14 [deprecated]
openlibrary (https://github.com/internetarchive/openlibrary)
+ openlibrary/core/yearly_reading_goals.py: note: In member "update_current_count" of class "YearlyReadingGoals":
+ openlibrary/core/yearly_reading_goals.py:103: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/yearly_reading_goals.py: note: In member "update_target" of class "YearlyReadingGoals":
+ openlibrary/core/yearly_reading_goals.py:121: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/edits.py: note: In member "assign_request" of class "CommunityEditsQueue":
+ openlibrary/core/edits.py:231: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/edits.py: note: In member "unassign_request" of class "CommunityEditsQueue":
+ openlibrary/core/edits.py:251: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/edits.py: note: In member "update_request_status" of class "CommunityEditsQueue":
+ openlibrary/core/edits.py:280: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/edits.py: note: In member "comment_request" of class "CommunityEditsQueue":
+ openlibrary/core/edits.py:296: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/core/edits.py: note: In member "create_comment" of class "CommunityEditsQueue":
+ openlibrary/core/edits.py:322: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/plugins/upstream/borrow.py: note: In function "is_loaned_out":
+ openlibrary/plugins/upstream/borrow.py:609: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/plugins/upstream/borrow.py: note: In function "_update_loan_status":
+ openlibrary/plugins/upstream/borrow.py:635: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/plugins/upstream/borrow.py: note: In function "get_ia_auth_dict":
+ openlibrary/plugins/upstream/borrow.py:826: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ openlibrary/plugins/upstream/addbook.py: note: In function "get_recaptcha":
+ openlibrary/plugins/upstream/addbook.py:50: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
discord.py (https://github.com/Rapptz/discord.py)
+ discord/member.py:946: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ discord/member.py:1002: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ discord/ext/tasks/__init__.py:227: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
comtypes (https://github.com/enthought/comtypes)
+ comtypes/test/__init__.py:140: note: function unittest.loader.makeSuite is deprecated: Deprecated in Python 3.11; removal scheduled for Python 3.13 [deprecated]
+ comtypes/test/__init__.py:210: note: function unittest.loader.makeSuite is deprecated: Deprecated in Python 3.11; removal scheduled for Python 3.13 [deprecated]
speedrun.com_global_scoreboard_webapp (https://github.com/Avasam/speedrun.com_global_scoreboard_webapp)
+ backend/api/api_wrappers.py:56: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ backend/services/user_updater.py:78: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ backend/api/core_api.py:36: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ backend/api/core_api.py:37: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ backend/api/global_scoreboard_api.py:76: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
dragonchain (https://github.com/dragonchain/dragonchain)
+ dragonchain/lib/dto/smart_contract_model.py:100:86: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ dragonchain/lib/dto/smart_contract_model.py:300:112: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ dragonchain/lib/authorization.py:51:12: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ dragonchain/scheduler/scheduler.py:65:42: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
freqtrade (https://github.com/freqtrade/freqtrade)
+ freqtrade/data/history/history_utils.py:125: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ freqtrade/rpc/api_server/api_ws.py:42: note: function pydantic.main.BaseModel.dict is deprecated: The `dict` method is deprecated; use `model_dump` instead. [deprecated]
pytest-robotframework (https://github.com/detachhead/pytest-robotframework)
+ pytest_robotframework/__init__.py:471: note: @overload should be placed before @deprecated
sockeye (https://github.com/awslabs/sockeye)
+ sockeye/utils.py:843: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ sockeye/model.py:183: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ sockeye/model.py:187: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
paasta (https://github.com/yelp/paasta)
+ paasta_tools/utils.py:1496: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/utils.py:3673: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/utils.py:3680: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/utils.py:3688: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/spark_tools.py:136: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/spark_tools.py:204: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/setup_istio_mesh.py:106: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/smartstack_tools.py:476: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/smartstack_tools.py:533: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/cli/cmds/logs.py:809: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/cli/cmds/logs.py:824: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/cli/cmds/logs.py:829: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/cli/cmds/logs.py:1020: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/cli/cmds/logs.py:1024: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
+ paasta_tools/cli/cmds/logs.py:1310: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/cli/cmds/logs.py:1317: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ paasta_tools/cli/cmds/logs.py:1329: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
bandersnatch (https://github.com/pypa/bandersnatch)
+ src/bandersnatch/utils.py: note: In function "make_time_stamp":
+ src/bandersnatch/utils.py:54: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
+ src/bandersnatch/mirror.py: note: In member "synchronize" of class "Mirror":
+ src/bandersnatch/mirror.py:58: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
optuna (https://github.com/optuna/optuna)
+ optuna/_gp/gp.py:260: note: function logging.Logger.warn is deprecated: Deprecated; use warning() instead. [deprecated]
typeshed-stats (https://github.com/AlexWaygood/typeshed-stats)
+ website_macros.py:101: note: function datetime.datetime.utcnow is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc) [deprecated]
tornado (https://github.com/tornadoweb/tornado)
+ tornado/autoreload.py:339: note: function pkgutil.get_loader is deprecated: Use importlib.util.find_spec() instead. Will be removed in Python 3.14. [deprecated]
+ tornado/test/httputil_test.py:444: note: function datetime.datetime.utcfromtimestamp is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc) [deprecated]
... (truncated 25 lines) ...``` |
Hm, docstring of module |
I am now quite sure that [case testReplaceFunctionWithDecoratedFunction-only_when_nocache]
from b import f
x: int = f()
import b
y: int = b.f()
[file b.py]
from a import f
[file a.py]
def f() -> int: ...
[file a.py.2]
from typing import Callable, TypeVar
T = TypeVar("T")
# def d(t: str, /) -> Callable[[T], T]: ... # version 1
# def d(t: str, /) -> Callable[[Callable[[], str]], Callable[[], str]]: ... # version 2
# def d(t: T, /) -> T: ... # version 3
def d(t: Callable[[], str], /) -> Callable[[], str]: ... # version 4
# @d("deprecated") # version 1 or 2
@d # version 3 or 4
def f() -> str: ...
[builtins fixtures/tuple.pyi]
[out]
==
main:2: error: Incompatible types in assignment (expression has type "str", variable has type "int")
main:4: error: Incompatible types in assignment (expression has type "str", variable has type "int") |
I now had time for some debugging but did not come to a helpful conclusion. The already mentioned docstring seems to suggest that snapshots and fine-grained dependencies have nothing to do with each other. I thought that snapshots would be used to determine the triggers that are used in combination with the fine-grained dependency mappings for determining targets that need reprocessing. Another confusion comes from the fact that Mypy does not fail the following test cast: [case testReplaceFunctionWithDecoratedFunction-only_when_nocache]
from b import f
x: int = f()
[file b.py]
from a import f
[file a.py]
def f() -> int: ...
[file a.py.2]
def f() -> str: ...
[builtins fixtures/tuple.pyi]
[out]
==
main:2: error: Incompatible types in assignment (expression has type "str", variable has type "int") It seems to me that Mypy does not handle this test well because of processing the modules in the right order ( Again, all this seems to apply only for I suspect those familiar with Mypy's server functionalities will find it much easier to solve this puzzle (or see, where I am thinking in the wrong direction), so I will wait for help. |
I will try to look at this on the weekend, there indeed may be a deeper problem. |
Closes #16111
This PR provides only basic support. Many special cases might need additional attention (descriptors, some special methods like
__int__
, etc.). Other open issues are code comments, eventual documentation updates, the deprecation message style, etc.). But I wanted to offer these first steps before going on vacation (so I cannot respond to possible reviews too soon).Maybe someone wants to extend the list of (test) cases the basic support should address?