Solicitud de paquetes de Python desde conexiones ascendentes y externas - CodeArtifact

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solicitud de paquetes de Python desde conexiones ascendentes y externas

Al importar una versión de paquete de Python desde pypi.org, CodeArtifact importará todos los activos de esa versión de paquete. Si bien la mayoría de los paquetes de Python contienen una pequeña cantidad de activos, algunos contienen más de 100 activos, normalmente para admitir múltiples arquitecturas de hardware e intérpretes de Python.

Es habitual que se publiquen nuevos activos en pypi.org para una versión de paquete existente. Por ejemplo, algunos proyectos publican nuevos activos cuando se lanzan nuevas versiones de Python. Cuando se instala un paquete de Python desde CodeArtifact con pip install, las versiones del paquete que se conservan en el repositorio de CodeArtifact se actualizan para reflejar el último conjunto de activos de pypi.org.

Del mismo modo, si hay nuevos activos disponibles para una versión de paquete en un repositorio de CodeArtifact anterior que no están presentes en el repositorio de CodeArtifact actual, se conservarán en el repositorio actual cuando se ejecute pip install.

Versiones de paquetes retiradas

Algunas versiones de paquetes en pypi.org están marcadas como retiradas, lo que indica al instalador del paquete (por ejemplo, pip) que la versión no debe instalarse a menos que sea la única que coincida con un especificador de versión (utilizando == o ===). Consulte PEP_592 para obtener más información.

Si la versión de un paquete en CodeArtifact se obtuvo originalmente desde una conexión externa a pypi.org, al instalar la versión del paquete desde un repositorio de CodeArtifact, CodeArtifact se asegura de que los metadatos extraídos actualizados de la versión del paquete se obtengan de pypi.org.

Cómo saber si se ha retirado una versión de un paquete

Para comprobar si una versión de un paquete está eliminada en CodeArtifact, puede intentar instalarla con pip install packageName===packageVersion. Si la versión del paquete está retirada, recibirá un mensaje de advertencia similar al siguiente:

WARNING: The candidate selected for download or install is a yanked version

Para comprobar si una versión de paquete ha sido eliminada de pypi.org, puede visitar la lista de pypi.org de la versión del paquete en https://pypi.org/project/packageName/packageVersion/.

Establecer el estado de retirada en los paquetes privados

CodeArtifact no admite la configuración de metadatos retirados para los paquetes publicados directamente en los repositorios de CodeArtifact.

¿Por qué CodeArtifact no obtiene los últimos metadatos o activos retirados para una versión de paquete?

Normalmente, CodeArtifact garantiza que cuando se obtiene una versión de un paquete de Python de un repositorio de CodeArtifact, los metadatos extraídos estén actualizados con el último valor de pypi.org. Además, la lista de activos de la versión de paquete también se mantiene actualizada con el conjunto más reciente en pypi.org y en cualquier repositorio principal de CodeArtifact. Esto es cierto tanto si instala la versión del paquete por primera vez y CodeArtifact la importa desde pypi.org a su repositorio de CodeArtifact, como si ha instalado el paquete anteriormente. Sin embargo, hay casos en los que el cliente del administrador de paquetes, como pip, no extrae los últimos metadatos extraídos de pypi.org o repositorios principales. En su lugar, CodeArtifact devolverá los datos que ya están almacenados en su repositorio. En esta sección se describen las tres formas en que esto puede ocurrir:

Configuración inicial: si elimina la conexión externa a pypi.org desde el repositorio o sus fuentes de distribución mediante disassociate-external-connection, los metadatos extraídos ya no se actualizarán de pypi.org. Del mismo modo, si elimina un repositorio principal, los activos del repositorio eliminado y de las fuentes de distribución del repositorio eliminado dejarán de estar disponibles en el repositorio actual. Lo mismo ocurre si utiliza los controles de origen del paquete CodeArtifact para evitar que se extraigan nuevas versiones de un paquete específico; la configuración upstream=BLOCK bloqueará la actualización de los metadatos retirados.

Estado de la versión del paquete: si establece el estado de la versión de un paquete en cualquier otra opción excepto Published o Unlisted, los metadatos y activos retirados de la versión del paquete no se actualizarán. Del mismo modo, si está buscando una versión de paquete específica (por ejemplo, torch 2.0.1) y la misma versión de paquete está presente en un repositorio principal con un estado que no es Published o Unlisted, esto también impedirá la propagación de los metadatos y activos retirados del repositorio principal al repositorio actual. Esto se debe a que los estados de las versiones de otros paquetes indican que las versiones ya no están destinadas a consumirse en ningún repositorio.

Publicación directa: si publica una versión de paquete específica directamente en un repositorio de CodeArtifact, esto impedirá la actualización de los metadatos y activos retirados para la versión del paquete de sus repositorios principales y pypi.org. Por ejemplo, supongamos que descarga un activo de la versión torch 2.0.1 del paquete, por ejemplo torch-2.0.1-cp311-none-macosx_11_0_arm64.whl, usando un navegador web y luego lo publica en su repositorio de CodeArtifact usando twine como torch 2.0.1. CodeArtifact rastrea que la versión del paquete se introdujo en el dominio mediante la publicación directa en su repositorio, no desde una conexión externa a pypi.org o un repositorio principal. En este caso, CodeArtifact no mantiene los metadatos retirados sincronizados con los repositorios principales o con pypi.org. Lo mismo ocurre si publica torch 2.0.1 en un repositorio principal: la presencia de la versión del paquete impedirá la propagación de los metadatos y activos retirados a los repositorios que se encuentran más abajo en el gráfico inicial.