# PyPI

PyPI, the Python Package Index, is a repository for software packages for the Python programming language.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Собрать прошлое: как архивировать весь трафик сборки SONiC

DevFeed: [Собрать прошлое: как архивировать весь трафик сборки SONiC](<https://devfeed.tech/articles/sonic-24869.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/yandex/articles/1060234/>)

Author: denballakh (Яндекс, Yandex Cloud & Yandex Infrastructure)

Published: 2026-07-20T07:03:18Z

Content type: tutorial

Language: ru

Sources: [Яндекс - Как мы делаем Яндекс / Статьи](<https://devfeed.tech/sources/source.md>)

Topics: [Docker](<https://devfeed.tech/topics/docker.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [docker registry](<https://devfeed.tech/topics/docker-registry.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [debian](<https://devfeed.tech/tags/debian.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-registry](<https://devfeed.tech/tags/docker-registry.md>), [github](<https://devfeed.tech/tags/github.md>), [http](<https://devfeed.tech/tags/http.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [mitm](<https://devfeed.tech/tags/mitm.md>), [proxy](<https://devfeed.tech/tags/proxy.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [reproducibility](<https://devfeed.tech/tags/reproducibility.md>), [sonic](<https://devfeed.tech/tags/sonic.md>)

### AI overview

This article explains how Yandex Infrastructure developed a caching MITM proxy for SONiC and YaSONiC builds. The proxy captures HTTP/HTTPS traffic and serves previously saved responses to improve build reproducibility when external dependencies change or disappear.

### Source excerpt

Интернет -- это зависимость без зафиксированной версии. Сегодня он возвращает одно, завтра -- другое, а послезавтра -- ничего. Поэтому мы решили сохранить для сборки тот интернет, который она однажды увидела. Для этого пришлось перехватывать HTTPS, выпускать собственные сертификаты, переподписывать индексы Debian и выяснять, почему Docker отправляет "случайные" заголовки. В этой статье я расскажу, как разрабатывал кеширующую MITM-проксю, которая перехватывает весь HTTP/HTTPS-трафик и отдаёт ранее сохранённые ответы. Разберём также неочевидные технические проблемы, с которыми пришлось столкнуться. Читать далее

## Come join us at the next SQGNE Meeting! Open-Source Malware: Defending Your Software Supply Chain From Evolving Threats - June 17, 2026

DevFeed: [Come join us at the next SQGNE Meeting! Open-Source Malware: Defending Your Software Supply Chain From Evolving Threats - June 17, 2026](<https://devfeed.tech/articles/come-join-us-at-the-next-sqgne-meeting-open-source-malware-defending-your-software-supply-chain-from-evolving-threats-june-17-2026-22409.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/06/come-join-us-at-next-sqgne-meeting-open.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-06-02T02:34:08Z

Content type: news

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [open-source-security](<https://devfeed.tech/topics/open-source-security.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [Malware](<https://devfeed.tech/topics/malware.md>), [npm](<https://devfeed.tech/topics/npm.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [software composition analysis](<https://devfeed.tech/topics/software-composition-analysis.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [github](<https://devfeed.tech/tags/github.md>), [malware](<https://devfeed.tech/tags/malware.md>), [npm](<https://devfeed.tech/tags/npm.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [sca](<https://devfeed.tech/tags/sca.md>), [security](<https://devfeed.tech/tags/security.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>), [sqgne](<https://devfeed.tech/tags/sqgne.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>)

### AI overview

The Software Quality Group of New England will host a June 17, 2026 meeting featuring Bryan Whyte of Sonatype on open-source malware and software supply chain defense. The session will cover threats targeting npm, PyPI, GitHub, and development pipelines; differences between open-source malware and traditional malware or vulnerabilities; and common tactics used in software supply chain attacks.

### Source excerpt

"Open-Source Malware: Defending Your Software Supply Chain From Evolving Threats" will be the topic of the next Software Quality Group of New England (sqgne.org) meeting. Speaker: Bryan Whyte, CISSP Director, Solutions Engineering @Sonatype Date: June 17, 2026 @ 6:00 pm Join us on Zoom or in person at Burlington, MA ( Register Here ) "Bryan Whyte breaks down the latest wave of open source malware, explains how these threats diverge from traditional vulnerabilities, and shares actionable steps for organizations to defend mission-critical software. "As organizations deepen their reliance on open-source software, evolving security threats are reshaping the landscape at an unprecedented pace. "Threat actors are now increasingly targeting development pipelines and trusted ecosystems like npm to orchestrate supply chain attacks with significant downstream impact. Incidents such as the 2025 Shai-Hulud npm campaign, the XZ Utils backdoor, and the widespread compromise of over 23,000 GitHub repositories illustrate how open-source malware has quickly become a critical, top-tier threat built to evade legacy scanning and exploit trust woven into modern delivery pipelines. "--The shifting tactics of threat actors targeting npm, PyPi, GitHub, and development pipelines "--Key differences between open-source malware and traditional malware or vulnerabilities "--The most prevalent malware types and tactics driving today's software supply chain attacks "After spending 20 years in software development, Bryan started his journey into Application Security in 2015 with the AppScan tool suite for Static, Dynamic and Mobile Application Security Testing. In 2018, he expanded his Cybersecurity proficiency, earning the Certified Information Systems Security Professional (CISSP). In 2019, he was excited to join Sonatype due to the explosive growth of open-source software, which has made Software Composition Analysis (SCA) a critical aspect of Application Security". See you there! Happy Testing

## Cyber resiliency in practice: Lessons from recent supply chain attacks

DevFeed: [Cyber resiliency in practice: Lessons from recent supply chain attacks](<https://devfeed.tech/articles/cyber-resiliency-in-practice-lessons-from-recent-supply-chain-attacks-13017.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/cyber-resiliency-in-practice-lessons-from-recent-supply-chain-attacks>)

Published: 2026-05-08T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [resiliency](<https://devfeed.tech/topics/resiliency.md>), [supply chain attacks](<https://devfeed.tech/topics/supply-chain-attacks.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [axios](<https://devfeed.tech/topics/axios.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [litellm](<https://devfeed.tech/topics/litellm.md>), [trivy](<https://devfeed.tech/topics/trivy.md>), [npm](<https://devfeed.tech/topics/npm.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Python](<https://devfeed.tech/topics/python.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [axios](<https://devfeed.tech/tags/axios.md>), [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [cyber-resiliency](<https://devfeed.tech/tags/cyber-resiliency.md>), [cybersecurity](<https://devfeed.tech/tags/cybersecurity.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [litellm](<https://devfeed.tech/tags/litellm.md>), [malware](<https://devfeed.tech/tags/malware.md>), [npm](<https://devfeed.tech/tags/npm.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [security](<https://devfeed.tech/tags/security.md>), [security-attacks](<https://devfeed.tech/tags/security-attacks.md>), [social-engineering](<https://devfeed.tech/tags/social-engineering.md>), [software-supply-chain-security](<https://devfeed.tech/tags/software-supply-chain-security.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>), [trivy](<https://devfeed.tech/tags/trivy.md>), [worm](<https://devfeed.tech/tags/worm.md>)

### AI overview

The article defines cyber resiliency as an integrated ability to anticipate, withstand, recover from, and adapt to attacks across the full Protect, Detect, Respond, and Recover lifecycle. It examines recent supply chain attacks involving Trivy, Axios, and LiteLLM, highlighting risks such as GitHub Actions misconfiguration, long-lived tokens, incomplete credential rotation, mutable Git tags, maintainer-account compromise, and malicious package releases.

### Source excerpt

Learn how modern cyber resiliency helps organizations prevent, detect, and recover from supply chain attacks like Trivy, Axios, and LiteLLM.

## Security Week 2614: атака класса supply chain на библиотеку LiteLLM

DevFeed: [Security Week 2614: атака класса supply chain на библиотеку LiteLLM](<https://devfeed.tech/articles/security-week-2614-supply-chain-litellm-23064.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/kaspersky/articles/1016674/>)

Author: Kaspersky\_Lab ("Лаборатория Касперского")

Published: 2026-03-30T17:00:04Z

Content type: news

Language: ru

Sources: ["Лаборатория Касперского" RU](<https://devfeed.tech/sources/ru-2.md>)

Topics: [litellm](<https://devfeed.tech/topics/litellm.md>), [Security](<https://devfeed.tech/topics/security.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [discord](<https://devfeed.tech/tags/discord.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [litellm](<https://devfeed.tech/tags/litellm.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [security](<https://devfeed.tech/tags/security.md>), [slack](<https://devfeed.tech/tags/slack.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [tag-9fe8963de219](<https://devfeed.tech/tags/tag-9fe8963de219.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

The article reports a supply-chain compromise affecting LiteLLM versions 1.82.7 and 1.82.8 uploaded to PyPI. The malicious code searched victims' systems for files, credentials, secrets, and cloud infrastructure data, could contact a command server, and included Kubernetes persistence capabilities. Researchers also found similar malware in two Checkmarx extensions; the malicious versions were removed, and affected users were advised to rotate credentials and secrets.

### Source excerpt

Громкой новостью прошлой недели стал взлом библиотеки LiteLLM, используемой в качестве посредника для коммуникации с большим количеством языковых моделей (сообщение от разработчиков, новость на Хабре). Через другое вредоносное приложение на Python была взломана учетная запись мейнтейнера проекта, после чего сразу две версии LiteLLM (1.82.7 и 1.82.8) с вредоносными модулями были загружены в репозиторий PyPI. Отчет с анализом вредоносного кода опубликовали эксперты "Лаборатории Касперского". В версии 1.82.7 вредоносный код был встроен в файл proxy_server.py. В версии 1.82.8 дополнительно появился .pth-файл, благодаря которому вредоносный код выполнялся при каждом запуске интерпретатора, даже если зараженная библиотека не использовалась. После запуска зараженный скрипт начинал рекурсивный обход рабочих директорий в системе жертвы. В каждой директории скрипт просматривал содержимое файлов, которое выводил в буфер stdout и сохранял в файл для последующей отправки на командный сервер злоумышленников. Далее скрипт собирал информацию о системе и также сохранял в файл. После этого он переходил к поиску конфиденциальных данных, включая следующие типы: Читать далее

## Santa's Python Pitfalls: A Java Developer's Guide to Staying Safe This Christmas

DevFeed: [Santa's Python Pitfalls: A Java Developer's Guide to Staying Safe This Christmas](<https://devfeed.tech/articles/santa-s-python-pitfalls-a-java-developer-s-guide-to-staying-safe-this-christmas-23029.md>)

Original publisher: [Read original article](<https://www.javaadvent.com/2025/12/santas-python-pitfalls-a-java-developers-guide-to-staying-safe-this-christmas.html>)

Author: Steve Poole

Published: 2025-12-24T03:03:09Z

Content type: tutorial

Language: en

Sources: [Java Advent Calendar](<https://devfeed.tech/sources/java-advent-calendar.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [pip](<https://devfeed.tech/topics/pip.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Maven Central](<https://devfeed.tech/topics/maven-central.md>), [Java](<https://devfeed.tech/topics/java.md>), [Maven](<https://devfeed.tech/topics/maven.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [developer](<https://devfeed.tech/tags/developer.md>), [guide](<https://devfeed.tech/tags/guide.md>), [install](<https://devfeed.tech/tags/install.md>), [internet](<https://devfeed.tech/tags/internet.md>), [java](<https://devfeed.tech/tags/java.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [mirror](<https://devfeed.tech/tags/mirror.md>), [model](<https://devfeed.tech/tags/model.md>), [packaging](<https://devfeed.tech/tags/packaging.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [registry](<https://devfeed.tech/tags/registry.md>), [trust](<https://devfeed.tech/tags/trust.md>)

### AI overview

A Java-focused guide to Python package-management risks. It contrasts Maven Central with PyPI, highlighting flat package naming, trusting dependency resolution, typosquatting, dependency confusion, and unsafe installation commands. It recommends version pins, known sources, private registries, and lock files.

### Source excerpt

Just like that it happened. You, a disciplined Java developer, are now installing Python. Like everything in 2025, it just arrived. One day, you were running a tidy mvn install, the next, you're learning about virtual environments and fighting an unfriendly pip install that won't explain what it just pulled from the internet. Good news: [...] The post Santa's Python Pitfalls: A Java Developer's Guide to Staying Safe This Christmas appeared first on JVM Advent.

## Google introduces OSS Rebuild for reproducible open-source package artifacts

DevFeed: [Google introduces OSS Rebuild for reproducible open-source package artifacts](<https://devfeed.tech/articles/introducing-oss-rebuild-open-source-rebuilt-to-last-19798.md>)

Original publisher: [Read original article](<http://security.googleblog.com/2025/07/introducing-oss-rebuild-open-source.html>)

Author: Kimberly Samra (noreply@blogger.com)

Published: 2025-07-21T21:34:00Z

Content type: release

Language: en

Sources: [Google Online Security](<https://devfeed.tech/sources/google-online-security.md>)

Topics: [open-source-security](<https://devfeed.tech/topics/open-source-security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [supply chain attacks](<https://devfeed.tech/topics/supply-chain-attacks.md>), [npm](<https://devfeed.tech/topics/npm.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [none](<https://devfeed.tech/tags/none.md>), [npm](<https://devfeed.tech/tags/npm.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-security](<https://devfeed.tech/tags/open-source-security.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [rust](<https://devfeed.tech/tags/rust.md>), [slsa](<https://devfeed.tech/tags/slsa.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>)

### AI overview

Google announced OSS Rebuild, a project that reproduces upstream package artifacts to provide build definitions, SLSA provenance, and verification tools for PyPI, npm, and Crates.io packages.

### Source excerpt

Posted by Matthew Suozzo, Google Open Source Security Team (GOSST) Today we're excited to announce OSS Rebuild, a new project to strengthen trust in open source package ecosystems by reproducing upstream artifacts. As supply chain attacks continue to target widely-used dependencies, OSS Rebuild gives security teams powerful data to avoid compromise without burden on upstream maintainers. The project comprises: Automation to derive declarative build definitions for existing PyPI (Python), npm (JS/TS), and Crates.io (Rust) packages. SLSA Provenance for thousands of packages across our supported ecosystems, meeting SLSA Build Level 3 requirements with no publisher intervention. Build observability and verification tools that security teams can integrate into their existing vulnerability management workflows. Infrastructure definitions to allow organizations to easily run their own instances of OSS Rebuild to rebuild, generate, sign, and distribute provenance. Challenges Open source software has become the foundation of our digital world. From critical infrastructure to everyday applications, OSS components now account for 77% of modern applications. With an estimated value exceeding $12 trillion, open source software has never been more integral to the global economy. Yet this very ubiquity makes open source an attractive target: Recent high-profile supply chain attacks have demonstrated sophisticated methods for compromising widely-used packages. Each incident erodes trust in open ecosystems, creating hesitation among both contributors and consumers. The security community has responded with initiatives like OpenSSF Scorecard, pypi's Trusted Publishers, and npm's native SLSA support. However, there is no panacea: Each effort targets a certain aspect of the problem, often making tradeoffs like shifting work onto publishers and maintainers. Our Aim Our aim with OSS Rebuild is to empower the security community to deeply understand and control their supply chains by makin

## Guarding the Python Ecosystem Against the Growing Number of Severe Malware Attacks

DevFeed: [Guarding the Python Ecosystem Against the Growing Number of Severe Malware Attacks](<https://devfeed.tech/articles/guarding-the-python-ecosystem-against-the-growing-number-of-severe-malware-attacks-13075.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/guarding-the-python-ecosystem-against-the-growing-number-of-severe-malware-attacks>)

Published: 2025-05-21T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard libraries for python](<https://devfeed.tech/topics/chainguard-libraries-for-python.md>), [chainguard libraries](<https://devfeed.tech/topics/chainguard-libraries.md>), [Malware](<https://devfeed.tech/topics/malware.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [open-source-security](<https://devfeed.tech/topics/open-source-security.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>)

Tags: [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [chainguard-libraries-for-python](<https://devfeed.tech/tags/chainguard-libraries-for-python.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [malware](<https://devfeed.tech/tags/malware.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [packages](<https://devfeed.tech/tags/packages.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [security](<https://devfeed.tech/tags/security.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>), [software-supply-chain-security](<https://devfeed.tech/tags/software-supply-chain-security.md>)

### AI overview

The article explains that growing reliance on Python packages from PyPI increases exposure to malware risks. It presents Chainguard Libraries for Python as a more secure package index whose libraries and dependency trees are built from source in hardened infrastructure.

### Source excerpt

Chainguard developed Chainguard Libraries for Python to help guard the Python ecosystem against malware attacks. Discover why we did it and how it works.

## Application Security Roundup - September

DevFeed: [Application Security Roundup - September](<https://devfeed.tech/articles/application-security-roundup-september-36686.md>)

Original publisher: [Read original article](<https://shostack.org/blog/appsec-roundup-sept/>)

Author: Adam

Published: 2022-09-30T00:00:00Z

Content type: article

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Application Security](<https://devfeed.tech/topics/application-security.md>), [Security](<https://devfeed.tech/topics/security.md>), [DevSecOps](<https://devfeed.tech/topics/devsecops.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [pip](<https://devfeed.tech/topics/pip.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Python](<https://devfeed.tech/topics/python.md>), [PyTorch](<https://devfeed.tech/topics/pytorch.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>)

Tags: [application-security](<https://devfeed.tech/tags/application-security.md>), [appsec](<https://devfeed.tech/tags/appsec.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [devsecops](<https://devfeed.tech/tags/devsecops.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [pytorch](<https://devfeed.tech/tags/pytorch.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>)

### AI overview

A monthly application security roundup covering access-control failures, STRIDE, DevSecOps, attack trees, software supply-chain attacks, customer-service risks, PyPI package installation behavior, PyTorch loading behavior, and cryptography.

### Source excerpt

Interesting appsec posts: machine learning, performance, and C4

## PDFx update and new version release (v1.4.1)

DevFeed: [PDFx update and new version release (v1.4.1)](<https://devfeed.tech/articles/pdfx-update-and-new-version-release-v1-4-1-31857.md>)

Original publisher: [Read original article](<https://www.metachris.dev/2021/04/pdfx-update-and-new-version-release-v1.4.1/>)

Author: Chris Hager

Published: 2021-04-12T00:00:00Z

Content type: release

Language: en

Sources: [Chris Hager](<https://devfeed.tech/sources/chris-hager.md>)

Topics: [pdf](<https://devfeed.tech/topics/pdf.md>), [Python](<https://devfeed.tech/topics/python.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Pytest](<https://devfeed.tech/topics/pytest.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [code](<https://devfeed.tech/tags/code.md>), [contributors](<https://devfeed.tech/tags/contributors.md>), [coverage](<https://devfeed.tech/tags/coverage.md>), [github](<https://devfeed.tech/tags/github.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [pdfx](<https://devfeed.tech/tags/pdfx.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [release](<https://devfeed.tech/tags/release.md>), [tests](<https://devfeed.tech/tags/tests.md>), [update](<https://devfeed.tech/tags/update.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

PDFx, a Python tool and library for extracting text, links, references, and metadata from PDF files and URLs, was updated and released as version 1.4.1. The update includes broader Python compatibility, a switch to pdfminer.six, linting and static checks, tests, formatting, GitHub workflows, improved PDF URL detection, and inclusion of tests in the PyPI tarball.

### Source excerpt

PDFx is a tool to extract text, links, references and metadata from PDF files and URLs. Thanks to several contributors the project received a thorough update and was brought into 2021. The new release of today is PDFx v1.4.1 🎉 PDFx works like this:

## A new version of logzero is released (v1.6) 🎉

DevFeed: [A new version of logzero is released (v1.6) 🎉](<https://devfeed.tech/articles/a-new-version-of-logzero-is-released-v1-6-31853.md>)

Original publisher: [Read original article](<https://www.metachris.dev/2020/10/a-new-version-of-logzero-is-released-v1.6/>)

Author: Chris Hager

Published: 2020-10-30T00:00:00Z

Content type: release

Language: en

Sources: [Chris Hager](<https://devfeed.tech/sources/chris-hager.md>)

Topics: [Logging](<https://devfeed.tech/topics/logging.md>), [Library](<https://devfeed.tech/topics/library.md>), [Python](<https://devfeed.tech/topics/python.md>), [JSON](<https://devfeed.tech/topics/json.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Travis CI](<https://devfeed.tech/topics/travis-ci.md>)

Tags: [github-actions](<https://devfeed.tech/tags/github-actions.md>), [json](<https://devfeed.tech/tags/json.md>), [library](<https://devfeed.tech/tags/library.md>), [logging](<https://devfeed.tech/tags/logging.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>), [v1](<https://devfeed.tech/tags/v1.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

This release article announces logzero v1.6, a Python logging library update. It describes JSON formatting, customizable colors, root logger creation, separate file and stream log levels, Markdown-based project documentation, and migration from Travis CI to GitHub Actions for testing and PyPI deployment.

### Source excerpt

logzero is a simple and effective logging library for Python, with colored stream output, logfile, syslog, JSON formatting and much more: https://github.com/metachris/logzero After a really busy period with my second 🐣, I start to find a little bit of time here and there for fun projects. Recently I've enjoyed a few evenings maintaining logzero, culminating in a small release today: logzero v1.6 🎉 logzero v1.6 has several improvements: JSON formatting (with integrated python-json-logger) Easily change colors to custom color codes Allow creating of root loggers Allow file logging with lower loglevel than stream Project readme and history was converted to markdown and displays nicely on PyPI Deprecation of Travis CI Running tests with GitHub Actions, with Python versions up to 3.

## Getting Started with Pipenv

DevFeed: [Getting Started with Pipenv](<https://devfeed.tech/articles/getting-started-with-pipenv-26288.md>)

Original publisher: [Read original article](<https://masnun.com/pipenv-getting-started/>)

Author: masnun

Published: 2017-11-25T23:09:32Z

Content type: tutorial

Language: en

Sources: [Abu Ashraf Masnun](<https://devfeed.tech/sources/abu-ashraf-masnun.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [pip](<https://devfeed.tech/topics/pip.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Flask](<https://devfeed.tech/topics/flask.md>), [PyCharm](<https://devfeed.tech/topics/pycharm.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [dependencies](<https://devfeed.tech/tags/dependencies.md>), [environment-management](<https://devfeed.tech/tags/environment-management.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [install](<https://devfeed.tech/tags/install.md>), [packaging](<https://devfeed.tech/tags/packaging.md>), [pycharm](<https://devfeed.tech/tags/pycharm.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [python-packages](<https://devfeed.tech/tags/python-packages.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A tutorial introducing Pipenv for Python development. It explains how Pipenv combines package installation with isolated virtual environments, records dependencies in a Pipfile, creates a lock file for deterministic builds, and supports installing packages, running applications, activating environments, and managing dependencies.

### Source excerpt

If you're a Python developer, you probably know about pip and the different environment management solutions like virtualenv or venv. The pip tool is currently the standard way to install a Python package. Virtualenv has been a popular way of isolating Python environments for a long time. Pipenv combines the very best of these tools [...] The post Getting Started with Pipenv appeared first on Abu Ashraf Masnun.

## Python Unit Testing with Mocks: Patching and Namespaces

DevFeed: [Python Unit Testing with Mocks: Patching and Namespaces](<https://devfeed.tech/articles/i-want-to-mock-with-you-20243.md>)

Original publisher: [Read original article](<http://anjana.dev/blog/i-want-to-mock-with-you/>)

Author: Anjana Sofia Vakil (contact@anjana.dev)

Published: 2016-06-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Mozilla Automation](<https://devfeed.tech/sources/mozilla-automation.md>)

Topics: [Mocking](<https://devfeed.tech/topics/mocking.md>), [Python](<https://devfeed.tech/topics/python.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Library](<https://devfeed.tech/topics/library.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [pip](<https://devfeed.tech/topics/pip.md>)

Tags: [install](<https://devfeed.tech/tags/install.md>), [library](<https://devfeed.tech/tags/library.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [patches](<https://devfeed.tech/tags/patches.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

A tutorial on using Python mocks in unit tests to isolate specific behavior, inspect method calls, simulate return values, and patch objects in the correct module namespace.

### Source excerpt

This post brought to you from Mozilla's London All Hands meeting - cheers! When writing Python unit tests, sometimes you want to just test one specific aspect of a piece of code that does multiple things. For example, maybe you're wondering: Does object X get created here? Does method X get called here? Assuming method X returns Y, does the right thing happen after that? Finding the answers to such questions is super simple if you use mock: a library which "allows you to replace parts of your system under test with mock objects and make assertions about how they have been used." Since Python 3.3 it's available simply as unittest.mock, but if you're using an earlier Python you can get it from PyPI with pip install mock. So, what are mocks? How do you use them? Well, in short I could tell you that a Mock is a sort of magical object that's intended to be a doppelgänger for some object in your code that you want to test. Mocks have special attributes and methods you can use to find out how your test is using the object you're mocking. For example, you can use Mock.called and .call_count to find out if and how many times a method has been called. You can also manipulate Mocks to simulate functionality that you're not directly testing, but is necessary for the code you're testing. For example, you can set Mock.return_value to pretend that an function gave you some particular output, and make sure that the right thing happens in your program. But honestly, I don't think I could give a better or more succinct overview of mocks than the Quick Guide, so for a real intro you should go read that. While you're doing that, I'm going to watch this fantastic Michael Jackson video: Oh you're back? Hi! So, now that you have a basic idea of what makes Mocks super cool, let me share with you some of the tips/tips/trials/tribulations I discovered when starting to use them. Patches and namespaces tl;dr: Learn where to patch if you don't want to be sad! When you import a helper module int

## Make your open-source project accessible

DevFeed: [Make your open-source project accessible](<https://devfeed.tech/articles/make-your-open-source-project-accessible-40714.md>)

Original publisher: [Read original article](<https://radek.io/posts/marketing-for-open-source-projects-2/>)

Published: 2015-09-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Software](<https://devfeed.tech/topics/software.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [pacman](<https://devfeed.tech/topics/pacman.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [rubygems](<https://devfeed.tech/topics/rubygems.md>)

Tags: [accessible](<https://devfeed.tech/tags/accessible.md>), [developers](<https://devfeed.tech/tags/developers.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [install](<https://devfeed.tech/tags/install.md>), [linux](<https://devfeed.tech/tags/linux.md>), [npm](<https://devfeed.tech/tags/npm.md>), [onboarding](<https://devfeed.tech/tags/onboarding.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [packages](<https://devfeed.tech/tags/packages.md>), [pacman](<https://devfeed.tech/tags/pacman.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [rubygems](<https://devfeed.tech/tags/rubygems.md>)

### AI overview

This article explains how open-source projects can improve contributor and user onboarding by making software easier to install. It recommends distribution-level packages such as Linux packages and Homebrew packages, along with language-level packages such as PyPI, Rubygems, and npm.

### Source excerpt

I build software products and write on the Internet.

## mozdownload 1.18 released

DevFeed: [mozdownload 1.18 released](<https://devfeed.tech/articles/mozdownload-1-18-released-20305.md>)

Original publisher: [Read original article](<https://www.hskupin.info/2015/09/14/mozdownload-1-18-released/>)

Author: Admin

Published: 2015-09-14T15:32:41Z

Content type: release

Language: en

Sources: [Mozilla Automation](<https://devfeed.tech/sources/mozilla-automation.md>)

Topics: [PyPI](<https://devfeed.tech/topics/pypi.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [Script](<https://devfeed.tech/topics/script.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [automation](<https://devfeed.tech/tags/automation.md>), [code](<https://devfeed.tech/tags/code.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [mozdownload](<https://devfeed.tech/tags/mozdownload.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [qa](<https://devfeed.tech/tags/qa.md>), [release](<https://devfeed.tech/tags/release.md>), [script](<https://devfeed.tech/tags/script.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

mozdownload 1.18 was released to PyPI with a new API that makes it easier to use mozdownload from scripts. A factory scraper selects the appropriate scraper based on the provided options, and the API can provide remote URLs and local filenames.

### Source excerpt

Today we have released mozdownload 1.18 to PyPI. The reason why I think it's worth a blog post is that with this version we finally added support for a sane API. With it available using the mozdownload code in your own script is getting much easier. So there is no need to instantiate a specific scraper anymore but a factory scraper is doing all the work depending on the options it gets. Here some examples: from mozdownload import FactoryScraper scraper = FactoryScraper('release', version='40.0.3', locale='de') scraper.download() from mozdownload import FactoryScraper scraperContinue readingmozdownload 1.18 released

## Installing Python Packages

DevFeed: [Installing Python Packages](<https://devfeed.tech/articles/installing-python-packages-41102.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2011/11/01/Installing-Python-Packages/>)

Author: Map

Published: 2011-11-01T20:55:56Z

Content type: tutorial

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [pip](<https://devfeed.tech/topics/pip.md>), [PyPI](<https://devfeed.tech/topics/pypi.md>), [Django](<https://devfeed.tech/topics/django.md>)

Tags: [install](<https://devfeed.tech/tags/install.md>), [pypi](<https://devfeed.tech/tags/pypi.md>), [python](<https://devfeed.tech/tags/python.md>), [python-packages](<https://devfeed.tech/tags/python-packages.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

A tutorial on installing Python packages with pip, using a virtualenv environment, and recording installed package versions for sharing through a requirements list. It explains that packages are hosted on PyPI and demonstrates creating, activating, and deactivating an isolated project environment.

### Source excerpt

Now that you have you system and project environment all setup you probably want to start developing. But you likely don't want to start writing an entire project fully from scratch, as you dive in you'll quickly realize theres many tools helping you build projects and sites faster. For example making a request to a website there's Requests, for handling processing images there's Python Imaging Library, or for a full framework to help you in building a site there's Django. With all of these there's one simple and common way to install them. But first a little more on how it all works. All major Python packages are hosted on PyPi (Pronounced Pi-P or Cheeseshop). When you use a common python installer it will: Search for the package you specify If you specify a version will use it, otherwise will use the latest Will download the source for that package Install it into your Python environment Now for actually installing... Lets get started with installing the three packages below. At this point you should at least have a fresh Python environment, however you don't have an immediate way to install packages. The defacto Python package installer is pip. Earlier we setup virtualenv to help isolate our python packages we were working with. First lets go ahead and create a folder for our project then setup a new environment for the project we'll work on: $ mkdir myapp $ cd myapp $ virtualenv --no-site-packages venv If we list the contents of the directory you'll now see a folder venv. Within this folder you'll find all the parts of the environment that virtualenv just created: $ ls venv $ ls venv bin include lib Now you've got a sandboxed environment that exists but you haven't loaded it. You can now activate and deactivate this any time you like. Once you do this it customizes your path to use the packages you've installed for this environment. To load your environment when in the myapp directory: $ source venv/bin/activate To deactivate this simple: $ deactivate Now that we'