<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python packages on Nan Xiao | 肖楠</title>
    <link>https://nanx.me/tags/python-packages/</link>
    <description>Recent content in Python packages on Nan Xiao | 肖楠</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 09 Jul 2026 01:24:00 +0000</lastBuildDate>
    <atom:link href="https://nanx.me/tags/python-packages/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Two small Python automation tools: asciilint and playwright-byob</title>
      <link>https://nanx.me/blog/post/asciilint-playwright-byob/</link>
      <pubDate>Thu, 09 Jul 2026 01:24:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/asciilint-playwright-byob/</guid>
      <description>Bright sunroom with plants and dining table. Photo by Clay Banks. In the past week, besides fully indulging myself in the food scene and outdoor activities of the SF Bay Area, I started building a few new personal automation and developer tooling projects. This post shares two of them: asciilint checks that your text files contain only the characters you want, and playwright-byob lets Playwright drive the Chrome you already have installed.</description>
    </item>
    <item>
      <title>ggsci 5.0.0 and py-ggsci 2.0.0: Generative Color Scales from Gephi</title>
      <link>https://nanx.me/blog/post/ggsci-5-0-0/</link>
      <pubDate>Sun, 19 Apr 2026 01:33:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/ggsci-5-0-0/</guid>
      <description>San Francisco 1.4. Photo by Pine Watt. After the last major version update in September 2025, I am happy to announce the release of ggsci 5.0.0 and ggsci for Python 2.0.0.&#xA;You can install the R package ggsci from CRAN:&#xA;install.packages(&amp;quot;ggsci&amp;quot;) And install the Python package from PyPI:&#xA;pip install ggsci What’s new Every color palette in ggsci until now has been a fixed list: someone chose those exact colors, arranged them in a particular order, and you used them as-is.</description>
    </item>
    <item>
      <title>Introducing pytest-r-snapshot: Verifying Python code against R outputs at scale</title>
      <link>https://nanx.me/blog/post/pytest-r-snapshot/</link>
      <pubDate>Fri, 02 Jan 2026 03:32:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/pytest-r-snapshot/</guid>
      <description>An earthy, minimalist display blending textured art with dried and fresh botanicals.&#xA;Photo by Toa Heftiba. First package in the new year: I’m glad to announce pytest-r-snapshot, a pytest plugin for snapshot testing Python code against reference outputs generated by R.&#xA;You can install it from PyPI:&#xA;pip install pytest-r-snapshot If your project uses uv, add it as a development dependency:&#xA;uv add --dev pytest-r-snapshot Why snapshot testing against R?</description>
    </item>
    <item>
      <title>ggsci 4.0.0: 400&#43; new color palettes</title>
      <link>https://nanx.me/blog/post/ggsci-4-0-0/</link>
      <pubDate>Thu, 25 Sep 2025 23:36:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/ggsci-4-0-0/</guid>
      <description>Cozy autumn vibes: a warm drink, a good book, and colorful leaves. Photo by Alisa Anton. After the last update in June 2024, I am excited to announce the release of ggsci 4.0.0 and ggsci for Python 1.0.0. You can install the R package ggsci from CRAN:&#xA;install.packages(&amp;quot;ggsci&amp;quot;) And install the Python package from PyPI:&#xA;pip install ggsci This update brings over 400 new discrete color palettes for ggplot2 and plotnine visualizations.</description>
    </item>
    <item>
      <title>Introducing py-ggsci: ggsci color palettes for plotnine in Python</title>
      <link>https://nanx.me/blog/post/ggsci-python/</link>
      <pubDate>Mon, 15 Sep 2025 02:05:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/ggsci-python/</guid>
      <description>Cliff Walk at Pourville (1882) by Claude Monet: two women on a grassy cliff above the sea under a bright sky. Public domain. Source: Art Institute of Chicago. I’m thrilled to announce the release of py-ggsci, a Python package that brings the popular ggsci color palettes from R’s ggplot2 ecosystem to Python’s plotnine library.&#xA;You can install py-ggsci from PyPI:&#xA;pip install ggsci Here is a quick example using the Observable 10 palette introduced in ggsci 3.</description>
    </item>
    <item>
      <title>Introducing rtflite for Python</title>
      <link>https://nanx.me/blog/post/rtflite-python/</link>
      <pubDate>Thu, 13 Feb 2025 00:06:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/rtflite-python/</guid>
      <description>Touring in the clouds. Photo by Clement Delhaye. This is a guest post generously contributed by Yilong Zhang, a biostatistician at Meta.&#xA;It is my pleasure to introduce rtflite, a new Python package for generating RTF documents. A preview version is now available on PyPI. You can install it with:&#xA;pip install rtflite The ultimate goal of rtflite is to provide a lightweight solution for generating production-ready tables, listings, and figures (TLFs) in RTF format.</description>
    </item>
    <item>
      <title>Introducing pkglite for Python</title>
      <link>https://nanx.me/blog/post/pkglite-python/</link>
      <pubDate>Thu, 16 Jan 2025 02:11:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/pkglite-python/</guid>
      <description>Les Menuires, France. Photo by Yann Allegre. I am pleased to introduce pkglite for Python, now available on PyPI. pkglite for Python provides a minimalist framework for packing source packages written in any programming language into a text file and restoring them to their original directory structure. You can install it with:&#xA;pip install pkglite For installation as a global command-line tool, use pipx:&#xA;pipx install pkglite Context Four years ago, we released the R package pkglite, designed for bidirectional conversion of R packages.</description>
    </item>
    <item>
      <title>tinyvdiff: Minimalist visual regression testing plugin for pytest</title>
      <link>https://nanx.me/blog/post/tinyvdiff/</link>
      <pubDate>Wed, 04 Dec 2024 21:53:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/tinyvdiff/</guid>
      <description>Hummingbirds. Photo by Zdeněk Macháček. I’m delighted to announce my second Python package, tinyvdiff, now available on PyPI. It offers a lightweight pytest plugin for detecting appearance changes in visual content, such as figures or documents. You can install it with:&#xA;pip install tinyvdiff Setup and usage Here is an example test for matplotlib graphics, from the tinyvdiff demo project:&#xA;import pytest from tinyvdiff_demo.matplotlib import generate_plot @pytest.fixture def temp_pdf(tmp_path): &amp;quot;&amp;quot;&amp;quot;Fixture to create a temporary PDF file path&amp;quot;&amp;quot;&amp;quot; return tmp_path / &amp;quot;test.</description>
    </item>
    <item>
      <title>tinytopics: GPU-accelerated topic modeling via constrained neural Poisson NMF</title>
      <link>https://nanx.me/blog/post/tinytopics/</link>
      <pubDate>Sat, 26 Oct 2024 20:42:00 +0000</pubDate>
      <guid>https://nanx.me/blog/post/tinytopics/</guid>
      <description>Downhill mountain biking. Photo by Tim Foster. I’m excited to share that my first Python package, tinytopics, is now available on PyPI. You can install it using&#xA;pip install tinytopics tinytopics is a minimalist solution designed to scale up topic modeling tasks on CPUs and GPUs using PyTorch.&#xA;Motivation Fitting topic models at scale using classical algorithms on CPUs can be slow. Carbonetto et al. (2022) demonstrated the equivalence between Poisson non-negative matrix factorization (NMF) and multinomial topic model likelihoods.</description>
    </item>
  </channel>
</rss>
