Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

370
Vistas
Escriba la anotación para los recursos de boto3 como DynamoDB.Table

La biblioteca boto3 proporciona varios métodos de fábrica que devuelven recursos. Por ejemplo:

 dynamo = ( boto3 .resource('dynamodb') .Table(os.environ['DYNAMODB_TABLE']) )

Quiero anotar esos recursos para poder verificar y completar mejor el tipo, pero el único tipo similar que pude encontrar fue from boto3.dynamodb.table import TableResource .

Cuando agrego esa anotación:

 dynamo: TableResource = ( boto3 .resource('dynamodb') .Table(os.environ['DYNAMODB_TABLE']) )

El único método que ofrece la finalización automática es batch_writer(self, overwrite_by_pkeys) , aunque los documentos enumeran varios otros .

¿Es esta la clase incorrecta para usar como anotación? Al inspeccionar ese tipo de variable en la terminal, pude ver que era <class 'boto3.resources.factory.dynamodb.Table'> , pero no parece posible obtener ese tipo de forma estática.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Los tipos y métodos de la API no existen de forma estática. boto3 usa una arquitectura basada en datos, un diseño extremadamente dinámico que usa datos en formato JSON ( aquí hay un ejemplo) para determinar qué llamadas API son posibles. Hacen esto para facilitar la actualización de la biblioteca para incluir nuevos cambios de API. No estoy seguro, pero creo que podrían usar la misma estrategia para los SDK en otros idiomas, por lo que se pueden realizar cambios en varios SDK con poco trabajo duplicado.

Aquí hay una cita de su blog:

Las bibliotecas deben adaptarse a los cambios en las necesidades de los usuarios y también a los cambios en las plataformas en las que se ejecutan. A medida que el crecimiento de AWS se aceleró a lo largo de los años, la velocidad a la que se actualizan nuestras API también se ha acelerado. Esto requirió que ideáramos un método escalable para brindar rápidamente soporte para múltiples actualizaciones de API cada semana, y es por eso que el soporte de API de AWS en Boto3 está casi completamente basado en datos. Boto3 tiene clases de 'cliente' que están impulsadas por modelos de API con formato JSON que describen las API de AWS, por lo que la mayoría de las funciones de servicio nuevas solo requieren una actualización de modelo simple. Esto nos permite brindar soporte para cambios de API muy rápidamente, de manera consistente y confiable.

También puede vislumbrar que esto suceda ingresando a una llamada de método como resource.Table en un depurador.

over 4 years ago · Santiago Trujillo Denunciar

0

Además de la respuesta de Alex Hall. Las referencias directas se pueden utilizar para resolver este problema.

 dynamo: 'boto3.resources.factory.dynamodb.Table' = ( boto3 .resource('dynamodb') .Table(os.environ['DYNAMODB_TABLE']))
over 4 years ago · Santiago Trujillo Denunciar

0

Es posible escribir código de anotación que usa DynamoDB con la ayuda de esta biblioteca: https://github.com/vemel/mypy_boto3 .

Instalación:

 pip install boto3-stubs[dynamodb]

Uso:

 from mypy_boto3_dynamodb import ServiceResource dynamodb: ServiceResource = boto3.resource( "dynamodb", region_name=region ) # now type checker or IDE can infer type of `table` # and find its methods table = dynamodb.Table("example")

También es posible anotar muchos otros servicios de boto3, consulte la página de GitHub de la biblioteca.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda