{
  "result": {
    "3.27.1": {
      "name": "treepoem",
      "version": "3.27.1",
      "metadata_version": "2.4",
      "summary": "Barcode rendering for Python supporting QRcode, Aztec, PDF417, I25, Code128, Code39 and many more types.",
      "home_page": "",
      "author": "",
      "author_email": "Christian Muirhead <xtian@babbageclunk.com>",
      "maintainer": "",
      "maintainer_email": "Adam Johnson <me@adamj.eu>",
      "license": "",
      "description": "========\nTreepoem\n========\n\n.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/treepoem/main.yml.svg?branch=main&style=for-the-badge\n   :target: https://github.com/adamchainz/treepoem/actions?workflow=CI\n\n.. image:: https://img.shields.io/pypi/v/treepoem.svg?style=for-the-badge\n   :target: https://pypi.org/project/treepoem/\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge\n   :target: https://github.com/psf/black\n\n.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge\n   :target: https://github.com/pre-commit/pre-commit\n   :alt: pre-commit\n\nA cleverly named, but very simple python barcode renderer wrapping the\nBWIPP_ library and ``ghostscript`` command line tool.\n\n----\n\n**Improve your Django and Git skills** with `one of my books <https://adamj.eu/books/>`__.\n\n----\n\nInstallation\n============\n\nInstall from **pip**:\n\n.. code-block:: sh\n\n    python -m pip install treepoem\n\nPython 3.9 to 3.13 supported.\n\nYou'll also need Ghostscript installed. On Ubuntu/Debian this can be installed\nwith:\n\n.. code-block:: sh\n\n    apt-get install ghostscript\n\nOn Mac OS X use:\n\n.. code-block:: sh\n\n    brew install ghostscript\n\nOtherwise refer to your distribution's package manager, though it's likely to\nbe called ``ghostscript`` too.\n\nThere's a known issue with rendering on Ghostscript 9.22+ where images are\nsmeared. See\n`GitHub Issue #124 <https://github.com/adamchainz/treepoem/issues/124>`_ and\nits associated links for more details. Ghostscript merged a fix in version\n9.26 and common barcodes seem to work from then on, though still with some\nsmearing.\n\nYou can check your Ghostscript version with:\n\n.. code-block:: sh\n\n    gs --version\n\nAPI\n===\n\n``generate_barcode(barcode_type: str, data: str | bytes, options: dict[str, str | bool] | None=None, *, scale: int = 2) -> Image``\n----------------------------------------------------------------------------------------------------------------------------------\n\nGenerates a barcode and returns it as a `PIL Image object <https://pillow.readthedocs.io/en/stable/reference/Image.html#the-image-class>`__\n\n``barcode_type`` is the name of the barcode type to generate from BWIPP\u2019s `list of supported types <https://github.com/bwipp/postscriptbarcode/wiki/Symbologies-Reference>`__.\nThe ``barcode_types`` dictionary, described below, contains the names of the supported types.\n\n``data`` is a ``str`` or ``bytes`` of data to embed in the barcode.\nThe amount of data that can be embedded varies by type.\n\n``options`` is a dictionary of strings-to-strings of BWIPP options, per `its documentation <https://github.com/bwipp/postscriptbarcode/wiki/Options-Reference>`__.\n\n``scale`` controls the output image size.\nUse ``1`` for the smallest image and larger values for larger images.\n\nFor example, this generates a QR code image, adds a border with |ImageOps.expand()|__, and saves it to a file using |Image.save()|__:\n\n.. |ImageOps.expand()| replace:: ``ImageOps.expand()``\n__ https://pillow.readthedocs.io/en/stable/reference/ImageOps.html#PIL.ImageOps.expand\n\n.. |Image.save()| replace:: ``Image.save()``\n__ https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save\n\n.. code-block:: python\n\n    import treepoem\n    from PIL import ImageOps\n\n    image = treepoem.generate_barcode(\n        barcode_type=\"qrcode\",\n        data=\"https://example.com\",\n    )\n    image = ImageOps.expand(image, border=10, fill=\"white\")\n    image.convert(\"1\").save(\"barcode.png\")\n\nFor greyscale barcodes, the conversion to monochrome (``image.convert(\"1\")``) will likely reduce its file size.\n\n``barcode_types: dict[str, BarcodeType]``\n-----------------------------------------\n\nThis is a ``dict`` of the ~100 names of the barcode types that the vendored\nversion of BWIPP_ supports: its keys are ``str``\\s of the barcode type encoder\nnames, and the values are instances of ``BarcodeType``.\n\n``BarcodeType``\n---------------\n\nA class representing meta information on the types. It has two attributes:\n\n* ``type_code`` - the value needed for the ``barcode_type`` argument of\n  ``generate_barcode()`` to use this type.\n\n* ``description`` - the human level description of the type\n  which has two ``str``.\n\nOnly these common types are used in the test suite:\n\n* ``qrcode`` - `QR Code`_\n\n* ``azteccode`` - `Aztec Code`_\n\n* ``pdf417`` - PDF417_\n\n* ``interleaved2of5`` - `Interleaved 2 of 5`_\n\n* ``code128`` - `Code 128`_\n\n* ``code39`` - `Code 39`_\n\nCommand-line interface\n======================\n\nTreepoem also includes a simple command-line interface to the\nfunctionality of ``generate_barcode``. For example, these commands\nwill generate two QR codes with identical contents, but different levels\nof error correction (see `QR Code Options`_):\n\n.. code-block:: sh\n\n   $ treepoem -o barcode1.png -t qrcode \"This is a test\" eclevel=H\n   $ treepoem -o barcode2.png -t qrcode \"^084his is a test\" eclevel=L parse\n\nComplete usage instructions are shown with ``treepoem --help``.\n\nWhat's so clever about the name?\n================================\n\nBarcode.\n\nBark ode.\n\nTree poem.\n\nUpdating BWIPP\n==============\n\nFor development of treepoem, when there's a new BWIPP release:\n\n1. Run ``./download_bwipp.py`` with the `version of BWIPP <https://github.com/bwipp/postscriptbarcode/tags>`__ to download.\n2. Run ``./make_data.py`` to update the barcode types that treepoem knows about.\n3. Add a note in ``CHANGELOG.rst`` about the upgrade, adapting from the previous one.\n4. Commit and make a pull request, `adapting from previous examples <https://github.com/adamchainz/treepoem/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+upgrade+bwipp>`__.\n\n.. _BWIPP: https://github.com/bwipp/postscriptbarcode\n.. _QR Code: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n.. _Aztec Code: https://github.com/bwipp/postscriptbarcode/wiki/Aztec-Code\n.. _PDF417: https://github.com/bwipp/postscriptbarcode/wiki/PDF417\n.. _Interleaved 2 of 5: https://github.com/bwipp/postscriptbarcode/wiki/Interleaved-2-of-5\n.. _Code 128: https://github.com/bwipp/postscriptbarcode/wiki/Code-128\n.. _Code 39: https://github.com/bwipp/postscriptbarcode/wiki/Code-39\n.. _QR Code Options: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n",
      "keywords": "barcode bwipp postscript ghostscript qr qrcode aztec azteccode pdf417 interleaved2of5 i25 code128 code39",
      "platform": [],
      "classifiers": [
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English",
        "Programming Language :: Python :: 3 :: Only",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Programming Language :: Python :: 3.13",
        "Typing :: Typed",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Changelog, https://github.com/adamchainz/treepoem/blob/main/CHANGELOG.rst",
        "Funding, https://adamj.eu/books/",
        "Repository, https://github.com/adamchainz/treepoem"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "pillow"
      ],
      "requires_external": [],
      "requires_python": ">=3.9",
      "description_content_type": "text/x-rst",
      "provides_extras": [],
      "dynamic": [
        "license-file"
      ],
      "license_expression": "",
      "license_file": [
        "LICENSE"
      ],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=c6b2c74cc9ebc1ef197155dfc30a94cc9f7b1bb5960ff5c64b046e9166ba4eaa",
          "hashes": {
            "sha256": "c6b2c74cc9ebc1ef197155dfc30a94cc9f7b1bb5960ff5c64b046e9166ba4eaa"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/c6b/2c74cc9ebc1ef/treepoem-3.27.1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                7,
                27,
                13,
                23,
                35
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "3.27.1+ppc64le1": {
      "name": "treepoem",
      "version": "3.27.1+ppc64le1",
      "metadata_version": "2.4",
      "summary": "Barcode rendering for Python supporting QRcode, Aztec, PDF417, I25, Code128, Code39 and many more types.",
      "home_page": "",
      "author": "",
      "author_email": "Christian Muirhead <xtian@babbageclunk.com>",
      "maintainer": "",
      "maintainer_email": "Adam Johnson <me@adamj.eu>",
      "license": "",
      "description": "========\nTreepoem\n========\n\n.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/treepoem/main.yml.svg?branch=main&style=for-the-badge\n   :target: https://github.com/adamchainz/treepoem/actions?workflow=CI\n\n.. image:: https://img.shields.io/pypi/v/treepoem.svg?style=for-the-badge\n   :target: https://pypi.org/project/treepoem/\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge\n   :target: https://github.com/psf/black\n\n.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge\n   :target: https://github.com/pre-commit/pre-commit\n   :alt: pre-commit\n\nA cleverly named, but very simple python barcode renderer wrapping the\nBWIPP_ library and ``ghostscript`` command line tool.\n\n----\n\n**Improve your Django and Git skills** with `one of my books <https://adamj.eu/books/>`__.\n\n----\n\nInstallation\n============\n\nInstall from **pip**:\n\n.. code-block:: sh\n\n    python -m pip install treepoem\n\nPython 3.9 to 3.13 supported.\n\nYou'll also need Ghostscript installed. On Ubuntu/Debian this can be installed\nwith:\n\n.. code-block:: sh\n\n    apt-get install ghostscript\n\nOn Mac OS X use:\n\n.. code-block:: sh\n\n    brew install ghostscript\n\nOtherwise refer to your distribution's package manager, though it's likely to\nbe called ``ghostscript`` too.\n\nThere's a known issue with rendering on Ghostscript 9.22+ where images are\nsmeared. See\n`GitHub Issue #124 <https://github.com/adamchainz/treepoem/issues/124>`_ and\nits associated links for more details. Ghostscript merged a fix in version\n9.26 and common barcodes seem to work from then on, though still with some\nsmearing.\n\nYou can check your Ghostscript version with:\n\n.. code-block:: sh\n\n    gs --version\n\nAPI\n===\n\n``generate_barcode(barcode_type: str, data: str | bytes, options: dict[str, str | bool] | None=None, *, scale: int = 2) -> Image``\n----------------------------------------------------------------------------------------------------------------------------------\n\nGenerates a barcode and returns it as a `PIL Image object <https://pillow.readthedocs.io/en/stable/reference/Image.html#the-image-class>`__\n\n``barcode_type`` is the name of the barcode type to generate from BWIPP\u2019s `list of supported types <https://github.com/bwipp/postscriptbarcode/wiki/Symbologies-Reference>`__.\nThe ``barcode_types`` dictionary, described below, contains the names of the supported types.\n\n``data`` is a ``str`` or ``bytes`` of data to embed in the barcode.\nThe amount of data that can be embedded varies by type.\n\n``options`` is a dictionary of strings-to-strings of BWIPP options, per `its documentation <https://github.com/bwipp/postscriptbarcode/wiki/Options-Reference>`__.\n\n``scale`` controls the output image size.\nUse ``1`` for the smallest image and larger values for larger images.\n\nFor example, this generates a QR code image, adds a border with |ImageOps.expand()|__, and saves it to a file using |Image.save()|__:\n\n.. |ImageOps.expand()| replace:: ``ImageOps.expand()``\n__ https://pillow.readthedocs.io/en/stable/reference/ImageOps.html#PIL.ImageOps.expand\n\n.. |Image.save()| replace:: ``Image.save()``\n__ https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save\n\n.. code-block:: python\n\n    import treepoem\n    from PIL import ImageOps\n\n    image = treepoem.generate_barcode(\n        barcode_type=\"qrcode\",\n        data=\"https://example.com\",\n    )\n    image = ImageOps.expand(image, border=10, fill=\"white\")\n    image.convert(\"1\").save(\"barcode.png\")\n\nFor greyscale barcodes, the conversion to monochrome (``image.convert(\"1\")``) will likely reduce its file size.\n\n``barcode_types: dict[str, BarcodeType]``\n-----------------------------------------\n\nThis is a ``dict`` of the ~100 names of the barcode types that the vendored\nversion of BWIPP_ supports: its keys are ``str``\\s of the barcode type encoder\nnames, and the values are instances of ``BarcodeType``.\n\n``BarcodeType``\n---------------\n\nA class representing meta information on the types. It has two attributes:\n\n* ``type_code`` - the value needed for the ``barcode_type`` argument of\n  ``generate_barcode()`` to use this type.\n\n* ``description`` - the human level description of the type\n  which has two ``str``.\n\nOnly these common types are used in the test suite:\n\n* ``qrcode`` - `QR Code`_\n\n* ``azteccode`` - `Aztec Code`_\n\n* ``pdf417`` - PDF417_\n\n* ``interleaved2of5`` - `Interleaved 2 of 5`_\n\n* ``code128`` - `Code 128`_\n\n* ``code39`` - `Code 39`_\n\nCommand-line interface\n======================\n\nTreepoem also includes a simple command-line interface to the\nfunctionality of ``generate_barcode``. For example, these commands\nwill generate two QR codes with identical contents, but different levels\nof error correction (see `QR Code Options`_):\n\n.. code-block:: sh\n\n   $ treepoem -o barcode1.png -t qrcode \"This is a test\" eclevel=H\n   $ treepoem -o barcode2.png -t qrcode \"^084his is a test\" eclevel=L parse\n\nComplete usage instructions are shown with ``treepoem --help``.\n\nWhat's so clever about the name?\n================================\n\nBarcode.\n\nBark ode.\n\nTree poem.\n\nUpdating BWIPP\n==============\n\nFor development of treepoem, when there's a new BWIPP release:\n\n1. Run ``./download_bwipp.py`` with the `version of BWIPP <https://github.com/bwipp/postscriptbarcode/tags>`__ to download.\n2. Run ``./make_data.py`` to update the barcode types that treepoem knows about.\n3. Add a note in ``CHANGELOG.rst`` about the upgrade, adapting from the previous one.\n4. Commit and make a pull request, `adapting from previous examples <https://github.com/adamchainz/treepoem/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+upgrade+bwipp>`__.\n\n.. _BWIPP: https://github.com/bwipp/postscriptbarcode\n.. _QR Code: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n.. _Aztec Code: https://github.com/bwipp/postscriptbarcode/wiki/Aztec-Code\n.. _PDF417: https://github.com/bwipp/postscriptbarcode/wiki/PDF417\n.. _Interleaved 2 of 5: https://github.com/bwipp/postscriptbarcode/wiki/Interleaved-2-of-5\n.. _Code 128: https://github.com/bwipp/postscriptbarcode/wiki/Code-128\n.. _Code 39: https://github.com/bwipp/postscriptbarcode/wiki/Code-39\n.. _QR Code Options: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n",
      "keywords": "barcode bwipp postscript ghostscript qr qrcode aztec azteccode pdf417 interleaved2of5 i25 code128 code39",
      "platform": [],
      "classifiers": [
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English",
        "Programming Language :: Python :: 3 :: Only",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Programming Language :: Python :: 3.13",
        "Typing :: Typed",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Changelog, https://github.com/adamchainz/treepoem/blob/main/CHANGELOG.rst",
        "Funding, https://adamj.eu/books/",
        "Repository, https://github.com/adamchainz/treepoem"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "pillow"
      ],
      "requires_external": [],
      "requires_python": ">=3.9",
      "description_content_type": "text/x-rst",
      "provides_extras": "",
      "dynamic": "license-file",
      "license_expression": "",
      "license_file": "LICENSE",
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=abf692a04bccae84c8f993e10f95237d168f104586e95ca4c577a3b2162161e2",
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/abf/692a04bccae84/treepoem-3.27.1+ppc64le1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                3,
                16,
                9,
                48,
                41
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "3.24.0+ppc64le1": {
      "name": "treepoem",
      "version": "3.24.0+ppc64le1",
      "metadata_version": "2.4",
      "summary": "Barcode rendering for Python supporting QRcode, Aztec, PDF417, I25, Code128, Code39 and many more types.",
      "home_page": "",
      "author": "",
      "author_email": "Christian Muirhead <xtian@babbageclunk.com>",
      "maintainer": "",
      "maintainer_email": "Adam Johnson <me@adamj.eu>",
      "license": "MIT",
      "description": "========\nTreepoem\n========\n\n.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/treepoem/main.yml?branch=main&style=for-the-badge\n   :target: https://github.com/adamchainz/treepoem/actions?workflow=CI\n\n.. image:: https://img.shields.io/pypi/v/treepoem.svg?style=for-the-badge\n   :target: https://pypi.org/project/treepoem/\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge\n   :target: https://github.com/psf/black\n\n.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge\n   :target: https://github.com/pre-commit/pre-commit\n   :alt: pre-commit\n\nA cleverly named, but very simple python barcode renderer wrapping the\nBWIPP_ library and ``ghostscript`` command line tool.\n\n----\n\n**Improve your Django and Git skills** with `one of my books <https://adamj.eu/books/>`__.\n\n----\n\nInstallation\n============\n\nInstall from **pip**:\n\n.. code-block:: sh\n\n    python -m pip install treepoem\n\nPython 3.8 to 3.12 supported.\n\nYou'll also need Ghostscript installed. On Ubuntu/Debian this can be installed\nwith:\n\n.. code-block:: sh\n\n    apt-get install ghostscript\n\nOn Mac OS X use:\n\n.. code-block:: sh\n\n    brew install ghostscript\n\nOtherwise refer to your distribution's package manager, though it's likely to\nbe called ``ghostscript`` too.\n\nThere's a known issue with rendering on Ghostscript 9.22+ where images are\nsmeared. See\n`GitHub Issue #124 <https://github.com/adamchainz/treepoem/issues/124>`_ and\nits associated links for more details. Ghostscript merged a fix in version\n9.26 and common barcodes seem to work from then on, though still with some\nsmearing.\n\nYou can check your Ghostscript version with:\n\n.. code-block:: sh\n\n    gs --version\n\nAPI\n===\n\n``generate_barcode(barcode_type: str, data: str | bytes, options: dict[str, str | bool] | None=None, *, scale: int = 2) -> Image``\n----------------------------------------------------------------------------------------------------------------------------------\n\nGenerates a barcode and returns it as a `PIL Image object <https://pillow.readthedocs.io/en/stable/reference/Image.html#the-image-class>`__\n\n``barcode_type`` is the name of the barcode type to generate (see below).\n\n``data`` is a ``str`` or ``bytes`` of data to embed in the barcode - the amount\nthat can be embedded varies by type.\n\n``options`` is a dictionary of strings-to-strings of extra options to be passed\nto BWIPP_, as per its docs.\n\n``scale`` controls the output image size.\nUse ``1`` for the smallest image and larger values for larger images.\n\nFor example, this generates a QR code image, and saves it to a file using |Image.save()|__:\n\n.. |Image.save()| replace:: ``Image.save()``\n__ https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save\n\n.. code-block:: python\n\n   import treepoem\n\n   image = treepoem.generate_barcode(\n       barcode_type=\"qrcode\",  # One of the BWIPP supported codes.\n       data=\"barcode payload\",\n   )\n   image.convert(\"1\").save(\"barcode.png\")\n\nIf your barcode image is monochrome, with no additional text or colouring, converting the ``Image`` object to monochrome (``image.convert(\"1\")``) will likely reduce its file size.\n\n``barcode_types: dict[str, BarcodeType]``\n-----------------------------------------\n\nThis is a ``dict`` of the ~100 names of the barcode types that the vendored\nversion of BWIPP_ supports: its keys are ``str``\\s of the barcode type encoder\nnames, and the values are instances of ``BarcodeType``.\n\n``BarcodeType``\n---------------\n\nA class representing meta information on the types. It has two attributes:\n\n* ``type_code`` - the value needed for the ``barcode_type`` argument of\n  ``generate_barcode()`` to use this type.\n\n* ``description`` - the human level description of the type\n  which has two ``str``.\n\nOnly these common types are used in the test suite:\n\n* ``qrcode`` - `QR Code`_\n\n* ``azteccode`` - `Aztec Code`_\n\n* ``pdf417`` - PDF417_\n\n* ``interleaved2of5`` - `Interleaved 2 of 5`_\n\n* ``code128`` - `Code 128`_\n\n* ``code39`` - `Code 39`_\n\nCommand-line interface\n======================\n\nTreepoem also includes a simple command-line interface to the\nfunctionality of ``generate_barcode``. For example, these commands\nwill generate two QR codes with identical contents, but different levels\nof error correction (see `QR Code Options`_):\n\n.. code-block:: sh\n\n   $ treepoem -o barcode1.png -t qrcode \"This is a test\" eclevel=H\n   $ treepoem -o barcode2.png -t qrcode \"^084his is a test\" eclevel=L parse\n\nComplete usage instructions are shown with ``treepoem --help``.\n\nWhat's so clever about the name?\n================================\n\nBarcode.\n\nBark ode.\n\nTree poem.\n\nUpdating BWIPP\n==============\n\nFor development of treepoem, when there's a new BWIPP release:\n\n1. Run ``./download_bwipp.py`` with the version of BWIPP to download.\n2. Run ``./make_data.py`` to update the barcode types that treepoem knows about.\n3. Add a note in ``CHANGELOG.rst`` about the upgrade, adapting from the previous one.\n4. Commit and make a pull request, `adapting from previous examples <https://github.com/adamchainz/treepoem/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+upgrade+bwipp>`__.\n\n.. _BWIPP: https://github.com/bwipp/postscriptbarcode\n.. _QR Code: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n.. _Aztec Code: https://github.com/bwipp/postscriptbarcode/wiki/Aztec-Code\n.. _PDF417: https://github.com/bwipp/postscriptbarcode/wiki/PDF417\n.. _Interleaved 2 of 5: https://github.com/bwipp/postscriptbarcode/wiki/Interleaved-2-of-5\n.. _Code 128: https://github.com/bwipp/postscriptbarcode/wiki/Code-128\n.. _Code 39: https://github.com/bwipp/postscriptbarcode/wiki/Code-39\n.. _QR Code Options: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n",
      "keywords": "barcode bwipp postscript ghostscript qr qrcode aztec azteccode pdf417 interleaved2of5 i25 code128 code39",
      "platform": [],
      "classifiers": [
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English",
        "Programming Language :: Python :: 3 :: Only",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Typing :: Typed",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Changelog, https://github.com/adamchainz/treepoem/blob/main/CHANGELOG.rst",
        "Funding, https://adamj.eu/books/",
        "Repository, https://github.com/adamchainz/treepoem"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "Pillow"
      ],
      "requires_external": [],
      "requires_python": ">=3.8",
      "description_content_type": "text/x-rst",
      "provides_extras": [],
      "dynamic": [
        "license-file"
      ],
      "license_expression": "",
      "license_file": [
        "LICENSE"
      ],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=be00b16b9da2b0280d97ddd9265660748382c05c243934004e0faa2b643a6f68",
          "hashes": {
            "sha256": "be00b16b9da2b0280d97ddd9265660748382c05c243934004e0faa2b643a6f68"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/be0/0b16b9da2b028/treepoem-3.24.0+ppc64le1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                5,
                11,
                11,
                55,
                28
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "3.24.0": {
      "name": "treepoem",
      "version": "3.24.0",
      "metadata_version": "2.4",
      "summary": "Barcode rendering for Python supporting QRcode, Aztec, PDF417, I25, Code128, Code39 and many more types.",
      "home_page": "",
      "author": "",
      "author_email": "Christian Muirhead <xtian@babbageclunk.com>",
      "maintainer": "",
      "maintainer_email": "Adam Johnson <me@adamj.eu>",
      "license": "MIT",
      "description": "========\nTreepoem\n========\n\n.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/treepoem/main.yml?branch=main&style=for-the-badge\n   :target: https://github.com/adamchainz/treepoem/actions?workflow=CI\n\n.. image:: https://img.shields.io/pypi/v/treepoem.svg?style=for-the-badge\n   :target: https://pypi.org/project/treepoem/\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge\n   :target: https://github.com/psf/black\n\n.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge\n   :target: https://github.com/pre-commit/pre-commit\n   :alt: pre-commit\n\nA cleverly named, but very simple python barcode renderer wrapping the\nBWIPP_ library and ``ghostscript`` command line tool.\n\n----\n\n**Improve your Django and Git skills** with `one of my books <https://adamj.eu/books/>`__.\n\n----\n\nInstallation\n============\n\nInstall from **pip**:\n\n.. code-block:: sh\n\n    python -m pip install treepoem\n\nPython 3.8 to 3.12 supported.\n\nYou'll also need Ghostscript installed. On Ubuntu/Debian this can be installed\nwith:\n\n.. code-block:: sh\n\n    apt-get install ghostscript\n\nOn Mac OS X use:\n\n.. code-block:: sh\n\n    brew install ghostscript\n\nOtherwise refer to your distribution's package manager, though it's likely to\nbe called ``ghostscript`` too.\n\nThere's a known issue with rendering on Ghostscript 9.22+ where images are\nsmeared. See\n`GitHub Issue #124 <https://github.com/adamchainz/treepoem/issues/124>`_ and\nits associated links for more details. Ghostscript merged a fix in version\n9.26 and common barcodes seem to work from then on, though still with some\nsmearing.\n\nYou can check your Ghostscript version with:\n\n.. code-block:: sh\n\n    gs --version\n\nAPI\n===\n\n``generate_barcode(barcode_type: str, data: str | bytes, options: dict[str, str | bool] | None=None, *, scale: int = 2) -> Image``\n----------------------------------------------------------------------------------------------------------------------------------\n\nGenerates a barcode and returns it as a `PIL Image object <https://pillow.readthedocs.io/en/stable/reference/Image.html#the-image-class>`__\n\n``barcode_type`` is the name of the barcode type to generate (see below).\n\n``data`` is a ``str`` or ``bytes`` of data to embed in the barcode - the amount\nthat can be embedded varies by type.\n\n``options`` is a dictionary of strings-to-strings of extra options to be passed\nto BWIPP_, as per its docs.\n\n``scale`` controls the output image size.\nUse ``1`` for the smallest image and larger values for larger images.\n\nFor example, this generates a QR code image, and saves it to a file using |Image.save()|__:\n\n.. |Image.save()| replace:: ``Image.save()``\n__ https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save\n\n.. code-block:: python\n\n   import treepoem\n\n   image = treepoem.generate_barcode(\n       barcode_type=\"qrcode\",  # One of the BWIPP supported codes.\n       data=\"barcode payload\",\n   )\n   image.convert(\"1\").save(\"barcode.png\")\n\nIf your barcode image is monochrome, with no additional text or colouring, converting the ``Image`` object to monochrome (``image.convert(\"1\")``) will likely reduce its file size.\n\n``barcode_types: dict[str, BarcodeType]``\n-----------------------------------------\n\nThis is a ``dict`` of the ~100 names of the barcode types that the vendored\nversion of BWIPP_ supports: its keys are ``str``\\s of the barcode type encoder\nnames, and the values are instances of ``BarcodeType``.\n\n``BarcodeType``\n---------------\n\nA class representing meta information on the types. It has two attributes:\n\n* ``type_code`` - the value needed for the ``barcode_type`` argument of\n  ``generate_barcode()`` to use this type.\n\n* ``description`` - the human level description of the type\n  which has two ``str``.\n\nOnly these common types are used in the test suite:\n\n* ``qrcode`` - `QR Code`_\n\n* ``azteccode`` - `Aztec Code`_\n\n* ``pdf417`` - PDF417_\n\n* ``interleaved2of5`` - `Interleaved 2 of 5`_\n\n* ``code128`` - `Code 128`_\n\n* ``code39`` - `Code 39`_\n\nCommand-line interface\n======================\n\nTreepoem also includes a simple command-line interface to the\nfunctionality of ``generate_barcode``. For example, these commands\nwill generate two QR codes with identical contents, but different levels\nof error correction (see `QR Code Options`_):\n\n.. code-block:: sh\n\n   $ treepoem -o barcode1.png -t qrcode \"This is a test\" eclevel=H\n   $ treepoem -o barcode2.png -t qrcode \"^084his is a test\" eclevel=L parse\n\nComplete usage instructions are shown with ``treepoem --help``.\n\nWhat's so clever about the name?\n================================\n\nBarcode.\n\nBark ode.\n\nTree poem.\n\nUpdating BWIPP\n==============\n\nFor development of treepoem, when there's a new BWIPP release:\n\n1. Run ``./download_bwipp.py`` with the version of BWIPP to download.\n2. Run ``./make_data.py`` to update the barcode types that treepoem knows about.\n3. Add a note in ``CHANGELOG.rst`` about the upgrade, adapting from the previous one.\n4. Commit and make a pull request, `adapting from previous examples <https://github.com/adamchainz/treepoem/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+upgrade+bwipp>`__.\n\n.. _BWIPP: https://github.com/bwipp/postscriptbarcode\n.. _QR Code: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n.. _Aztec Code: https://github.com/bwipp/postscriptbarcode/wiki/Aztec-Code\n.. _PDF417: https://github.com/bwipp/postscriptbarcode/wiki/PDF417\n.. _Interleaved 2 of 5: https://github.com/bwipp/postscriptbarcode/wiki/Interleaved-2-of-5\n.. _Code 128: https://github.com/bwipp/postscriptbarcode/wiki/Code-128\n.. _Code 39: https://github.com/bwipp/postscriptbarcode/wiki/Code-39\n.. _QR Code Options: https://github.com/bwipp/postscriptbarcode/wiki/QR-Code\n",
      "keywords": "barcode bwipp postscript ghostscript qr qrcode aztec azteccode pdf417 interleaved2of5 i25 code128 code39",
      "platform": [],
      "classifiers": [
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English",
        "Programming Language :: Python :: 3 :: Only",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Typing :: Typed",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Changelog, https://github.com/adamchainz/treepoem/blob/main/CHANGELOG.rst",
        "Funding, https://adamj.eu/books/",
        "Repository, https://github.com/adamchainz/treepoem"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "Pillow"
      ],
      "requires_external": [],
      "requires_python": ">=3.8",
      "description_content_type": "text/x-rst",
      "provides_extras": [],
      "dynamic": [
        "license-file"
      ],
      "license_expression": "",
      "license_file": [
        "LICENSE"
      ],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=d1b39542d32f5235dfa0ad8297fde6863d7a80a102dc2b3c74c8f41426d08c5e",
          "hashes": {
            "sha256": "d1b39542d32f5235dfa0ad8297fde6863d7a80a102dc2b3c74c8f41426d08c5e"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/d1b/39542d32f5235/treepoem-3.24.0-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                7,
                27,
                13,
                23,
                35
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    }
  },
  "type": "projectconfig"
}
