python / python/cpython

Many pure python tools that have a special cases for dict should accept frozendict as well.

Aberta
#145,056 6 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

stdlib type-feature
Linguagem predominante
Python
Estrelas
77.2k
Forks
36k
Métricas de merge de PRs
Métricas de PR pendentes

Descrição

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)]
rlcompleter.py:        if namespace and not isinstance(namespace, dict):
rlcompleter.py:                        isinstance(thisobject.__dict__.get(word),
tomllib/_parser.py:            if not isinstance(cont, dict):
tomllib/_parser.py:    if isinstance(value, (dict, list)):
tomllib/_parser.py:        if isinstance(value, (dict, list)):
tomllib/_parser.py:        if isinstance(float_value, (dict, list)):
multiprocessing/managers.py:                if not isinstance(method_to_typeid, dict):
functools.py:           (kwds is not None and not isinstance(kwds, dict)) or
functools.py:           (namespace is not None and not isinstance(namespace, dict))):
pprint.py:        if isinstance(object, self._dict_items_view):
turtle.py:        if isinstance(pen, dict):
optparse.py:                not isinstance(self.callback_kwargs, dict)):
optparse.py:        elif isinstance(other, dict):
linecache.py:    if module_globals is not None and not isinstance(module_globals, dict):
xml/etree/ElementTree.py:        if not isinstance(attrib, dict):
_pyrepl/input.py:        if isinstance(d, dict):
tkinter/__init__.py:    if isinstance(cnfs, dict):
tkinter/__init__.py:        if isinstance(cnf, (dict, tuple)):
_pyrepl/base_eventqueue.py:            if isinstance(k, dict):
test/_test_multiprocessing.py:    def test_dict_isinstance(self):
_pyrepl/readline.py:    if not isinstance(namespace, dict):
logging/config.py:        if not isinstance(value, ConvertingDict) and isinstance(value, dict):
logging/config.py:                    elif isinstance(qspec, dict):
logging/config.py:                        elif isinstance(lspec, dict):
logging/config.py:                            assert isinstance(d, dict)
test/test_pyrepl/test_terminfo.py:                        isinstance(ncurses_data[key], dict)
test/test_pyrepl/test_terminfo.py:                            isinstance(ncurses_data[key], dict)
test/test_launcher.py:        if isinstance(value, dict):
test/test_launcher.py:            tags = [t for t in company_data if isinstance(company_data[t], dict)]
test/test_launcher.py:            tags = [t for t in company_data if isinstance(company_data[t], dict)]
test/test_isinstance.py:        self.assertFalse(issubclass(dict, float|str))
test/test_marshal.py:    elif isinstance(obj, dict):
test/test_format.py:    if isinstance(args, dict):
test/test_build_details.py:                        self.assertFalse(isinstance(sys.implementation.version, dict))
_pydecimal.py:        elif not isinstance(traps, dict):
_pydecimal.py:        elif not isinstance(flags, dict):
_pydecimal.py:        if not isinstance(d, dict):
collections/__init__.py:        if not isinstance(other, dict):
collections/__init__.py:        if not isinstance(other, dict):
collections/__init__.py:        if isinstance(other, dict):
collections/__init__.py:        if isinstance(other, dict):
test/test_module/__init__.py:        self.assertTrue(isinstance(foo.__dict__, dict))
profiling/sampling/heatmap_collector.py:            if isinstance(data, dict):
test/test_code.py:                if isinstance(globalvars, dict):
test/test_urllib2_localnet.py:        assert isinstance(users, dict)
annotationlib.py:            or isinstance(self.__cell__, dict)
annotationlib.py:        if isinstance(self.__cell__, dict):
annotationlib.py:                if isinstance(self.__cell__, dict) and isinstance(other.__cell__, dict)
annotationlib.py:                if isinstance(self.__cell__, dict) else id(self.__cell__),
annotationlib.py:        if not isinstance(ann, dict):
annotationlib.py:    if not isinstance(ann, dict):
test/test_io/test_general.py:                if isinstance(v, dict):
test/test_compiler_assemble.py:            elif isinstance(value, dict):
json/encoder.py:                    elif isinstance(value, dict):
json/encoder.py:                    elif isinstance(value, dict):
json/encoder.py:        elif isinstance(o, dict):
plistlib.py:            if not isinstance(self.stack[-1], dict):
plistlib.py:        if self.current_key or not isinstance(self.stack[-1], dict):
plistlib.py:        elif isinstance(value, dict):
plistlib.py:        if isinstance(value, dict):
plistlib.py:        elif isinstance(value, dict):
test/test_tomllib/burntsushi.py:    elif isinstance(obj, dict):
test/test_tomllib/burntsushi.py:    if isinstance(obj, dict):
inspect.py:        if isinstance(dict_obj, (staticmethod, types.BuiltinMethodType)):
inspect.py:        elif isinstance(dict_obj, (classmethod, types.ClassMethodDescriptorType)):
inspect.py:        elif isinstance(dict_obj, property):
inspect.py:            if isinstance(slots, dict) and name in slots:
inspect.py:            (kwdefaults is None or isinstance(kwdefaults, dict)))
xmlrpc/client.py:        if isinstance(item, dict):
test/test_importlib/resources/zip.py:        if isinstance(contents, dict):
importlib/_bootstrap_external.py:    if not isinstance(module_globals, dict):
test/test_descrtut.py:    >>> isinstance([], dict)
enum.py:    if isinstance(obj, dict):
test/test_import/test_lazy_imports.py:            assert isinstance(sys.lazy_modules, dict), "sys.lazy_modules is not a dict"
test/test_type_annotations.py:                if not isinstance(self.my_annotations, dict):
test/test_type_annotations.py:                if not isinstance(value, dict):
dataclasses.py:    elif isinstance(obj, dict):
test/string_tests.py:        elif isinstance(obj, dict):
test/test_pyclbr.py:                if (not isinstance(classdict[name], ClassMethodType) or
compression/zstd/_zstdfile.py:        if options is not None and not isinstance(options, dict):
compression/zstd/__init__.py:    if not isinstance(dict_size, int):
compression/zstd/__init__.py:    if not isinstance(zstd_dict, ZstdDict):
compression/zstd/__init__.py:    if not isinstance(dict_size, int):
Linked PRs
  • gh-145060
  • gh-145125
  • gh-145508
  • gh-146295
  • gh-146465
  • gh-146466

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece revisando collections/init.py e as localizações mencionadas em pprint.py e xml/etree/ElementTree.py; depois, leia os PRs vinculados para determinar quais casos continuam em aberto. Compare as verificações existentes de dict e os testes relacionados em cada módulo afetado; considera-se concluído quando as ferramentas pure-Python restantes acordadas lidarem consistentemente com frozendict sem causar regressões no comportamento de dict.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
tooling
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
25/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.