Title: Many pure python tools that have a special cases for dict should accept frozendict as well. · Issue #145056 · python/cpython · GitHub
Open Graph Title: Many pure python tools that have a special cases for dict should accept frozendict as well. · Issue #145056 · python/cpython
X Title: Many pure python tools that have a special cases for dict should accept frozendict as well. · Issue #145056 · python/cpython
Description: I'll fix the ones in collections. Some other priorities are pprint and ElementTree Here's a rg dict | rg isinstance scan of the Lib directory: unittest/mock.py: if isinstance(self.in_dict, str): trace.py: if isinstance(d, dict)] rlcomple...
Open Graph Description: I'll fix the ones in collections. Some other priorities are pprint and ElementTree Here's a rg dict | rg isinstance scan of the Lib directory: unittest/mock.py: if isinstance(self.in_dict, str): tr...
X Description: I'll fix the ones in collections. Some other priorities are pprint and ElementTree Here's a rg dict | rg isinstance scan of the Lib directory: unittest/mock.py: if isinstance(self.in_dict, ...
Opengraph URL: https://github.com/python/cpython/issues/145056
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Many pure python tools that have a special cases for dict should accept frozendict as well.","articleBody":"I'll fix the ones in `collections`. Some other priorities are `pprint` and `ElementTree`\n\nHere's a `rg dict | rg isinstance` scan of the `Lib` directory:\n\n```python\nunittest/mock.py: if isinstance(self.in_dict, str):\ntrace.py: if isinstance(d, dict)]\nrlcompleter.py: if namespace and not isinstance(namespace, dict):\nrlcompleter.py: isinstance(thisobject.__dict__.get(word),\ntomllib/_parser.py: if not isinstance(cont, dict):\ntomllib/_parser.py: if isinstance(value, (dict, list)):\ntomllib/_parser.py: if isinstance(value, (dict, list)):\ntomllib/_parser.py: if isinstance(float_value, (dict, list)):\nmultiprocessing/managers.py: if not isinstance(method_to_typeid, dict):\nfunctools.py: (kwds is not None and not isinstance(kwds, dict)) or\nfunctools.py: (namespace is not None and not isinstance(namespace, dict))):\npprint.py: if isinstance(object, self._dict_items_view):\nturtle.py: if isinstance(pen, dict):\noptparse.py: not isinstance(self.callback_kwargs, dict)):\noptparse.py: elif isinstance(other, dict):\nlinecache.py: if module_globals is not None and not isinstance(module_globals, dict):\nxml/etree/ElementTree.py: if not isinstance(attrib, dict):\n_pyrepl/input.py: if isinstance(d, dict):\ntkinter/__init__.py: if isinstance(cnfs, dict):\ntkinter/__init__.py: if isinstance(cnf, (dict, tuple)):\n_pyrepl/base_eventqueue.py: if isinstance(k, dict):\ntest/_test_multiprocessing.py: def test_dict_isinstance(self):\n_pyrepl/readline.py: if not isinstance(namespace, dict):\nlogging/config.py: if not isinstance(value, ConvertingDict) and isinstance(value, dict):\nlogging/config.py: elif isinstance(qspec, dict):\nlogging/config.py: elif isinstance(lspec, dict):\nlogging/config.py: assert isinstance(d, dict)\ntest/test_pyrepl/test_terminfo.py: isinstance(ncurses_data[key], dict)\ntest/test_pyrepl/test_terminfo.py: isinstance(ncurses_data[key], dict)\ntest/test_launcher.py: if isinstance(value, dict):\ntest/test_launcher.py: tags = [t for t in company_data if isinstance(company_data[t], dict)]\ntest/test_launcher.py: tags = [t for t in company_data if isinstance(company_data[t], dict)]\ntest/test_isinstance.py: self.assertFalse(issubclass(dict, float|str))\ntest/test_marshal.py: elif isinstance(obj, dict):\ntest/test_format.py: if isinstance(args, dict):\ntest/test_build_details.py: self.assertFalse(isinstance(sys.implementation.version, dict))\n_pydecimal.py: elif not isinstance(traps, dict):\n_pydecimal.py: elif not isinstance(flags, dict):\n_pydecimal.py: if not isinstance(d, dict):\ncollections/__init__.py: if not isinstance(other, dict):\ncollections/__init__.py: if not isinstance(other, dict):\ncollections/__init__.py: if isinstance(other, dict):\ncollections/__init__.py: if isinstance(other, dict):\ntest/test_module/__init__.py: self.assertTrue(isinstance(foo.__dict__, dict))\nprofiling/sampling/heatmap_collector.py: if isinstance(data, dict):\ntest/test_code.py: if isinstance(globalvars, dict):\ntest/test_urllib2_localnet.py: assert isinstance(users, dict)\nannotationlib.py: or isinstance(self.__cell__, dict)\nannotationlib.py: if isinstance(self.__cell__, dict):\nannotationlib.py: if isinstance(self.__cell__, dict) and isinstance(other.__cell__, dict)\nannotationlib.py: if isinstance(self.__cell__, dict) else id(self.__cell__),\nannotationlib.py: if not isinstance(ann, dict):\nannotationlib.py: if not isinstance(ann, dict):\ntest/test_io/test_general.py: if isinstance(v, dict):\ntest/test_compiler_assemble.py: elif isinstance(value, dict):\njson/encoder.py: elif isinstance(value, dict):\njson/encoder.py: elif isinstance(value, dict):\njson/encoder.py: elif isinstance(o, dict):\nplistlib.py: if not isinstance(self.stack[-1], dict):\nplistlib.py: if self.current_key or not isinstance(self.stack[-1], dict):\nplistlib.py: elif isinstance(value, dict):\nplistlib.py: if isinstance(value, dict):\nplistlib.py: elif isinstance(value, dict):\ntest/test_tomllib/burntsushi.py: elif isinstance(obj, dict):\ntest/test_tomllib/burntsushi.py: if isinstance(obj, dict):\ninspect.py: if isinstance(dict_obj, (staticmethod, types.BuiltinMethodType)):\ninspect.py: elif isinstance(dict_obj, (classmethod, types.ClassMethodDescriptorType)):\ninspect.py: elif isinstance(dict_obj, property):\ninspect.py: if isinstance(slots, dict) and name in slots:\ninspect.py: (kwdefaults is None or isinstance(kwdefaults, dict)))\nxmlrpc/client.py: if isinstance(item, dict):\ntest/test_importlib/resources/zip.py: if isinstance(contents, dict):\nimportlib/_bootstrap_external.py: if not isinstance(module_globals, dict):\ntest/test_descrtut.py: \u003e\u003e\u003e isinstance([], dict)\nenum.py: if isinstance(obj, dict):\ntest/test_import/test_lazy_imports.py: assert isinstance(sys.lazy_modules, dict), \"sys.lazy_modules is not a dict\"\ntest/test_type_annotations.py: if not isinstance(self.my_annotations, dict):\ntest/test_type_annotations.py: if not isinstance(value, dict):\ndataclasses.py: elif isinstance(obj, dict):\ntest/string_tests.py: elif isinstance(obj, dict):\ntest/test_pyclbr.py: if (not isinstance(classdict[name], ClassMethodType) or\ncompression/zstd/_zstdfile.py: if options is not None and not isinstance(options, dict):\ncompression/zstd/__init__.py: if not isinstance(dict_size, int):\ncompression/zstd/__init__.py: if not isinstance(zstd_dict, ZstdDict):\ncompression/zstd/__init__.py: if not isinstance(dict_size, int):\n```\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-145060\n* gh-145125\n* gh-145508\n* gh-146295\n* gh-146465\n* gh-146466\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/rhettinger","@type":"Person","name":"rhettinger"},"datePublished":"2026-02-20T22:58:40.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/145056/cpython/issues/145056"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:c4339d20-08ed-afdd-61db-27c1bcfe43e3 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A4F8:50919:73391FB:A1B8D77:6A4FD893 |
| html-safe-nonce | a41e2370e4efb7bd4e75d699f7de35eac9fa0b8670eb6f63af4ac4a465099c62 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNEY4OjUwOTE5OjczMzkxRkI6QTFCOEQ3Nzo2QTRGRDg5MyIsInZpc2l0b3JfaWQiOiIxOTc0MDY4NTE2OTM2OTk3MDExIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | ae02df93c934386c7cbe301406944872a15f83a36d4ac812972509c0e0c4d28e |
| hovercard-subject-tag | issue:3970718292 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/145056/issue_layout |
| twitter:image | https://opengraph.githubassets.com/04d2a14308239c38e14f5a1d02d7465ba3753c726a8635b857decddd08ba773c/python/cpython/issues/145056 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/04d2a14308239c38e14f5a1d02d7465ba3753c726a8635b857decddd08ba773c/python/cpython/issues/145056 |
| og:image:alt | I'll fix the ones in collections. Some other priorities are pprint and ElementTree Here's a rg dict | rg isinstance scan of the Lib directory: unittest/mock.py: if isinstance(self.in_dict, str): tr... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | rhettinger |
| hostname | github.com |
| expected-hostname | github.com |
| None | 19b98c3d9767bb8a56238a89ff8401d1cbdf3bc5c353799aacf49fe6c76b4b7c |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 142593e66413bbae27fd485859993597d5a3b104 |
| ui-target | canary-1 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width