===================================================
``z3c.rml`` -- An alternative implementation of RML
===================================================
.. image:: https://img.shields.io/pypi/v/z3c.rml.svg
:target: https://pypi.org/project/z3c.rml/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/pyversions/z3c.rml.svg
:target: https://pypi.org/project/z3c.rml/
:alt: Supported Python versions
.. image:: https://github.com/zopefoundation/z3c.rml/actions/workflows/tests.yml/badge.svg
:target: https://github.com/zopefoundation/z3c.rml/actions/workflows/tests.yml
:alt: Build Status
.. image:: https://coveralls.io/repos/github/zopefoundation/z3c.rml/badge.svg?branch=master
:target: https://coveralls.io/github/zopefoundation/z3c.rml?branch=master
This is an alternative implementation of ReportLab's RML PDF generation XML
format. Like the original implementation, it is based on ReportLab's
``reportlab`` library.
You can read all about ``z3c.rml`` and see many examples on how to use it,
see the `RML Reference`_
.. _RML Reference: https://github.com/zopefoundation/z3c.rml/blob/master/src/z3c/rml/rml-reference.pdf?raw=true
Install on pip::
pip install z3c.rml
z3c.rml is then available on the commandline as z3c.rml.::
$ z3c.rml --help
usage: rml2pdf [-h]
xmlInputName [outputFileName] [outDir]
[dtdDir]
Converts file in RML format into PDF file.
positional arguments:
xmlInputName RML file to be processed
outputFileName output PDF file name
outDir output directory
dtdDir directory with XML DTD (not yet supported)
optional arguments:
-h, --help show this help message and exit
Copyright (c) 2007 Zope Foundation and Contributors.
Save this file as file.rml::
<!DOCTYPE document SYSTEM "rml.dtd">
<document filename="example_01.pdf">
<template showBoundary="1"> <!--Debugging is now turned on, frame outlines -->
<!--will appear on the page -->
<pageTemplate id="main">
<!-- two frames are defined here: -->
<frame id="first" x1="100" y1="400" width="150" height="200"/>
<frame id="second" x1="300" y1="400" width="150" height="200"/>
</pageTemplate>
</template>
<stylesheet>
<!-- still empty...-->
</stylesheet>
<story>
<para>
Welcome to RML.
</para>
</story>
</document>
Then run::
$ z3c.rml file.rml
The output will be example_01.pdf as defined in the document
Codewise you can do::
from z3c.rml import rml2pdf
rml2pdf.go('file.rml','file.pdf')
=======
CHANGES
=======
4.4.0 (2023-08-23)
------------------
- Add support for the splitByRow and splitInRow arguments to BlockTable.
- Add ``rlPyCairo`` as install requirement as ``reportlab >= 4.0`` needs that library.
(`#117 <https://github.com/zopefoundation/z3c.rml/issues/117>_`)
4.3.0 (2023-04-25)
------------------
- Add support for Python 3.11.
- Drop support for Python 2.7, 3.5, 3.6.
- Added support for text anchor points on images.
- Make sure we only close input files if we opened them.
- Delegate image ratio to drawImage. (PR #105)
- Accepts "None" for label box colors.
- Use svglib for the svg to rml conversion instead of maintaining our own.
- Allow unicode characters as bullets.
4.2.1 (2022-09-30)
------------------
- Add support for Python 3.10.
- Add back support for Python 3.6.
- Fix name clash in repository on file systems which are not case sensitive but
just case preserving.
- Move output directory of tests to a temporary directory.
- Support `pikepdf` 6.0+.
4.2.0 (2021-10-14)
------------------
- Upgrade to using `pikepdf` 3.0+.
4.1.2 (2020-12-14)
------------------
- Fix include on first page. (PR #84)
4.1.1 (2020-12-08)
------------------
- Allow ``<registerTTFont>`` to search default font directories instead of
requiring absolute or relative path. (Fixes issue #46.)
- Make sure a includePages adds blank pages at the end of a document when
there is no flowable after it.
4.1.0 (2020-12-07)
------------------
- Implement new tag ``<blockNosplit>`` for ``<blockTableStyle>``.
- Fix dynamic tags in paragraph. Fixes page numbering.
- Make new bullet styles of Reportlab 3.5 avaialable.
- Support for custom ``Canvas`` classes.
4.0.0 (2020-12-07)
------------------
- Dropped support for Python 2.x.
- Dropped `PyPDF2` for `pikepdf`.
3.10.0 (2020-03-27)
-------------------
- Added ``inFill`` property to ``<linePlot>`` which will fill the area below
the line makign it effectively an area plot.
- Added ability to specify the ``labelTextFormat`` property of ``<xValueAxis>``
and ``<yValueAxis>`` to be a reference to a function via a Python path.
- Added an example from Stack Overflow that exercises the new features. See
``tag0linePlot.rml``.
- Remove Python 3.6 support and add 3.8.
3.9.1 (2019-10-04)
------------------
- Adding textTransform implementation.
3.9.0 (2019-07-19)
------------------
- Create a proper, parsable DTD. Add a test that verifies its validity.
- Updated `rml.dtd`.
- ``strandLabels`` does not support text content. That was accidentally
asserted due to bad schema inheritance.
3.8.0 (2019-06-24)
------------------
- Unified ``paraStyle`` and ``spanStyle`` even more.
- Extended ``<spanStyle>`` to support underline and strike as well.
- Simplified implemnetation of strike and underline style implementation. It
is also the more correct implementation.
3.7.0 (2019-06-14)
------------------
- Drop support for running tests using ``python setup.py test``.
- Drop Python 3.5 support.
- Extended ``<paraStyle>``:
* ``underline``: A boolean field indicating whether the entire paragraph is
underlined. The following related attributes have also been added to the
style: ``underlineColor``, ``underlineOffset``, ``underlineWidth``,
``underlineGap``, and ``underlineKind``
* ``strike``: A boolean field indicating whether the entire paragraph is
stricken. The following related attributes have also been added to the
style: ``strikeColor``, ``strikeOffset``, ``strikeWidth``,
``strikeGap``, and ``strikeKind``
* ``justifyLastLine``: Added attribute that is available in the API.
* ``justifyBreaks``: Added attribute that is available in the API.
* ``spaceShrinkage``: Added attribute that is available in the API.
* ``linkUnderline``: Added attribute that is available in the API.
3.6.3 (2019-04-11)
------------------
- Added missing ``lineBelowDash``, ``lineAboveDash``, ``lineLeftDash``,
``lineRightDash`` attributes
3.6.2 (2019-03-27)
------------------
- Fix num2words (missing import, two digit dashes)
- Added test to check what happens with text not in tags
(e.g. not in a ``<para>`` tag)
3.6.1 (2018-12-01)
------------------
- Add Python 3.7 Trove classifier.
3.6.0 (2018-12-01)
------------------
- Upgraded to support Python 3.7
- Allow ``<place>`` to contain ``<fixedSize>``, which allows content to be
fitted into the place boundaries.
3.5.1 (2018-10-09)
------------------
- Upgraded to support Reportlab 3.5.9
3.5.0 (2018-04-10)
------------------
- Honor the order of attribute choices in the docs.
- Abstracted span styles out of base paragraph style, so that attributes can
be reused.
- Remove all default values for ``SpanStyle`` styles, so that all values can
be inherited from the paragraph.
- Support for package-relative ``src`` values in ``<para>`` ``<img>`` tags.
3.4.0 (2018-04-09)
------------------
- Drop Python 3.4 support.
- Feature: Support for ``<span style="NAME">`` and corresponding
``<spanStyle>`` styles.
- Bug: ``attr.Sequence``'s ``min_length`` and ``max_length`` was ineffective
3.3.0 (2017-12-06)
------------------
- Add support for non-rml header and footer statements
This is to be able to support export to Open Document Format.
- Dropped Support for Python 3.3
3.2.0 (2017-01-08)
------------------
- Improve ``IntegerSequence`` field to return ranges using lists of two
numbers instead of listing them all out.
- Extended ``IntegerSequence`` to allow specification of first number and
lower/upper bound inclusion.
- Updated ``ConcatenationPostProcessor`` to handle the new integer sequence
data structure. Since this is so much more efficient for the merging
library, there was a 5x improvement when including PDFs with page ranges.
- Implemented a PdfTk-based concatenation post-processor. PdfTk is very fast,
but unfortunatelya lot of the gain is lost, since the outline must be merged
in manually. The PdfTk post-processor can be enabled by::
from z3c.rml import pdfinclude
pdfinclude.IncludePdfPages.ConcatenationPostProcessorFactory = \
pdfinclude.PdfTkConcatenationPostProcessor
- Fix initial blank page when PDF inclusion is first flowable. [Kyle MacFarlane]
- Support for Python 3.5 [Kyle MacFarlane]
- attr.getFileInfo() crashed if the context element wasn't parsed.
3.1.0 (2016-04-04)
------------------
- Feature: Added new paragraph style attributes ``splitLongWords``,
``underlineProportion``, and ``bulletAnchor``.
- Feature: Added ``topPadder`` directive. Patch by Alvin Gonzales.
- Bug: Default SVG fill is black. Patch by Alvin Gonzales.
- Bug: Fixes drawing incorrectly showing when the SVG `viewBox` is not
anchored at coordinate (0, 0). Patch by Alvin Gonzales.
- Test: Updated versions.cfg to reference the latest releases of all
dependencies.
- Bug: Avoid raising an exception of PdfReadWarning when including PDFs.
Patch by Adam Groszer.
3.0.0 (2015-10-02)
------------------
- Support for python 3.3 and 3.4
- Add 'bulletchar' as a valid unordered bullet type.
- Added nice help to rml2pdf script.
- Allow "go()" to accept input and output file objects.
- Fix "Unresolved bookmark" issue.
- Fix Issue #10.
2.9.3 (2015-09-18)
------------------
- Support transparent images in <image> tag
2.9.2 (2015-06-16)
------------------
- Fix spelling "nineth" to "ninth".
2.9.1 (2015-06-15)
------------------
- Add missing file missing from brow-bag 2.9.0 release.
2.9.0 (2015-06-15)
------------------
- Added support for more numbering schemes for ordered lists. The following
new `bulletType` values are supported:
* 'l' - Numbers as lower-cased text.
* 'L' - Numbers as upper-cased text.
* 'o' - Lower-cased ordinal with numbers converted to text.
* 'O' - Upper-cased ordinal with numbers converted to text.
* 'r' - Lower-cased ordinal with numbers.
* 'R' - Upper-cased ordinal with numbers.
2.8.1 (2015-05-05)
------------------
- Added `barBorder` attribute to ``barCode`` and ``barCodeFlowable``
tags. This attribute controls the thickness of a white border around a QR
code.
2.8.0 (2015-02-02)
------------------
- Get version of reference manual from package version.
- Added the ability to specify any set of characters as the "bullet content"
like it is supported by ReportLab.
- Fixed code to work with ReportLab 3.1.44.
2.7.2 (2014-10-28)
------------------
- Now the latest PyPDF2 versions are supported.
2.7.1 (2014-09-10)
------------------
- Fixed package name.
2.7.0 (2014-09-10)
------------------
- Added ``bulletType`` sypport for the ``listStyle`` tag.
- Added "bullet" as a valid unordered list type value.
2.6.0 (2014-07-24)
------------------
- Implemented ability to use the ``mergePage`` tag inside the ``pageTemplate``
tag. This way you can use a PDF as a background for a page.
- Updated code to work with ReportLab 3.x, specifically the latest 3.1.8. This
includes a monkeypatch to the code formatter for Python 2.
- Updated code to work with PyPDF2 1.21. There is a bug in 1.22 that prohibits
us from upgrading fully.
- Changed buildout to create a testable set of scripts on Ubuntu. In the
process all package versions were nailed for testing.
2.5.0 (2013-12-10)
------------------
- Reimplamented ``includePdfPages`` directive to use the new PyPDF2 merger
component that supports simple appending of pages. Also optimized page
creation and minimized file loading. All of this resulted in a 95% speedup.
2.4.1 (2013-12-10)
------------------
- Fixed a bug when rendering a table with the same style twice. Unfortuantely,
Reportlab modifies a style during usage, so that a copy mustbe created for
each use. [Marcin Nowak]
2.4.0 (2013-12-05)
------------------
- Switch from ``pyPdf`` to the newer, maintained ``PyPDF2`` library.
2.3.1 (2013-12-03)
------------------
- Report correct element during error reporting.
- ``registerFontFamily`` never worked until now, since the directive was not
properly registered.
2.3.0 (2013-09-03)
------------------
- Added ``title``, ``subject``, ``author``, and ``creator`` attributes to
``document`` element. Those are set as PDF annotations, which are now
commonly used to hint viewers window titles, etc. (Those fields are not
available in RML2PDF.)
2.2.1 (2013-08-06)
------------------
- Make the number of max rendering passes configurable by exposing the setting
in the API.
- Added `align` attribute to ``img`` tag.
2.2.0 (2013-07-08)
------------------
- Added a new console script "rml2pdf" that renders an RML file to PDF.
- Added ``preserveAspectRatio`` to ``img`` tag flowable. The attribute was
already supported for the ``image`` tag.
2.1.0 (2013-03-07)
------------------
- Implemented all PDF viewer preferences. [Kyle MacFarlane]
* HideToolbar
* HideMenubar
* HideWindowUI
* FitWindow
* CenterWindow
* DisplayDocTitle
* NonFullScreenPageMode
* Direction
* ViewArea
* ViewClip
* PrintArea
* PrintClip
* PrintScaling
They are all available via the ``docinit`` tag.
- Added SVG support to the ``image`` and ``imageAndFlowables`` tags. [Kyle
MacFarlane]
Approach: Convert the drawing to a PIL ``Image`` instance and pass that
around just like a regular image. The big problem is that in the conversion
from ``Drawing`` to ``Image`` stroke width can often get messed up and
become too thick. I think this is maybe down to how scaling is done but you
can avoid it by editing the SVGs you want to insert. You also lose any
transparency and get a white background. Basically you no longer really have
a vector graphic but instead a 300 DPI bitmap that is automatically scaled
to the correct size with little quality loss.
- Added ability to look for font files in packages using the standard
"[package.path]/dir/filename" notation. [Kyle MacFarlane]
- Documented the ``pageSize`` versus ``pagesize`` attribute difference on
``template`` and ``pageTemplate`` elements compared to RML2PDF. [Kyle
MacFarlane]
- ``namedString`` element now evaluates its contents so you can use things
like ``pageNumber`` inside of it. [Kyle MacFarlane]
- Implemented ``evalString`` using Python's ``eval()`` with builtins
disabled. [Kyle MacFarlane]
- ``getName`` element now checks if it has a default attribute. This is used
as a width measurement for a first pass or as the actual value if the
reference isn't resolved after the second pass. [Kyle MacFarlane]
- ``getName`` element now supports forward references. This means you can now
do things like "Page X of Y". This only works in the ``drawString`` and
``para`` elements. [Kyle MacFarlane]
- General performance improvements. [Kyle MacFarlane]
- Improved performance by not applying a copy of the default style to every
table cell and also by not even trying to initialise the attributes if lxml
says they don't exist. [Kyle MacFarlane]
- ``MergePostProcessor`` class did not copy document info and table of
contents (aka Outlines) of ``inputFile1``. That meant that if you used any
``includePdfPages`` or ``mergePage`` directives you lost any ``outlineAdd``
directive effect. [Alex Garel]
- Fixed any failing tests, including the ones failing on Windows. [Kyle
MacFarlane]
- Fixed the table borders not printing or even appearing in some
viewers. [Kyle MacFarlane]
- Updated ``bootstrap.py`` and ``buildout.cfg`` to work with the latest
version of ``zc.buildout``.
- Updated build to use latest version of lxml.
2.0.0 (2012-12-21)
------------------
- Implemented ``saveState`` and ``restoreState`` directives. (LP #666194)
- Implemented ``storyPlace`` directive. (LP #665941)
- Implemented ``clip`` attribute of ``path`` directive. See RML example 041.
- Added ``h4``, ``h5``, and ``h6`` directives.
- Implemented ``codesnippet`` directive.
- Implemented ``pageBreakBefore``, ``frameBreakBefore``, ``textTransform``,
and ``endDots`` attributes for paragraph styles.
- Added ``maxLineLength`` and ``newLineChars`` attributes to the ``pre``
directive.
- Implemented ``pageNumber`` element for all ``draw*String`` elements.
- Implemented ``NamedString`` directive.
- Implemented ``startIndex`` and ``showIndex`` directive. Also hooked up
``index`` in paragraphs properly. You can now create real book indexes.
- Implemented ``ol``, ``ul``, and ``li`` directives, which allow highly
flexible lists to be created. Also implemented a complimentary ``listStyle``
directive.
- Implemented the following doc-programming directives:
* docAssert
* docAssign
* docElse
* docIf
* docExec
* docPara
* docWhile
- Added ``encName`` attribute to ``registerCidFont`` directive.
- Renamed ``bookmark`` to ``bookmarkPage``.
- Created a new canvas directive called ``bookmark``.
- Added ``img`` directive, which is a simple image flowable.
- Implemented crop marks support fully.
- Added ``pageLayout`` and ``pageMode`` to ``docInit`` directive.
- Implemented all logging related directives.
- Implemented ``color`` directive inside the ``initialize`` directive.
- Renamed ``pdfInclude`` to documented ``includePdfPages`` and added `pages`
attribute, so that you can only include specific pages.
- Don't show "doc" namespace in reference snippets.
- Create a list of RML2PDF and z3c.rml differences.
- Implemented the ``ABORT_ON_INVALID_DIRECTIVE`` flag, that when set ``True``
will raise a ``ValueError`` error on the first occurence of a bad tag.
- Implemented ``setFontSize`` directive for page drawings.
- Implemented ``plugInGraphic`` which allows inserting graphics rendered in
Python.
- Added `href` and `destination` to table cells and rectangles.
- Bug: Due to a logic error, bad directives were never properly detected and
logged about.
- Bug: Overwriting the default paragraph styles did not work properly.
- Bug: Specifying a color in any tag inside the paragraph would fail, if the
color was a referenced name.
- Bug: Moved premature ``getName`` evaluation into runtime to properly handle
synamic content now. This is now properly done for any paragraph and
draw string variant.
- Bug: Fixed DTD generator to properly ignore Text Nodes as attributes. Also
text nodes were not properly documented as element PCDATA.
1.1.0 (2012-12-18)
------------------
- Upgrade to ReportLab 2.6. This required some font changes and several
generated PDFs did not match, since some default fonts changed to sans-serif.
- Added ``pdfInclude`` directive from Alex Garel. (LP #969399).
- Switched to Pillow (from PIL).
- Switched RML highlighting in RML Reference from SilverCity to Pygments.
- Bug: Addressed a bug in ReportLab 2.6 that disallowed 3-D pie charts from
rendering.
- Bug: Properly reset pdfform before rendering a document.
- Bug: Reset fonts properly before a rendering.
1.0.0 (2012-04-02)
------------------
- Using Python's ``doctest`` module instead of depreacted
``zope.testing.doctest``.
0.9.1 (2010-07-22)
------------------
- I found a more complete paragraph border patch from Yuan Hong. Now the DTD
is updated, the border supports a border radius and the tag-para.rml sample
has been updated.
0.9.0 (2010-07-22)
------------------
- Upgraded to ReportLab 2.4. This required some font changes and several
generated PDFs did not match, since some default fonts changed.
- Upgraded to latest lxml. This only required a trivial change. Patch by Felix
Schwarz.
- Implemented ``linePlot3D`` directive. Patch by Faisal Puthuparackat.
- Added paragraph border support. Patch by Yuan Hong.
- Bug: Fixed version number in reference.pt. Patch by Felix Schwarz.
- Bug: Write PDF documents in binary mode. Patch by Felix Schwarz.
0.8.0 (2009-02-18)
------------------
- Bug: Use python executable as a part of the subprocess command.
- Add support for RML's `pageNumber` element.
0.7.3 (2007-11-10)
------------------
- Make sure that the output dir is included in the distribution.
0.7.2 (2007-11-10)
------------------
- Upgraded to work with ReportLab 2.1 and lxml 1.3.6.
- Fix sub-process tests for a pure egg setup.
0.7.1 (2007-07-31)
------------------
- Bug: When the specified page size (within the ``pageInfo`` element) was a
word or set thereof, the processing would fail. Thanks to Chris Zelenak for
reporting the bug and providing a patch.
0.7.0 (2007-06-19)
------------------
- Feature: Added a Chinese PDF sample file to ``tests/expected`` under the
name ``sample-shipment-chinese.pdf``.
- Feature: Added another tag that is commonly needed in projects. The
``<keepTogether>`` tag will keep the child flowables in the same frame.
When necessary, the frame break will be automatic. Patch by Yuan Hong.
- Feature: Added the "alignment" attribute to the ``blockTable``
directive. This attribute defines the horizontal alignment for a table that
is not 100% in width of the containing flowable. Patch by Yuan Hong.
- Feature: When creating Chinese PDF documents, the normal TTF for Chinese
printing is 'simsun'. However, when bold text is neeed, we switch to
'simhei'. To properly register this, we need the
``reportlab.lib.fonts.addMapping`` function. This is missing in the reportlab
RML specification, so a new directive has been defined::
<addMapping faceName="simsun" bold="1" italic="0" psName="simhei" />
Patch by Yuan Hong.
- Feature: The ``para`` and ``paraStyle`` directive now support the "wordWrap"
attribute, which allows for selecting a different wrod wrapping
algorithm. This is needed because some far-East Asian languages do not use
white space to separate words. Patch by Yuan Hong.
- Bug: Handle Windows drive letters correctly. Report and fix by Yuan Hong.
0.6.0 (2007-06-19)
------------------
- Bug: Fixed setup.py to include all dependencies.
- Bug: Added test to show that a blocktable style can be applied multiple
times. A user reported that this is not working, but I could not replicate
the problem.
- Update: Updated the expected renderings to ReportLab 2.1. There were some
good layout fixes that broke the image comparison.
0.5.0 (2007-04-01)
------------------
- Initial Release
Raw data
{
"_id": null,
"home_page": "https://github.com/zopefoundation/z3c.rml",
"name": "z3c.rml",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "rml reportlab pdf pagetemplate",
"author": "Stephan Richter and the Zope Community",
"author_email": "zope-dev@zope.dev",
"download_url": "https://files.pythonhosted.org/packages/73/8f/5a3cad03268b66ae008e774ca7d86bff86a35733b7394ba75436e2346295/z3c.rml-4.4.0.tar.gz",
"platform": null,
"description": "===================================================\n``z3c.rml`` -- An alternative implementation of RML\n===================================================\n\n.. image:: https://img.shields.io/pypi/v/z3c.rml.svg\n :target: https://pypi.org/project/z3c.rml/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/pyversions/z3c.rml.svg\n :target: https://pypi.org/project/z3c.rml/\n :alt: Supported Python versions\n\n.. image:: https://github.com/zopefoundation/z3c.rml/actions/workflows/tests.yml/badge.svg\n :target: https://github.com/zopefoundation/z3c.rml/actions/workflows/tests.yml\n :alt: Build Status\n\n.. image:: https://coveralls.io/repos/github/zopefoundation/z3c.rml/badge.svg?branch=master\n :target: https://coveralls.io/github/zopefoundation/z3c.rml?branch=master\n\nThis is an alternative implementation of ReportLab's RML PDF generation XML\nformat. Like the original implementation, it is based on ReportLab's\n``reportlab`` library.\n\nYou can read all about ``z3c.rml`` and see many examples on how to use it,\nsee the `RML Reference`_\n\n.. _RML Reference: https://github.com/zopefoundation/z3c.rml/blob/master/src/z3c/rml/rml-reference.pdf?raw=true\n\n\nInstall on pip::\n\n\tpip install z3c.rml\n\nz3c.rml is then available on the commandline as z3c.rml.::\n\n\t$ z3c.rml --help\n\tusage: rml2pdf [-h]\n\t xmlInputName [outputFileName] [outDir]\n\t [dtdDir]\n\n\tConverts file in RML format into PDF file.\n\n\tpositional arguments:\n\t xmlInputName RML file to be processed\n\t outputFileName output PDF file name\n\t outDir output directory\n\t dtdDir directory with XML DTD (not yet supported)\n\n\toptional arguments:\n\t -h, --help show this help message and exit\n\n\tCopyright (c) 2007 Zope Foundation and Contributors.\n\nSave this file as file.rml::\n\n\t<!DOCTYPE document SYSTEM \"rml.dtd\">\n\t<document filename=\"example_01.pdf\">\n\t <template showBoundary=\"1\"> <!--Debugging is now turned on, frame outlines -->\n\t <!--will appear on the page -->\n\t <pageTemplate id=\"main\">\n\t <!-- two frames are defined here: -->\n\t <frame id=\"first\" x1=\"100\" y1=\"400\" width=\"150\" height=\"200\"/>\n\t <frame id=\"second\" x1=\"300\" y1=\"400\" width=\"150\" height=\"200\"/>\n\t </pageTemplate>\n\t </template>\n\t <stylesheet>\n\t <!-- still empty...-->\n\t </stylesheet>\n\t <story>\n\t <para>\n\t Welcome to RML.\n\t </para>\n\t </story>\n\t</document>\n\n\nThen run::\n\n\t$ z3c.rml file.rml\n\nThe output will be example_01.pdf as defined in the document\n\nCodewise you can do::\n\n\tfrom z3c.rml import rml2pdf\n\trml2pdf.go('file.rml','file.pdf')\n\n=======\nCHANGES\n=======\n\n4.4.0 (2023-08-23)\n------------------\n\n- Add support for the splitByRow and splitInRow arguments to BlockTable.\n\n- Add ``rlPyCairo`` as install requirement as ``reportlab >= 4.0`` needs that library.\n (`#117 <https://github.com/zopefoundation/z3c.rml/issues/117>_`)\n\n\n4.3.0 (2023-04-25)\n------------------\n\n- Add support for Python 3.11.\n\n- Drop support for Python 2.7, 3.5, 3.6.\n\n- Added support for text anchor points on images.\n\n- Make sure we only close input files if we opened them.\n\n- Delegate image ratio to drawImage. (PR #105)\n\n- Accepts \"None\" for label box colors.\n\n- Use svglib for the svg to rml conversion instead of maintaining our own.\n\n- Allow unicode characters as bullets.\n\n\n4.2.1 (2022-09-30)\n------------------\n\n- Add support for Python 3.10.\n\n- Add back support for Python 3.6.\n\n- Fix name clash in repository on file systems which are not case sensitive but\n just case preserving.\n\n- Move output directory of tests to a temporary directory.\n\n- Support `pikepdf` 6.0+.\n\n\n4.2.0 (2021-10-14)\n------------------\n\n- Upgrade to using `pikepdf` 3.0+.\n\n\n4.1.2 (2020-12-14)\n------------------\n\n- Fix include on first page. (PR #84)\n\n\n4.1.1 (2020-12-08)\n------------------\n\n- Allow ``<registerTTFont>`` to search default font directories instead of\n requiring absolute or relative path. (Fixes issue #46.)\n\n- Make sure a includePages adds blank pages at the end of a document when\n there is no flowable after it.\n\n\n4.1.0 (2020-12-07)\n------------------\n\n- Implement new tag ``<blockNosplit>`` for ``<blockTableStyle>``.\n\n- Fix dynamic tags in paragraph. Fixes page numbering.\n\n- Make new bullet styles of Reportlab 3.5 avaialable.\n\n- Support for custom ``Canvas`` classes.\n\n\n4.0.0 (2020-12-07)\n------------------\n\n- Dropped support for Python 2.x.\n\n- Dropped `PyPDF2` for `pikepdf`.\n\n\n3.10.0 (2020-03-27)\n-------------------\n\n- Added ``inFill`` property to ``<linePlot>`` which will fill the area below\n the line makign it effectively an area plot.\n\n- Added ability to specify the ``labelTextFormat`` property of ``<xValueAxis>``\n and ``<yValueAxis>`` to be a reference to a function via a Python path.\n\n- Added an example from Stack Overflow that exercises the new features. See\n ``tag0linePlot.rml``.\n\n- Remove Python 3.6 support and add 3.8.\n\n\n3.9.1 (2019-10-04)\n------------------\n\n- Adding textTransform implementation.\n\n\n3.9.0 (2019-07-19)\n------------------\n\n- Create a proper, parsable DTD. Add a test that verifies its validity.\n\n- Updated `rml.dtd`.\n\n- ``strandLabels`` does not support text content. That was accidentally\n asserted due to bad schema inheritance.\n\n\n3.8.0 (2019-06-24)\n------------------\n\n- Unified ``paraStyle`` and ``spanStyle`` even more.\n\n- Extended ``<spanStyle>`` to support underline and strike as well.\n\n- Simplified implemnetation of strike and underline style implementation. It\n is also the more correct implementation.\n\n\n3.7.0 (2019-06-14)\n------------------\n\n- Drop support for running tests using ``python setup.py test``.\n\n- Drop Python 3.5 support.\n\n- Extended ``<paraStyle>``:\n\n * ``underline``: A boolean field indicating whether the entire paragraph is\n underlined. The following related attributes have also been added to the\n style: ``underlineColor``, ``underlineOffset``, ``underlineWidth``,\n ``underlineGap``, and ``underlineKind``\n\n * ``strike``: A boolean field indicating whether the entire paragraph is\n stricken. The following related attributes have also been added to the\n style: ``strikeColor``, ``strikeOffset``, ``strikeWidth``,\n ``strikeGap``, and ``strikeKind``\n\n * ``justifyLastLine``: Added attribute that is available in the API.\n\n * ``justifyBreaks``: Added attribute that is available in the API.\n\n * ``spaceShrinkage``: Added attribute that is available in the API.\n\n * ``linkUnderline``: Added attribute that is available in the API.\n\n\n3.6.3 (2019-04-11)\n------------------\n\n- Added missing ``lineBelowDash``, ``lineAboveDash``, ``lineLeftDash``,\n ``lineRightDash`` attributes\n\n\n3.6.2 (2019-03-27)\n------------------\n\n- Fix num2words (missing import, two digit dashes)\n\n- Added test to check what happens with text not in tags\n (e.g. not in a ``<para>`` tag)\n\n\n3.6.1 (2018-12-01)\n------------------\n\n- Add Python 3.7 Trove classifier.\n\n\n3.6.0 (2018-12-01)\n------------------\n\n- Upgraded to support Python 3.7\n\n- Allow ``<place>`` to contain ``<fixedSize>``, which allows content to be\n fitted into the place boundaries.\n\n\n3.5.1 (2018-10-09)\n------------------\n\n- Upgraded to support Reportlab 3.5.9\n\n\n3.5.0 (2018-04-10)\n------------------\n\n- Honor the order of attribute choices in the docs.\n\n- Abstracted span styles out of base paragraph style, so that attributes can\n be reused.\n\n- Remove all default values for ``SpanStyle`` styles, so that all values can\n be inherited from the paragraph.\n\n- Support for package-relative ``src`` values in ``<para>`` ``<img>`` tags.\n\n\n3.4.0 (2018-04-09)\n------------------\n\n- Drop Python 3.4 support.\n\n- Feature: Support for ``<span style=\"NAME\">`` and corresponding\n ``<spanStyle>`` styles.\n\n- Bug: ``attr.Sequence``'s ``min_length`` and ``max_length`` was ineffective\n\n\n\n3.3.0 (2017-12-06)\n------------------\n\n- Add support for non-rml header and footer statements\n This is to be able to support export to Open Document Format.\n\n- Dropped Support for Python 3.3\n\n\n3.2.0 (2017-01-08)\n------------------\n\n- Improve ``IntegerSequence`` field to return ranges using lists of two\n numbers instead of listing them all out.\n\n- Extended ``IntegerSequence`` to allow specification of first number and\n lower/upper bound inclusion.\n\n- Updated ``ConcatenationPostProcessor`` to handle the new integer sequence\n data structure. Since this is so much more efficient for the merging\n library, there was a 5x improvement when including PDFs with page ranges.\n\n- Implemented a PdfTk-based concatenation post-processor. PdfTk is very fast,\n but unfortunatelya lot of the gain is lost, since the outline must be merged\n in manually. The PdfTk post-processor can be enabled by::\n\n from z3c.rml import pdfinclude\n pdfinclude.IncludePdfPages.ConcatenationPostProcessorFactory = \\\n pdfinclude.PdfTkConcatenationPostProcessor\n\n- Fix initial blank page when PDF inclusion is first flowable. [Kyle MacFarlane]\n\n- Support for Python 3.5 [Kyle MacFarlane]\n\n- attr.getFileInfo() crashed if the context element wasn't parsed.\n\n\n3.1.0 (2016-04-04)\n------------------\n\n- Feature: Added new paragraph style attributes ``splitLongWords``,\n ``underlineProportion``, and ``bulletAnchor``.\n\n- Feature: Added ``topPadder`` directive. Patch by Alvin Gonzales.\n\n- Bug: Default SVG fill is black. Patch by Alvin Gonzales.\n\n- Bug: Fixes drawing incorrectly showing when the SVG `viewBox` is not\n anchored at coordinate (0, 0). Patch by Alvin Gonzales.\n\n- Test: Updated versions.cfg to reference the latest releases of all\n dependencies.\n\n- Bug: Avoid raising an exception of PdfReadWarning when including PDFs.\n Patch by Adam Groszer.\n\n\n3.0.0 (2015-10-02)\n------------------\n\n- Support for python 3.3 and 3.4\n\n- Add 'bulletchar' as a valid unordered bullet type.\n\n- Added nice help to rml2pdf script.\n\n- Allow \"go()\" to accept input and output file objects.\n\n- Fix \"Unresolved bookmark\" issue.\n\n- Fix Issue #10.\n\n\n2.9.3 (2015-09-18)\n------------------\n\n- Support transparent images in <image> tag\n\n\n2.9.2 (2015-06-16)\n------------------\n\n- Fix spelling \"nineth\" to \"ninth\".\n\n\n2.9.1 (2015-06-15)\n------------------\n\n- Add missing file missing from brow-bag 2.9.0 release.\n\n\n2.9.0 (2015-06-15)\n------------------\n\n- Added support for more numbering schemes for ordered lists. The following\n new `bulletType` values are supported:\n\n * 'l' - Numbers as lower-cased text.\n * 'L' - Numbers as upper-cased text.\n * 'o' - Lower-cased ordinal with numbers converted to text.\n * 'O' - Upper-cased ordinal with numbers converted to text.\n * 'r' - Lower-cased ordinal with numbers.\n * 'R' - Upper-cased ordinal with numbers.\n\n2.8.1 (2015-05-05)\n------------------\n\n- Added `barBorder` attribute to ``barCode`` and ``barCodeFlowable``\n tags. This attribute controls the thickness of a white border around a QR\n code.\n\n2.8.0 (2015-02-02)\n------------------\n\n- Get version of reference manual from package version.\n\n- Added the ability to specify any set of characters as the \"bullet content\"\n like it is supported by ReportLab.\n\n- Fixed code to work with ReportLab 3.1.44.\n\n2.7.2 (2014-10-28)\n------------------\n\n- Now the latest PyPDF2 versions are supported.\n\n\n2.7.1 (2014-09-10)\n------------------\n\n- Fixed package name.\n\n\n2.7.0 (2014-09-10)\n------------------\n\n- Added ``bulletType`` sypport for the ``listStyle`` tag.\n\n- Added \"bullet\" as a valid unordered list type value.\n\n\n2.6.0 (2014-07-24)\n------------------\n\n- Implemented ability to use the ``mergePage`` tag inside the ``pageTemplate``\n tag. This way you can use a PDF as a background for a page.\n\n- Updated code to work with ReportLab 3.x, specifically the latest 3.1.8. This\n includes a monkeypatch to the code formatter for Python 2.\n\n- Updated code to work with PyPDF2 1.21. There is a bug in 1.22 that prohibits\n us from upgrading fully.\n\n- Changed buildout to create a testable set of scripts on Ubuntu. In the\n process all package versions were nailed for testing.\n\n\n2.5.0 (2013-12-10)\n------------------\n\n- Reimplamented ``includePdfPages`` directive to use the new PyPDF2 merger\n component that supports simple appending of pages. Also optimized page\n creation and minimized file loading. All of this resulted in a 95% speedup.\n\n\n2.4.1 (2013-12-10)\n------------------\n\n- Fixed a bug when rendering a table with the same style twice. Unfortuantely,\n Reportlab modifies a style during usage, so that a copy mustbe created for\n each use. [Marcin Nowak]\n\n\n2.4.0 (2013-12-05)\n------------------\n\n- Switch from ``pyPdf`` to the newer, maintained ``PyPDF2`` library.\n\n\n2.3.1 (2013-12-03)\n------------------\n\n- Report correct element during error reporting.\n\n- ``registerFontFamily`` never worked until now, since the directive was not\n properly registered.\n\n\n2.3.0 (2013-09-03)\n------------------\n\n- Added ``title``, ``subject``, ``author``, and ``creator`` attributes to\n ``document`` element. Those are set as PDF annotations, which are now\n commonly used to hint viewers window titles, etc. (Those fields are not\n available in RML2PDF.)\n\n\n2.2.1 (2013-08-06)\n------------------\n\n- Make the number of max rendering passes configurable by exposing the setting\n in the API.\n\n- Added `align` attribute to ``img`` tag.\n\n\n2.2.0 (2013-07-08)\n------------------\n\n- Added a new console script \"rml2pdf\" that renders an RML file to PDF.\n\n- Added ``preserveAspectRatio`` to ``img`` tag flowable. The attribute was\n already supported for the ``image`` tag.\n\n\n2.1.0 (2013-03-07)\n------------------\n\n- Implemented all PDF viewer preferences. [Kyle MacFarlane]\n\n * HideToolbar\n * HideMenubar\n * HideWindowUI\n * FitWindow\n * CenterWindow\n * DisplayDocTitle\n * NonFullScreenPageMode\n * Direction\n * ViewArea\n * ViewClip\n * PrintArea\n * PrintClip\n * PrintScaling\n\n They are all available via the ``docinit`` tag.\n\n- Added SVG support to the ``image`` and ``imageAndFlowables`` tags. [Kyle\n MacFarlane]\n\n Approach: Convert the drawing to a PIL ``Image`` instance and pass that\n around just like a regular image. The big problem is that in the conversion\n from ``Drawing`` to ``Image`` stroke width can often get messed up and\n become too thick. I think this is maybe down to how scaling is done but you\n can avoid it by editing the SVGs you want to insert. You also lose any\n transparency and get a white background. Basically you no longer really have\n a vector graphic but instead a 300 DPI bitmap that is automatically scaled\n to the correct size with little quality loss.\n\n- Added ability to look for font files in packages using the standard\n \"[package.path]/dir/filename\" notation. [Kyle MacFarlane]\n\n- Documented the ``pageSize`` versus ``pagesize`` attribute difference on\n ``template`` and ``pageTemplate`` elements compared to RML2PDF. [Kyle\n MacFarlane]\n\n- ``namedString`` element now evaluates its contents so you can use things\n like ``pageNumber`` inside of it. [Kyle MacFarlane]\n\n- Implemented ``evalString`` using Python's ``eval()`` with builtins\n disabled. [Kyle MacFarlane]\n\n- ``getName`` element now checks if it has a default attribute. This is used\n as a width measurement for a first pass or as the actual value if the\n reference isn't resolved after the second pass. [Kyle MacFarlane]\n\n- ``getName`` element now supports forward references. This means you can now\n do things like \"Page X of Y\". This only works in the ``drawString`` and\n ``para`` elements. [Kyle MacFarlane]\n\n- General performance improvements. [Kyle MacFarlane]\n\n- Improved performance by not applying a copy of the default style to every\n table cell and also by not even trying to initialise the attributes if lxml\n says they don't exist. [Kyle MacFarlane]\n\n- ``MergePostProcessor`` class did not copy document info and table of\n contents (aka Outlines) of ``inputFile1``. That meant that if you used any\n ``includePdfPages`` or ``mergePage`` directives you lost any ``outlineAdd``\n directive effect. [Alex Garel]\n\n- Fixed any failing tests, including the ones failing on Windows. [Kyle\n MacFarlane]\n\n- Fixed the table borders not printing or even appearing in some\n viewers. [Kyle MacFarlane]\n\n- Updated ``bootstrap.py`` and ``buildout.cfg`` to work with the latest\n version of ``zc.buildout``.\n\n- Updated build to use latest version of lxml.\n\n\n2.0.0 (2012-12-21)\n------------------\n\n- Implemented ``saveState`` and ``restoreState`` directives. (LP #666194)\n\n- Implemented ``storyPlace`` directive. (LP #665941)\n\n- Implemented ``clip`` attribute of ``path`` directive. See RML example 041.\n\n- Added ``h4``, ``h5``, and ``h6`` directives.\n\n- Implemented ``codesnippet`` directive.\n\n- Implemented ``pageBreakBefore``, ``frameBreakBefore``, ``textTransform``,\n and ``endDots`` attributes for paragraph styles.\n\n- Added ``maxLineLength`` and ``newLineChars`` attributes to the ``pre``\n directive.\n\n- Implemented ``pageNumber`` element for all ``draw*String`` elements.\n\n- Implemented ``NamedString`` directive.\n\n- Implemented ``startIndex`` and ``showIndex`` directive. Also hooked up\n ``index`` in paragraphs properly. You can now create real book indexes.\n\n- Implemented ``ol``, ``ul``, and ``li`` directives, which allow highly\n flexible lists to be created. Also implemented a complimentary ``listStyle``\n directive.\n\n- Implemented the following doc-programming directives:\n\n * docAssert\n * docAssign\n * docElse\n * docIf\n * docExec\n * docPara\n * docWhile\n\n- Added ``encName`` attribute to ``registerCidFont`` directive.\n\n- Renamed ``bookmark`` to ``bookmarkPage``.\n\n- Created a new canvas directive called ``bookmark``.\n\n- Added ``img`` directive, which is a simple image flowable.\n\n- Implemented crop marks support fully.\n\n- Added ``pageLayout`` and ``pageMode`` to ``docInit`` directive.\n\n- Implemented all logging related directives.\n\n- Implemented ``color`` directive inside the ``initialize`` directive.\n\n- Renamed ``pdfInclude`` to documented ``includePdfPages`` and added `pages`\n attribute, so that you can only include specific pages.\n\n- Don't show \"doc\" namespace in reference snippets.\n\n- Create a list of RML2PDF and z3c.rml differences.\n\n- Implemented the ``ABORT_ON_INVALID_DIRECTIVE`` flag, that when set ``True``\n will raise a ``ValueError`` error on the first occurence of a bad tag.\n\n- Implemented ``setFontSize`` directive for page drawings.\n\n- Implemented ``plugInGraphic`` which allows inserting graphics rendered in\n Python.\n\n- Added `href` and `destination` to table cells and rectangles.\n\n- Bug: Due to a logic error, bad directives were never properly detected and\n logged about.\n\n- Bug: Overwriting the default paragraph styles did not work properly.\n\n- Bug: Specifying a color in any tag inside the paragraph would fail, if the\n color was a referenced name.\n\n- Bug: Moved premature ``getName`` evaluation into runtime to properly handle\n synamic content now. This is now properly done for any paragraph and\n draw string variant.\n\n- Bug: Fixed DTD generator to properly ignore Text Nodes as attributes. Also\n text nodes were not properly documented as element PCDATA.\n\n\n1.1.0 (2012-12-18)\n------------------\n\n- Upgrade to ReportLab 2.6. This required some font changes and several\n generated PDFs did not match, since some default fonts changed to sans-serif.\n\n- Added ``pdfInclude`` directive from Alex Garel. (LP #969399).\n\n- Switched to Pillow (from PIL).\n\n- Switched RML highlighting in RML Reference from SilverCity to Pygments.\n\n- Bug: Addressed a bug in ReportLab 2.6 that disallowed 3-D pie charts from\n rendering.\n\n- Bug: Properly reset pdfform before rendering a document.\n\n- Bug: Reset fonts properly before a rendering.\n\n\n1.0.0 (2012-04-02)\n------------------\n\n- Using Python's ``doctest`` module instead of depreacted\n ``zope.testing.doctest``.\n\n\n0.9.1 (2010-07-22)\n------------------\n\n- I found a more complete paragraph border patch from Yuan Hong. Now the DTD\n is updated, the border supports a border radius and the tag-para.rml sample\n has been updated.\n\n\n0.9.0 (2010-07-22)\n------------------\n\n- Upgraded to ReportLab 2.4. This required some font changes and several\n generated PDFs did not match, since some default fonts changed.\n\n- Upgraded to latest lxml. This only required a trivial change. Patch by Felix\n Schwarz.\n\n- Implemented ``linePlot3D`` directive. Patch by Faisal Puthuparackat.\n\n- Added paragraph border support. Patch by Yuan Hong.\n\n- Bug: Fixed version number in reference.pt. Patch by Felix Schwarz.\n\n- Bug: Write PDF documents in binary mode. Patch by Felix Schwarz.\n\n\n0.8.0 (2009-02-18)\n------------------\n\n- Bug: Use python executable as a part of the subprocess command.\n\n- Add support for RML's `pageNumber` element.\n\n\n0.7.3 (2007-11-10)\n------------------\n\n- Make sure that the output dir is included in the distribution.\n\n\n0.7.2 (2007-11-10)\n------------------\n\n- Upgraded to work with ReportLab 2.1 and lxml 1.3.6.\n\n- Fix sub-process tests for a pure egg setup.\n\n\n0.7.1 (2007-07-31)\n------------------\n\n- Bug: When the specified page size (within the ``pageInfo`` element) was a\n word or set thereof, the processing would fail. Thanks to Chris Zelenak for\n reporting the bug and providing a patch.\n\n\n0.7.0 (2007-06-19)\n------------------\n\n- Feature: Added a Chinese PDF sample file to ``tests/expected`` under the\n name ``sample-shipment-chinese.pdf``.\n\n- Feature: Added another tag that is commonly needed in projects. The\n ``<keepTogether>`` tag will keep the child flowables in the same frame.\n When necessary, the frame break will be automatic. Patch by Yuan Hong.\n\n- Feature: Added the \"alignment\" attribute to the ``blockTable``\n directive. This attribute defines the horizontal alignment for a table that\n is not 100% in width of the containing flowable. Patch by Yuan Hong.\n\n- Feature: When creating Chinese PDF documents, the normal TTF for Chinese\n printing is 'simsun'. However, when bold text is neeed, we switch to\n 'simhei'. To properly register this, we need the\n ``reportlab.lib.fonts.addMapping`` function. This is missing in the reportlab\n RML specification, so a new directive has been defined::\n\n <addMapping faceName=\"simsun\" bold=\"1\" italic=\"0\" psName=\"simhei\" />\n\n Patch by Yuan Hong.\n\n- Feature: The ``para`` and ``paraStyle`` directive now support the \"wordWrap\"\n attribute, which allows for selecting a different wrod wrapping\n algorithm. This is needed because some far-East Asian languages do not use\n white space to separate words. Patch by Yuan Hong.\n\n- Bug: Handle Windows drive letters correctly. Report and fix by Yuan Hong.\n\n\n0.6.0 (2007-06-19)\n------------------\n\n- Bug: Fixed setup.py to include all dependencies.\n\n- Bug: Added test to show that a blocktable style can be applied multiple\n times. A user reported that this is not working, but I could not replicate\n the problem.\n\n- Update: Updated the expected renderings to ReportLab 2.1. There were some\n good layout fixes that broke the image comparison.\n\n\n0.5.0 (2007-04-01)\n------------------\n\n- Initial Release\n\n\n",
"bugtrack_url": null,
"license": "ZPL 2.1",
"summary": "An alternative implementation of RML",
"version": "4.4.0",
"project_urls": {
"Homepage": "https://github.com/zopefoundation/z3c.rml"
},
"split_keywords": [
"rml",
"reportlab",
"pdf",
"pagetemplate"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "57c47c73567bc5b47a2fa8a2b2eba9b5988bf3752a36c94bc08d9baf46d97b62",
"md5": "489a5c51db84d1716be7d0cc9dfa3dff",
"sha256": "be5bbe2315f37c8fc1052f5d141e7f01e9fa1545deebf4c793887e73b24e2fd8"
},
"downloads": -1,
"filename": "z3c.rml-4.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "489a5c51db84d1716be7d0cc9dfa3dff",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 1967719,
"upload_time": "2023-08-23T15:25:45",
"upload_time_iso_8601": "2023-08-23T15:25:45.746607Z",
"url": "https://files.pythonhosted.org/packages/57/c4/7c73567bc5b47a2fa8a2b2eba9b5988bf3752a36c94bc08d9baf46d97b62/z3c.rml-4.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "738f5a3cad03268b66ae008e774ca7d86bff86a35733b7394ba75436e2346295",
"md5": "f5bbe934984d8bd1dcca9173328dfb83",
"sha256": "3593e37ee3fcfb261d25d9a8546a062f9fcebe9df5803d876329bbc4b08570fb"
},
"downloads": -1,
"filename": "z3c.rml-4.4.0.tar.gz",
"has_sig": false,
"md5_digest": "f5bbe934984d8bd1dcca9173328dfb83",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 1597591,
"upload_time": "2023-08-23T15:25:50",
"upload_time_iso_8601": "2023-08-23T15:25:50.707107Z",
"url": "https://files.pythonhosted.org/packages/73/8f/5a3cad03268b66ae008e774ca7d86bff86a35733b7394ba75436e2346295/z3c.rml-4.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-23 15:25:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zopefoundation",
"github_project": "z3c.rml",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "z3c.rml"
}