Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Infinite recursion error on deep copy `AzureBackendConfig` due to __getattr__ implementation

Abierto Apto para principiantes
#708 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@jessetvogel ya está trabajando en esto.

Desde el 6/1/2026.

  • #709 de @jessetvogel — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
azure, python
Área
backend

Línea de trabajo

Comienza en azure-quantum/azure/quantum/qiskit/backends/backend.py, en AzureBackendConfig.getattr, y luego ejecuta la reproducción de deepcopy del issue. Verifica que copiar una instancia con metadatos vacíos ya no provoque RecursionError, mientras que los atributos ausentes sigan provocando AttributeError y los atributos respaldados por metadatos sigan funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

The class AzureBackendConfig in azure.quantum.qiskit.backends.backend has a field metadata containing any remaining properties of the class. The __getattr__ method of this class is implemented in such a way that, if the attribute is not found, the metadata dict is checked. However, this leads to a RecursionError: maximum recursion depth exceeded when an instance of the class is copied using copy.deepcopy (which apparently happens sometimes).

The relevant piece of code:

class AzureBackendConfig:

    ...

    def __getattr__(self, name: str) -> Any:
        if name == "max_experiments":
            return 1
        try:
            return self.__dict__[name]
        except KeyError as exc:
            if name in self.metadata:
                return self.metadata[name]
            raise AttributeError(
                f"'{type(self).__name__}' object has no attribute '{name}'"
            ) from exc

Simplified reproduction of the error:

import copy
from dataclasses import dataclass, field
from typing import Any

@dataclass
class A:
    metadata: dict[str, Any] = field(default_factory=dict)

    def __getattr__(self, name: str) -> Any:
        try:
            return self.__dict__[name]
        except KeyError as exc:
            if name in self.metadata:
                return self.metadata[name]
            raise AttributeError(
                f"'{type(self).__name__}' object has no attribute '{name}'"
            ) from exc

a = A()

copy.deepcopy(a)  # RecursionError: maximum recursion depth exceeded

A possible solution would be to change the problematic line to:

if "metadata" in self.__dict__ and name in self.metadata:
Lenguaje dominante
Python
Estrellas
161
Forks
113
Merge medio
4 d 21 h
PR fusionados (30 d)
3

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/azure-quantum-python

Todos los issues de microsoft/azure-quantum-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.