.. -*- coding: utf-8 -*-
.. :Project: pglast — PostgreSQL Languages AST
.. :Created: mer 02 ago 2017 14:49:24 CEST
.. :Author: Lele Gaifax <lele@metapensiero.it>
.. :License: GNU General Public License version 3 or later
.. :Copyright: © 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Lele Gaifax
..
========
pglast
========
PostgreSQL Languages AST and statements prettifier
==================================================
:Author: Lele Gaifax
:Contact: lele@metapensiero.it
:License: `GNU General Public License version 3 or later`__
:Status: |build| |doc| |codecov|
:Version: `7`__
__ https://www.gnu.org/licenses/gpl.html
__ https://pglast.readthedocs.io/en/v7/development.html#history
.. |build| image:: https://github.com/lelit/pglast/actions/workflows/ci.yml/badge.svg?branch=v7
:target: https://github.com/lelit/pglast/actions/workflows/ci.yml
:alt: Build status
.. |doc| image:: https://readthedocs.org/projects/pglast/badge/?version=v7
:target: https://readthedocs.org/projects/pglast/builds/
:alt: Documentation status
.. |codecov| image:: https://codecov.io/gh/lelit/pglast/branch/v3/graph/badge.svg?token=A90D8tWnft
:target: https://codecov.io/gh/lelit/pglast
:alt: Test coverage status
This is a Python 3 module that exposes the *parse tree* of a PostgreSQL__ statement (extracted
by the almost standard PG parser repackaged as a standalone static library by `libpg_query`__)
as set of interconnected *nodes*, usually called an *abstract syntax tree*.
__ https://www.postgresql.org/
__ https://github.com/pganalyze/libpg_query
See a `more detailed introduction`__ in the documentation_.
__ https://pglast.readthedocs.io/en/v7/introduction.html
Installation
------------
As usual, the easiest way is with pip::
$ pip install pglast
Alternatively you can clone the repository::
$ git clone https://github.com/lelit/pglast.git --recursive
and install from there::
$ pip install ./pglast
Development
-----------
There is a set of *makefiles* implementing the most common operations, a ``make help`` will
show a brief table of contents. A comprehensive test suite, based on pytest__, covers__ nearly
99% of the source lines.
__ https://docs.pytest.org/en/latest/
__ https://codecov.io/gh/lelit/pglast/branch/v7/
Documentation
-------------
Latest documentation is hosted by `Read the Docs`__ at https://pglast.readthedocs.io/en/v7
__ https://readthedocs.org/
.. -*- coding: utf-8 -*-
.. _changes:
Changes
-------
Version 7
#########
7.1 (2024-11-26)
~~~~~~~~~~~~~~~~
- Merge with `Version 6`_
7.0 (2024-11-13)
~~~~~~~~~~~~~~~~
- No visible changes
7.0.dev1 (2024-11-01)
~~~~~~~~~~~~~~~~~~~~~
- Upgrade libpg_query to `17-6.0.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/17-6.0.0
7.0.dev0 (2024-10-31)
~~~~~~~~~~~~~~~~~~~~~
- No visible changes with respect to v6, apart from the support for new/revised syntaxes of
`PostgreSQL 17`__
__ https://www.postgresql.org/docs/17/release-17.html
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Target PostgreSQL 17, thanks to libpg_query `17-latest-dev`__
__ https://github.com/pganalyze/libpg_query/tree/17-latest-dev
- Require Python >= 3.9
Version 6
#########
6.11 (2024-11-26)
~~~~~~~~~~~~~~~~~
- Remove spurious trailing space in the ``ConstrTypePrinter.CONSTR_IDENTITY`` and the
``Constraint`` printers (issue `#165`__)
__ https://github.com/lelit/pglast/issues/165
6.10 (2024-11-01)
~~~~~~~~~~~~~~~~~
- Upgrade libpg_query to `16-5.2.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/16-5.2.0
6.9 (2024-10-31)
~~~~~~~~~~~~~~~~
- Fix regression introduced by recent modification to the ``CommonTableExpr`` printer that
impacted on the ``RawStream`` renderer (issue `#163`__)
__ https://github.com/lelit/pglast/issues/163
- Expose the ``RawStream`` renderer in the CLI tool with a new ``--normalize`` option
6.8 (2024-10-29)
~~~~~~~~~~~~~~~~
- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to
`plpgsql` (issue `#156`__)
__ https://github.com/pganalyze/libpg_query/commit/06670290ad39e61805ecacbc6267df61f6ae3d91
__ https://github.com/lelit/pglast/issues/156
6.7 (2024-10-28)
~~~~~~~~~~~~~~~~
- Generate wheels on PyPI using Python 3.13.0 final release, thanks to cibuildwheel `2.21.3`__
__ https://cibuildwheel.pypa.io/en/stable/changelog/#v2213
- Improve ``CommonTableExpr`` printer, reducing horizontal space waste
6.6 (2024-09-30)
~~~~~~~~~~~~~~~~
- Make recently introduced doctest related to issue #88 work on different Python versions
6.5 (2024-09-29)
~~~~~~~~~~~~~~~~
- Fix glitch when using the ``--preserve-comments`` flag (issue `#159`__)
__ https://github.com/lelit/pglast/issues/159
- Finally add a note to ``parse_plpgsql()`` documentation mentioning how it differs from
``parse_sql()`` (issue `#88`__)
__ https://github.com/lelit/pglast/issues/88
6.4 (2024-09-28)
~~~~~~~~~~~~~~~~
- Fix issue with deserialization of deeply nested ASTs (issue `#153`__)
__ https://github.com/lelit/pglast/issues/153
- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to
`plpgsql` (issue `#154`__)
__ https://github.com/pganalyze/libpg_query/commit/680f5ee67c6fdae497c8d1edfadd02b9b8eac74f
__ https://github.com/lelit/pglast/issues/154
6.3 (2024-08-06)
~~~~~~~~~~~~~~~~
- Fix ``SEQUENCE NAME`` in ``create_seq_stmt_def_elem`` (`PR #151`__), thanks to orages
__ https://github.com/lelit/pglast/pull/151
- Generate wheels on PyPI using Python 3.13.0rc1 release, thanks to cibuildwheel `2.20.0`__
__ https://cibuildwheel.pypa.io/en/stable/changelog/#v2200
- Use `Cython 3.0.11`__
__ https://github.com/cython/cython/blob/master/CHANGES.rst#3011-2024-08-05
6.2 (2024-02-01)
~~~~~~~~~~~~~~~~
- Almost no-op release to fix issue `144`__, producing correct wheels for macOS arm64
__ https://github.com/lelit/pglast/issues/144
6.1 (2024-01-22)
~~~~~~~~~~~~~~~~
- Inherit fix for issue `143`__ from `version 5`_
__ https://github.com/lelit/pglast/issues/143
6.0 (2024-01-22)
~~~~~~~~~~~~~~~~
- Produce wheels for macOS arm64
6.0.dev2 (2024-01-21)
~~~~~~~~~~~~~~~~~~~~~
- Enable compilation on Windows and produce related 32bit and 64bit wheels (issue `#7`__)
__ https://github.com/lelit/pglast/issues/7
6.0.dev1 (2024-01-11)
~~~~~~~~~~~~~~~~~~~~~
- Re-enable Linux 32bit wheels, thanks to libpg_query to `16-5.1.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/16-5.1.0
6.0.dev0 (2023-12-29)
~~~~~~~~~~~~~~~~~~~~~
- No visible changes with respect to v5, apart from the support for new/revised syntaxes of
`PostgreSQL 16`__
__ https://www.postgresql.org/docs/16/release-16.html
- Do not build binary wheels for Python 3.8
- Skip compilation on Linux 32bit (see `this comment`__ for details)
__ https://github.com/pganalyze/libpg_query/pull/225#issuecomment-1864145089
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Target PostgreSQL 16, thanks to libpg_query `16-5.0.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/16-5.0.0
Version 5
#########
5.9 (2024-01-22)
~~~~~~~~~~~~~~~~
- Fix issue `143`__, affecting ``AlterOwnerStmt`` and ``RenameStmt`` printers
__ https://github.com/lelit/pglast/issues/143
5.8 (2024-01-11)
~~~~~~~~~~~~~~~~
- Fix issue `#142`__, a glitch that affected 32-bit systems
__ https://github.com/lelit/pglast/issues/142
5.7 (2023-12-23)
~~~~~~~~~~~~~~~~
- Use `Cython 3.0.7`__
__ https://github.com/cython/cython/blob/master/CHANGES.rst#307-2023-12-19
- Update libpg_query to `15-4.2.4`__
__ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.4
5.6 (2023-12-07)
~~~~~~~~~~~~~~~~
- Fix issue `#138`__, a defect that hindered the creation of AST nodes that act as *markers*,
(currently ``A_Star`` and ``CheckPointStmt``), that do not carry any other information
__ https://github.com/lelit/pglast/issues/138
- Use `Cython 3.0.6`__
__ https://github.com/cython/cython/blob/master/CHANGES.rst#306-2023-11-26
- Handle the ``ENABLE TRIGGER ALL`` in ``AlterTableCmd``
- Fix issue `#136`__, a regression introduced by “Avoid overly abundancy of parentheses in
expressions”
__ https://github.com/lelit/pglast/issues/136
5.5 (2023-10-07)
~~~~~~~~~~~~~~~~
- Use `Cython 3.0.3`__
__ https://github.com/cython/cython/blob/master/CHANGES.rst#303-2023-10-05
- Produce wheels using final Python 3.12 release, thanks to ``cibuildwheel`` `2.16.2`__
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2162
5.4 (2023-08-24)
~~~~~~~~~~~~~~~~
- Improve documentation, adding ``parser.Displacements``, ``parser.scan`` and ``parser.split``
examples (`issue #128`__)
__ https://github.com/lelit/pglast/issues/128
- Fix issues `#129`__ and `#130`__ (merged from `version 4.4`__)
__ https://github.com/lelit/pglast/issues/129
__ https://github.com/lelit/pglast/issues/130
__ `4.4 (2023-08-24)`_
5.3 (2023-08-05)
~~~~~~~~~~~~~~~~
- Update libpg_query to `15-4.2.3`__
__ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.3
5.2 (2023-05-20)
~~~~~~~~~~~~~~~~
- Update libpg_query to `15-4.2.1`__
__ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.1
5.1 (2023-02-28)
~~~~~~~~~~~~~~~~
- Merge `version 4.2`__ changes
__ `4.2 (2023-02-27)`_
5.0 (2023-02-19)
~~~~~~~~~~~~~~~~
- No changes
5.0.dev1 (2023-02-11)
~~~~~~~~~~~~~~~~~~~~~
- Update libpg_query to `15-4.2.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.0
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Change the type of the ``ast.Float`` value from ``Decimal`` to ``str``
Using a ``Decimal`` implies potential differences in the representation of floating numbers,
and already caused issues (`#91`__ and `#100`__) in the past, making it impossible to render,
say, ``SELECT 0.0e1``, due to the fact that ``Decimal('0.0e1')`` resolves to
``Decimal('0')``.
__ https://github.com/lelit/pglast/issues/91
__ https://github.com/lelit/pglast/issues/100
5.0.dev0 (2022-12-19)
~~~~~~~~~~~~~~~~~~~~~
- No visible changes with respect to v4, apart from the support for new/revised syntaxes of
`PostgreSQL 15`__
__ https://www.postgresql.org/docs/15/release-15.html
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Target PostgreSQL 15, thanks to libpg_query `15-4.0.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/15-4.0.0
Version 4
#########
4.5 (unreleased)
~~~~~~~~~~~~~~~~
- Use `Cython 3.0.2`__
__ https://github.com/cython/cython/blob/master/CHANGES.rst#302-2023-08-27
4.4 (2023-08-24)
~~~~~~~~~~~~~~~~
- Fix issues `#129`__ and `#130`__ (merged from `version 3.18`__)
__ https://github.com/lelit/pglast/issues/129
__ https://github.com/lelit/pglast/issues/130
__ `3.18 (2023-08-24)`_
4.3 (2023-04-27)
~~~~~~~~~~~~~~~~
- Fix `serialization issue`__ when column's ``DEFAULT`` value is an expression
__ https://github.com/pganalyze/libpg_query/issues/188
4.2 (2023-02-27)
~~~~~~~~~~~~~~~~
- Handle special syntax required by ``SET TIME ZONE INTERVAL '-08:00' hour to minute``
- Fix mistype mapping of raw C "long" and "double" attributes, that were decorated with the
wrong Python type
4.1 (2022-12-19)
~~~~~~~~~~~~~~~~
- Fix serialization glitches introduced by “Avoid overly abundancy of parentheses in
expressions” (to be precise, by this__ commit)
__ https://github.com/lelit/pglast/commit/6cfe75eea80f9c9bec4ba467e7ec1ec0796020de
4.0 (2022-12-12)
~~~~~~~~~~~~~~~~
- Update libpg_query to final `14-3.0.0`__
__ https://github.com/pganalyze/libpg_query/releases/tag/14-3.0.0
4.0.dev0 (2022-11-24)
~~~~~~~~~~~~~~~~~~~~~
- Update libpg_query to `14-3.0.0`__
__ https://github.com/pganalyze/libpg_query/blob/14-latest/CHANGELOG.md#14-300---2022-11-17
- Avoid overly abundancy of parentheses in expressions
- Prefer ``SELECT a FROM b LIMIT ALL`` to ``... LIMIT NONE``
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Target PostgreSQL 14
- The wrapper classes used in previous versions, implemented in ``pglast.node``, are gone: now
everything works on top of the ``AST`` classes (`issue #80`__)
__ https://github.com/lelit/pglast/issues/80
- The ``Ancestor`` class is not iterable anymore: it was an internal implementation facility,
now moved to a ``_iter_members()`` method
Version 3
#########
3.18 (2023-08-24)
~~~~~~~~~~~~~~~~~
- Fix ``BooleanTest`` printer, enclosing expression within parens in more cases (`issue
#129`__)
__ https://github.com/lelit/pglast/issues/129
- Fix ``Constraint`` printer, avoiding repetition of "DEFERRABLE INITIALLY DEFERRED" on some
kind of constraints (`issue #130`__)
__ https://github.com/lelit/pglast/issues/130
3.17 (2022-11-04)
~~~~~~~~~~~~~~~~~
- Fix ``AlterSubscriptionStmt`` printer, handling "SET PUBLICATION" without options
3.16 (2022-11-03)
~~~~~~~~~~~~~~~~~
- Update libpg_query to `13-2.2.0`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-220---2022-11-02
3.15 (2022-10-17)
~~~~~~~~~~~~~~~~~
- Produce Python 3.11 wheels (`PR #108`__), thanks to ``cibuildwheel`` 2.11.1__ and to Bastien
Gandouet
__ https://github.com/lelit/pglast/pull/108
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2111
3.14 (2022-08-08)
~~~~~~~~~~~~~~~~~
- Harden the way ``Visitor`` handle modifications to the AST (`issue #107`__)
__ https://github.com/lelit/pglast/issues/107
3.13 (2022-06-29)
~~~~~~~~~~~~~~~~~
- Update libpg_query to `13-2.1.2`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-212---2022-06-28
3.12 (2022-06-19)
~~~~~~~~~~~~~~~~~
- Rewrite the implementation of the ``referenced_relations()`` function, that was flawed with
regard to CTEs handling (`issue #106`__), thanks to Michal Charemza for providing his own
version
__ https://github.com/lelit/pglast/issues/106
- Improve ``WithClause`` printer indentation
- Fix minor whitespace related issues in a few printer functions
3.11 (2022-05-29)
~~~~~~~~~~~~~~~~~
- Fix the ``Visitor`` class, it was ignoring nodes nested in sub-lists
- Reduce the size of the generated parser by factoring out common code into helper functions
3.10 (2022-05-11)
~~~~~~~~~~~~~~~~~
- Update libpg_query to `13-2.1.1`__ (`PR #102`__), thanks to James Guthrie
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-211---2022-05-03
__ https://github.com/lelit/pglast/pull/102
- Produce `musllinux`__ wheels, thanks to ``cibuildwheel`` `2.5.0`__ (:PEP:`656` was actually
introduced in `2.2.0`__)
__ https://peps.python.org/pep-0656/
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v250
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v220
3.9 (2022-02-24)
~~~~~~~~~~~~~~~~
- Fix bug handling node containing a ``location`` field, e.g. ``CreateTableSpaceStmt`` (`issue
#98`__)
__ https://github.com/lelit/pglast/issues/98
- Properly handle dereferenced array expression (`issue #99`__)
__ https://github.com/lelit/pglast/issues/99
- Avoid improper "floatification" of literal integers (`issue #100`__)
__ https://github.com/lelit/pglast/issues/100
3.8 (2021-12-28)
~~~~~~~~~~~~~~~~
- Fix glitch in the AST extractor tool (`issue #97`__)
__ https://github.com/lelit/pglast/issues/97
- Add Linux AArch64 wheel build support (`PR #95`__), thanks to odidev
__ https://github.com/lelit/pglast/pull/95
- Fix type mismatch when using ``--remove-pg_catalog-from-functions`` (`PR #93`__), thanks
to Boris Zentner
__ https://github.com/lelit/pglast/pull/93/
3.7 (2021-10-13)
~~~~~~~~~~~~~~~~
- Update libpg_query to `13-2.1.0`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-210---2021-10-12_
3.6 (2021-10-09)
~~~~~~~~~~~~~~~~
- Use latest libpg_query, to fix an error parsing ``PLpgSQL`` statements (`issue #88`__)
__ https://github.com/lelit/pglast/issues/88
3.5 (2021-09-26)
~~~~~~~~~~~~~~~~
- Forward the ``special_functions`` option to substream, when concatenating items
(`issue #89`__)
__ https://github.com/lelit/pglast/issues/89
- Fix representation of floating point numbers without decimal digits (`issue #91`__)
__ https://github.com/lelit/pglast/issues/91
- Produce Python 3.10 wheels, thanks to ``cibuildwheel`` 2.1.2
- Update libpg_query to `13-2.0.7`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-207---2021-07-16_
- New option ``--remove-pg_catalog-from-functions`` on the command line tool (`PR #90`__), thanks
to Boris Zentner
__ https://github.com/lelit/pglast/pull/90/
- Implement more *special functions* (`PR #92`__), thanks to Boris Zentner
__ https://github.com/lelit/pglast/pull/92/
3.4 (2021-08-21)
~~~~~~~~~~~~~~~~
- Fix another packaging issue, that prevented recompilation from the sdist ``.tar.gz`` (`issue
#86`__), thanks to Christopher Brichford
__ https://github.com/lelit/pglast/issues/82
3.3 (2021-07-04)
~~~~~~~~~~~~~~~~
- Update libpg_query to `13-2.0.6`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-206---2021-06-29_
3.2 (2021-06-25)
~~~~~~~~~~~~~~~~
- Effectively include libpg_query's vendored sources (`issue #82`__)
__ https://github.com/lelit/pglast/issues/82
3.1 (2021-06-25)
~~~~~~~~~~~~~~~~
- Fix packaging glitch (`issue #82`__)
__ https://github.com/lelit/pglast/issues/82
- Build wheels also for macOS
- Update libpg_query to `13-2.0.5`__
__ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-205---2021-06-24_
3.0 (2021-06-04)
~~~~~~~~~~~~~~~~
- Fix glitch in the ``RawStream``, avoiding spurious space after an open parenthesis
- Improve the ``Visitor`` class, to make it easier altering the original tree
- Properly handle nested lists in the serialization of AST Node
3.0.dev2 (2021-05-22)
~~~~~~~~~~~~~~~~~~~~~
- Fix bug in ``CreateStmt`` printer (`issue #79`__)
__ https://github.com/lelit/pglast/issues/79
- Make it possible to pass also concrete ``ast.Node``\ s to ``RawStream```
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- To reduce confusion, the ``printer`` module has been removed: print-specific stuff is now
directly exposed by the ``printers`` subpackage while serialization classes are now in the
new ``stream`` module
- The default value for the ``safety_belt`` option of the ``printify()`` function is now
``False``
3.0.dev1 (2021-05-16)
~~~~~~~~~~~~~~~~~~~~~
- Fix ``AT_SetIdentity``, ``AT_EnableReplicaTrig`` and ``AlterSubscriptionStmt`` printers
- Improve ``AlterTSConfigType`` and ``IntoClause`` printers
- New generic "visitor pattern" (`issue #51`__) exemplified by a new
``referenced_relations()`` function (`issue #66`__)
__ https://github.com/lelit/pglast/issues/51
__ https://github.com/lelit/pglast/issues/66
- Refine printing of SQL comments
- Implement ``AlterExtensionStmt`` printer
3.0.dev0 (2021-05-03)
~~~~~~~~~~~~~~~~~~~~~
- Expose the new ``pg_query_scan()`` function as ``parser.scan()``
- Expose the ``pg_query_parse()`` function as ``parser.parse_sql_json()``
- Expose the new ``pg_query_parse_protobuf()`` function as ``parser.parse_sql_protobuf()``
- Expose the new ``pg_query_deparse_protobuf()`` function as ``parser.deparse_protobuf()``
- Honor the ``catalogname`` of a ``RangeVar`` if present (`issue #71`__)
__ https://github.com/lelit/pglast/issues/71
- Cover almost all ``SQL`` statements, testing against the whole ``PostgreSQL`` `regression
suite`__ (`issue #68`__, `PR #72`__ and `PR #77`__), thanks to Ronan Dunklau and Hong Cheng
__ https://github.com/pganalyze/libpg_query/tree/13-latest/test/sql/postgres_regress_
__ https://github.com/lelit/pglast/issues/68
__ https://github.com/lelit/pglast/pull/72
__ https://github.com/lelit/pglast/pull/77
- New rudimentary support for the `preserve comments` feature (`issue #23`__)
__ https://github.com/lelit/pglast/issues/23
~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~
- Target PostgreSQL 13
- The ``pglast.parser`` module exposes all ``libpg_query`` entry points, even the new
``pg_query_deparse_protobuf()`` function that is basically equivalent to
``RawStream``\ -based printer
- The ``split()`` function is now based on the lower level ``pg_query_split_with_xxx()``
functions
- The ``parse_sql()`` function returns native Python objects, not a ``JSON`` string as before:
all PG *nodes* are now represented by subclasses of ``pglast.ast.Node``, without exception,
even ``Expr`` and ``Value`` are there. The latter impacts on ``pglast.node.Scalar``: for
example it now may contains a ``ast.Integer`` instance instead of a Python ``int``
- The ``pgpp --parse-tree`` output is a `pprint`__ represention of the ``AST``, not a ``JSON``
string as before
__ https://docs.python.org/3.9/library/pprint.html#pprint.pprint
- The ``ParseError`` exception does not expose the ``location`` as an instance member anymore,
although its still there, as the second argument (ie ``.args[1]``); furthermore, its value
now corresponds to the index in the original Unicode string, instead of the offset in the
``UTF-8`` representation passed to the underlying C function
Version 2
#########
2.0.dev3 (2021-02-20)
~~~~~~~~~~~~~~~~~~~~~
- Handle ``INCLUDE`` clause in ``IndexStmt`` (`PR #67`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/67
2.0.dev2 (2020-10-24)
~~~~~~~~~~~~~~~~~~~~~
- Merge new ``fingerprint`` functionality from ``v1`` (i.e. ``master``) branch
2.0.dev1 (2020-09-26)
~~~~~~~~~~~~~~~~~~~~~
- Require Python 3.6 or greater
- Handle ``ALTER TYPE .. RENAME VALUE`` in ``AlterEnumStmt`` (`PR #52`__), thanks to Ronan
Dunklau
__ https://github.com/lelit/pglast/pull/52
- Add support for Create / Alter / Drop PROCEDURE (`PR #48`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/48
- Use Ronan's fork__ of libpg_query, targeting PostgreSQL 12.1 (`PR #36`__)
__ https://github.com/rdunklau/libpg_query
__ https://github.com/lelit/pglast/pull/36
- Change get_postgresql_version() to return a ``(major, minor)`` tuple (`issue #38`__)
__ https://github.com/lelit/pglast/issues/38
- Handle ``ALTER TABLE ... ALTER COLUMN ... SET STORAGE ...``
- Handle PG12 materialized CTEs (`issue #57`)
- Support column numbers in ``ALTER INDEX`` (`PR #58`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/58
- Handle ``SET LOGGED`` and ``SET UNLOGGED`` in ``ALTER TABLE`` (`PR #59`__), thanks to Ronan
Dunklau
__ https://github.com/lelit/pglast/pull/59
- Handle ``ALTER TYPE ... RENAME`` (`PR #62`__), , thanks to Ronan
Dunklau
__ https://github.com/lelit/pglast/pull/62
Version 1
#########
1.18 (2021-06-01)
~~~~~~~~~~~~~~~~~
- Fix exclusion constraint printer (`issue #81`__)
__ https://github.com/lelit/pglast/issues/81
1.17 (2021-02-20)
~~~~~~~~~~~~~~~~~
- Fix the generic case in the ``RenameStmt`` printer
1.16 (2021-02-20)
~~~~~~~~~~~~~~~~~
- Promote to the *stable* state
- Move the job of building and uploading binary wheels from TravisCI to GitHub Actions
1.15 (2021-02-19)
~~~~~~~~~~~~~~~~~
- Fix ``IF EXISTS`` variant of ``RenameStmt`` printer (`PR #70`__), thanks to Jonathan
Mortensen
__ https://github.com/lelit/pglast/pull/70
- Update libpg_query to 10-1.0.5
1.14 (2020-10-24)
~~~~~~~~~~~~~~~~~
- Produce Python 3.9 wheels, thanks to ``cibuildwheel`` 1.6.3
- Expose the ``libpg_query``'s `fingerprint`__ functionality (`PR #64`__), thanks to Yiming
Wang
__ https://github.com/lfittl/libpg_query/wiki/Fingerprinting
__ https://github.com/lelit/pglast/pull/64
1.13 (2020-09-26)
~~~~~~~~~~~~~~~~~
- Handle ``SELECT FROM foo``
1.12 (2020-06-08)
~~~~~~~~~~~~~~~~~
- Double quote column names in the ``TYPE_FUNC_NAME_KEYWORDS`` set (`issue #55`__)
__ https://github.com/lelit/pglast/issues/55
- Possibly wrap ``SELECT`` in ``UNION``/``INTERSECT`` between parens, when needed
(`issue #55`__)
__ https://github.com/lelit/pglast/issues/55
1.11 (2020-05-08)
~~~~~~~~~~~~~~~~~
- Fix ``A_Expr`` printer, when ``lexpr`` is missing (`PR #54`__), thanks to Aiham
__ https://github.com/lelit/pglast/pull/54
- Support ``DISABLE ROW LEVEL SECURITY`` in ``AlterTableCmd`` (`PR #49`__), thanks to Ronan
Dunklau
__ https://github.com/lelit/pglast/pull/49
- Implement ``CreateOpClassStmt`` printer (`PR #47`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/47
1.10 (2020-01-25)
~~~~~~~~~~~~~~~~~
- Fix collation name printer (`PR #44`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/44
- Implement ``CreatePLangStmt`` printer (`PR #42`__), thanks to Bennie Swart
__ https://github.com/lelit/pglast/pull/42
- Fix privileges printer (`PR #41`__), thanks to Bennie Swart
__ https://github.com/lelit/pglast/pull/41
- Handle ``TRUNCATE`` event in ``CreateTrigStmt`` printer (`PR #40`__), thanks to Bennie Swart
__ https://github.com/lelit/pglast/pull/40
- Fix function body dollar quoting (`PR #39`__), thanks to Bennie Swart
__ https://github.com/lelit/pglast/pull/39
1.9 (2019-12-20)
~~~~~~~~~~~~~~~~
- Prettier ``INSERT`` representation
1.8 (2019-12-07)
~~~~~~~~~~~~~~~~
- Prettier ``CASE`` representation
- New option to emit a semicolon after the last statement (`issue #24`__)
__ https://github.com/lelit/pglast/issues/24
1.7 (2019-12-01)
~~~~~~~~~~~~~~~~
- Implement ``NotifyStmt`` printer
- Implement ``RuleStmt`` printer, thanks to Gavin M. Roy for his `PR #28`__
__ https://github.com/lelit/pglast/pull/28
- Fix ``RenameStmt``, properly handling object name
- Produce Python 3.8 wheels, thanks to `cibuildwheel`__ 1.0.0
__ https://github.com/joerick/cibuildwheel
- Support ``ALTER TABLE RENAME CONSTRAINT`` (`PR #35`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/35
1.6 (2019-09-04)
~~~~~~~~~~~~~~~~
- Fix issue with boolean expressions precedence (`issue #29`__)
__ https://github.com/lelit/pglast/issues/29
- Implement ``BitString`` printer
- Support ``LEAKPROOF`` option (`PR #31`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/31
- Support ``DEFERRABLE INITIALLY DEFERRED`` option (`PR #32`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/32
1.5 (2019-06-04)
~~~~~~~~~~~~~~~~
- Fix issue with ``RETURNS SETOF`` functions, a more general solution than the one proposed by
Ronan Dunklau (`PR #22`__)
__ https://github.com/lelit/pglast/pull/22
- Allow more than one empty line between statements (`PR #26`__), thanks to apnewberry
__ https://github.com/lelit/pglast/pull/26
1.4 (2019-04-06)
~~~~~~~~~~~~~~~~
- Fix wrap of trigger's WHEN expression (`issue #18`__)
__ https://github.com/lelit/pglast/issues/18
- Support for variadic functions (`PR #19`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/19
- Support ORDER / LIMIT / OFFSET for set operations (`PR #20`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/20
- Implement ``ConstraintsSetStmt`` and improve ``VariableSetStmt`` printers
1.3 (2019-03-28)
~~~~~~~~~~~~~~~~
- Support ``CROSS JOIN`` and timezone modifiers on time and timestamp datatypes (`PR #15`__),
thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/15
- Many new printers and several enhancements (`PR #14`__), thanks to Ronan Dunklau
__ https://github.com/lelit/pglast/pull/14
- Expose the package version as pglast.__version__ (`issue #12`__)
__ https://github.com/lelit/pglast/issues/12
1.2 (2019-02-13)
~~~~~~~~~~~~~~~~
- Implement new `split()` function (see `PR #10`__)
__ https://github.com/lelit/pglast/pull/10
- Implement ``BooleanTest`` printer (`issue #11`__)
__ https://github.com/lelit/pglast/issues/11
1.1 (2018-07-20)
~~~~~~~~~~~~~~~~
- No visible changes, but now PyPI carries binary wheels for Python 3.7.
1.0 (2018-06-16)
~~~~~~~~~~~~~~~~
.. important:: The name of the package has been changed from ``pg_query`` to ``pglast``, to
satisfy the request made by the author of ``libpg_query`` in `issue #9`__.
This affects both the main repository on GitHub, that from now on is
``https://github.com/lelit/pglast``, and the ReadTheDocs project that hosts the
documentation, ``http://pglast.readthedocs.io/en/latest/``.
I'm sorry for any inconvenience this may cause.
__ https://github.com/lelit/pglast/issues/9
0.28 (2018-06-06)
~~~~~~~~~~~~~~~~~
- Update libpg_query to 10-1.0.2
- Support the '?'-style parameter placeholder variant allowed by libpg_query (details__)
__ https://github.com/lfittl/libpg_query/issues/45
0.27 (2018-04-15)
~~~~~~~~~~~~~~~~~
- Prettier JOINs representation, aligning them with the starting relation
0.26 (2018-04-03)
~~~~~~~~~~~~~~~~~
- Fix cosmetic issue with ANY() and ALL()
0.25 (2018-03-31)
~~~~~~~~~~~~~~~~~
- Fix issue in the safety belt check performed by ``pgpp`` (`issue #4`__)
__ https://github.com/lelit/pglast/issues/4
0.24 (2018-03-02)
~~~~~~~~~~~~~~~~~
- Implement ``Null`` printer
0.23 (2017-12-28)
~~~~~~~~~~~~~~~~~
- Implement some other DDL statements printers
- New alternative style to print *comma-separated-values* lists, activated by a new
``--comma-at-eoln`` option on ``pgpp``
0.22 (2017-12-03)
~~~~~~~~~~~~~~~~~
- Implement ``TransactionStmt`` and almost all ``DROP xxx`` printers
0.21 (2017-11-22)
~~~~~~~~~~~~~~~~~
- Implement ``NamedArgExpr`` printer
- New alternative printers for a set of *special functions*, activated by a new
``--special-functions`` option on ``pgpp`` (`issue #2`__)
__ https://github.com/lelit/pglast/issues/2
0.20 (2017-11-21)
~~~~~~~~~~~~~~~~~
- Handle special de-reference (``A_Indirection``) cases
0.19 (2017-11-16)
~~~~~~~~~~~~~~~~~
- Fix serialization of column labels containing double quotes
- Fix corner issues surfaced implementing some more DDL statement printers
0.18 (2017-11-14)
~~~~~~~~~~~~~~~~~
- Fix endless loop due to sloppy conversion of command line option
- Install the command line tool as ``pgpp``
0.17 (2017-11-12)
~~~~~~~~~~~~~~~~~
- Rename printers.sql to printers.dml (**backward incompatibility**)
- List printer functions in the documentation, referencing the definition of related node type
- Fix inconsistent spacing in JOIN condition inside a nested expression
- Fix representation of unbound arrays
- Fix representation of ``interval`` data type
- Initial support for DDL statements
- Fix representation of string literals containing single quotes
0.16 (2017-10-31)
~~~~~~~~~~~~~~~~~
- Update libpg_query to 10-1.0.0
0.15 (2017-10-12)
~~~~~~~~~~~~~~~~~
- Fix indentation of boolean expressions in SELECT's targets (`issue #3`__)
__ https://github.com/lelit/pglast/issues/3
0.14 (2017-10-09)
~~~~~~~~~~~~~~~~~
- Update to latest libpg_query's 10-latest branch, targeting PostgreSQL 10.0 final
0.13 (2017-09-17)
~~~~~~~~~~~~~~~~~
- Fix representation of subselects requiring surrounding parens
0.12 (2017-08-22)
~~~~~~~~~~~~~~~~~
- New option ``--version`` on the command line tool
- Better enums documentation
- Release the GIL while calling libpg_query functions
0.11 (2017-08-11)
~~~~~~~~~~~~~~~~~
- Nicer indentation for JOINs, making OUTER JOINs stand out
- Minor tweaks to lists rendering, with less spurious whitespaces
- New option ``--no-location`` on the command line tool
0.10 (2017-08-11)
~~~~~~~~~~~~~~~~~
- Support Python 3.4 and Python 3.5 as well as Python 3.6
0.9 (2017-08-10)
~~~~~~~~~~~~~~~~
- Fix spacing before the $ character
- Handle type modifiers
- New option ``--plpgsql`` on the command line tool, just for fun
0.8 (2017-08-10)
~~~~~~~~~~~~~~~~
- Add enums subpackages to the documentation with references to their related headers
- New ``compact_lists_margin`` option to produce a more compact representation when possible
(see `issue #1`__)
__ https://github.com/lelit/pglast/issues/1
0.7 (2017-08-10)
~~~~~~~~~~~~~~~~
- Fix sdist including the Sphinx documentation
0.6 (2017-08-10)
~~~~~~~~~~~~~~~~
- New option ``--parse-tree`` on the command line tool to show just the parse tree
- Sphinx documentation, available online
0.5 (2017-08-09)
~~~~~~~~~~~~~~~~
- Handle some more cases when a name must be double-quoted
- Complete the serialization of the WindowDef node, handling its frame options
0.4 (2017-08-09)
~~~~~~~~~~~~~~~~
- Expose the actual PostgreSQL version the underlying libpg_query libray is built on thru a new
``get_postgresql_version()`` function
- New option `safety_belt` for the ``prettify()`` function, to protect the innocents
- Handle serialization of ``CoalesceExpr`` and ``MinMaxExpr``
0.3 (2017-08-07)
~~~~~~~~~~~~~~~~
- Handle serialization of ``ParamRef`` nodes
- Expose a ``prettify()`` helper function
0.2 (2017-08-07)
~~~~~~~~~~~~~~~~
- Test coverage at 99%
- First attempt at automatic wheel upload to PyPI, let's see...
0.1 (2017-08-07)
~~~~~~~~~~~~~~~~
- First release ("Hi daddy!", as my soul would tag it)
Raw data
{
"_id": null,
"home_page": "https://github.com/lelit/pglast",
"name": "pglast",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "postgresql parser sql prettifier",
"author": "Lele Gaifax",
"author_email": "lele@metapensiero.it",
"download_url": "https://files.pythonhosted.org/packages/ad/f9/68dbcf71c525370253d694584df0ec2814834d787eefd82d0ffd8d482166/pglast-7.1.tar.gz",
"platform": null,
"description": ".. -*- coding: utf-8 -*-\n.. :Project: pglast \u2014 PostgreSQL Languages AST\n.. :Created: mer 02 ago 2017 14:49:24 CEST\n.. :Author: Lele Gaifax <lele@metapensiero.it>\n.. :License: GNU General Public License version 3 or later\n.. :Copyright: \u00a9 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Lele Gaifax\n..\n\n========\n pglast\n========\n\nPostgreSQL Languages AST and statements prettifier\n==================================================\n\n:Author: Lele Gaifax\n:Contact: lele@metapensiero.it\n:License: `GNU General Public License version 3 or later`__\n:Status: |build| |doc| |codecov|\n:Version: `7`__\n\n__ https://www.gnu.org/licenses/gpl.html\n__ https://pglast.readthedocs.io/en/v7/development.html#history\n\n.. |build| image:: https://github.com/lelit/pglast/actions/workflows/ci.yml/badge.svg?branch=v7\n :target: https://github.com/lelit/pglast/actions/workflows/ci.yml\n :alt: Build status\n.. |doc| image:: https://readthedocs.org/projects/pglast/badge/?version=v7\n :target: https://readthedocs.org/projects/pglast/builds/\n :alt: Documentation status\n.. |codecov| image:: https://codecov.io/gh/lelit/pglast/branch/v3/graph/badge.svg?token=A90D8tWnft\n :target: https://codecov.io/gh/lelit/pglast\n :alt: Test coverage status\n\nThis is a Python 3 module that exposes the *parse tree* of a PostgreSQL__ statement (extracted\nby the almost standard PG parser repackaged as a standalone static library by `libpg_query`__)\nas set of interconnected *nodes*, usually called an *abstract syntax tree*.\n\n__ https://www.postgresql.org/\n__ https://github.com/pganalyze/libpg_query\n\nSee a `more detailed introduction`__ in the documentation_.\n\n__ https://pglast.readthedocs.io/en/v7/introduction.html\n\n\nInstallation\n------------\n\nAs usual, the easiest way is with pip::\n\n $ pip install pglast\n\nAlternatively you can clone the repository::\n\n $ git clone https://github.com/lelit/pglast.git --recursive\n\nand install from there::\n\n $ pip install ./pglast\n\n\nDevelopment\n-----------\n\nThere is a set of *makefiles* implementing the most common operations, a ``make help`` will\nshow a brief table of contents. A comprehensive test suite, based on pytest__, covers__ nearly\n99% of the source lines.\n\n__ https://docs.pytest.org/en/latest/\n__ https://codecov.io/gh/lelit/pglast/branch/v7/\n\n\nDocumentation\n-------------\n\nLatest documentation is hosted by `Read the Docs`__ at https://pglast.readthedocs.io/en/v7\n\n__ https://readthedocs.org/\n\n\n.. -*- coding: utf-8 -*-\n\n.. _changes:\n\nChanges\n-------\n\nVersion 7\n#########\n\n7.1 (2024-11-26)\n~~~~~~~~~~~~~~~~\n\n- Merge with `Version 6`_\n\n\n7.0 (2024-11-13)\n~~~~~~~~~~~~~~~~\n\n- No visible changes\n\n\n7.0.dev1 (2024-11-01)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Upgrade libpg_query to `17-6.0.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/17-6.0.0\n\n\n7.0.dev0 (2024-10-31)\n~~~~~~~~~~~~~~~~~~~~~\n\n- No visible changes with respect to v6, apart from the support for new/revised syntaxes of\n `PostgreSQL 17`__\n\n __ https://www.postgresql.org/docs/17/release-17.html\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Target PostgreSQL 17, thanks to libpg_query `17-latest-dev`__\n\n __ https://github.com/pganalyze/libpg_query/tree/17-latest-dev\n\n- Require Python >= 3.9\n\n\nVersion 6\n#########\n\n6.11 (2024-11-26)\n~~~~~~~~~~~~~~~~~\n\n- Remove spurious trailing space in the ``ConstrTypePrinter.CONSTR_IDENTITY`` and the\n ``Constraint`` printers (issue `#165`__)\n\n __ https://github.com/lelit/pglast/issues/165\n\n\n6.10 (2024-11-01)\n~~~~~~~~~~~~~~~~~\n\n- Upgrade libpg_query to `16-5.2.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/16-5.2.0\n\n\n6.9 (2024-10-31)\n~~~~~~~~~~~~~~~~\n\n- Fix regression introduced by recent modification to the ``CommonTableExpr`` printer that\n impacted on the ``RawStream`` renderer (issue `#163`__)\n\n __ https://github.com/lelit/pglast/issues/163\n\n- Expose the ``RawStream`` renderer in the CLI tool with a new ``--normalize`` option\n\n\n6.8 (2024-10-29)\n~~~~~~~~~~~~~~~~\n\n- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to\n `plpgsql` (issue `#156`__)\n\n __ https://github.com/pganalyze/libpg_query/commit/06670290ad39e61805ecacbc6267df61f6ae3d91\n __ https://github.com/lelit/pglast/issues/156\n\n\n6.7 (2024-10-28)\n~~~~~~~~~~~~~~~~\n\n- Generate wheels on PyPI using Python 3.13.0 final release, thanks to cibuildwheel `2.21.3`__\n\n __ https://cibuildwheel.pypa.io/en/stable/changelog/#v2213\n\n- Improve ``CommonTableExpr`` printer, reducing horizontal space waste\n\n\n6.6 (2024-09-30)\n~~~~~~~~~~~~~~~~\n\n- Make recently introduced doctest related to issue #88 work on different Python versions\n\n\n6.5 (2024-09-29)\n~~~~~~~~~~~~~~~~\n\n- Fix glitch when using the ``--preserve-comments`` flag (issue `#159`__)\n\n __ https://github.com/lelit/pglast/issues/159\n\n- Finally add a note to ``parse_plpgsql()`` documentation mentioning how it differs from\n ``parse_sql()`` (issue `#88`__)\n\n __ https://github.com/lelit/pglast/issues/88\n\n\n6.4 (2024-09-28)\n~~~~~~~~~~~~~~~~\n\n- Fix issue with deserialization of deeply nested ASTs (issue `#153`__)\n\n __ https://github.com/lelit/pglast/issues/153\n\n- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to\n `plpgsql` (issue `#154`__)\n\n __ https://github.com/pganalyze/libpg_query/commit/680f5ee67c6fdae497c8d1edfadd02b9b8eac74f\n __ https://github.com/lelit/pglast/issues/154\n\n\n6.3 (2024-08-06)\n~~~~~~~~~~~~~~~~\n\n- Fix ``SEQUENCE NAME`` in ``create_seq_stmt_def_elem`` (`PR #151`__), thanks to orages\n\n __ https://github.com/lelit/pglast/pull/151\n\n- Generate wheels on PyPI using Python 3.13.0rc1 release, thanks to cibuildwheel `2.20.0`__\n\n __ https://cibuildwheel.pypa.io/en/stable/changelog/#v2200\n\n- Use `Cython 3.0.11`__\n\n __ https://github.com/cython/cython/blob/master/CHANGES.rst#3011-2024-08-05\n\n\n6.2 (2024-02-01)\n~~~~~~~~~~~~~~~~\n\n- Almost no-op release to fix issue `144`__, producing correct wheels for macOS arm64\n\n __ https://github.com/lelit/pglast/issues/144\n\n6.1 (2024-01-22)\n~~~~~~~~~~~~~~~~\n\n- Inherit fix for issue `143`__ from `version 5`_\n\n __ https://github.com/lelit/pglast/issues/143\n\n\n6.0 (2024-01-22)\n~~~~~~~~~~~~~~~~\n\n- Produce wheels for macOS arm64\n\n\n6.0.dev2 (2024-01-21)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Enable compilation on Windows and produce related 32bit and 64bit wheels (issue `#7`__)\n\n __ https://github.com/lelit/pglast/issues/7\n\n\n6.0.dev1 (2024-01-11)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Re-enable Linux 32bit wheels, thanks to libpg_query to `16-5.1.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/16-5.1.0\n\n\n6.0.dev0 (2023-12-29)\n~~~~~~~~~~~~~~~~~~~~~\n\n- No visible changes with respect to v5, apart from the support for new/revised syntaxes of\n `PostgreSQL 16`__\n\n __ https://www.postgresql.org/docs/16/release-16.html\n\n- Do not build binary wheels for Python 3.8\n\n- Skip compilation on Linux 32bit (see `this comment`__ for details)\n\n __ https://github.com/pganalyze/libpg_query/pull/225#issuecomment-1864145089\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Target PostgreSQL 16, thanks to libpg_query `16-5.0.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/16-5.0.0\n\n\nVersion 5\n#########\n\n5.9 (2024-01-22)\n~~~~~~~~~~~~~~~~\n\n- Fix issue `143`__, affecting ``AlterOwnerStmt`` and ``RenameStmt`` printers\n\n __ https://github.com/lelit/pglast/issues/143\n\n\n5.8 (2024-01-11)\n~~~~~~~~~~~~~~~~\n\n- Fix issue `#142`__, a glitch that affected 32-bit systems\n\n __ https://github.com/lelit/pglast/issues/142\n\n\n5.7 (2023-12-23)\n~~~~~~~~~~~~~~~~\n\n- Use `Cython 3.0.7`__\n\n __ https://github.com/cython/cython/blob/master/CHANGES.rst#307-2023-12-19\n\n- Update libpg_query to `15-4.2.4`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.4\n\n\n5.6 (2023-12-07)\n~~~~~~~~~~~~~~~~\n\n- Fix issue `#138`__, a defect that hindered the creation of AST nodes that act as *markers*,\n (currently ``A_Star`` and ``CheckPointStmt``), that do not carry any other information\n\n __ https://github.com/lelit/pglast/issues/138\n\n- Use `Cython 3.0.6`__\n\n __ https://github.com/cython/cython/blob/master/CHANGES.rst#306-2023-11-26\n\n- Handle the ``ENABLE TRIGGER ALL`` in ``AlterTableCmd``\n\n- Fix issue `#136`__, a regression introduced by \u201cAvoid overly abundancy of parentheses in\n expressions\u201d\n\n __ https://github.com/lelit/pglast/issues/136\n\n\n5.5 (2023-10-07)\n~~~~~~~~~~~~~~~~\n\n- Use `Cython 3.0.3`__\n\n __ https://github.com/cython/cython/blob/master/CHANGES.rst#303-2023-10-05\n\n- Produce wheels using final Python 3.12 release, thanks to ``cibuildwheel`` `2.16.2`__\n\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2162\n\n\n5.4 (2023-08-24)\n~~~~~~~~~~~~~~~~\n\n- Improve documentation, adding ``parser.Displacements``, ``parser.scan`` and ``parser.split``\n examples (`issue #128`__)\n\n __ https://github.com/lelit/pglast/issues/128\n\n- Fix issues `#129`__ and `#130`__ (merged from `version 4.4`__)\n\n __ https://github.com/lelit/pglast/issues/129\n __ https://github.com/lelit/pglast/issues/130\n __ `4.4 (2023-08-24)`_\n\n\n5.3 (2023-08-05)\n~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `15-4.2.3`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.3\n\n\n5.2 (2023-05-20)\n~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `15-4.2.1`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.1\n\n\n5.1 (2023-02-28)\n~~~~~~~~~~~~~~~~\n\n- Merge `version 4.2`__ changes\n\n __ `4.2 (2023-02-27)`_\n\n\n5.0 (2023-02-19)\n~~~~~~~~~~~~~~~~\n\n- No changes\n\n\n5.0.dev1 (2023-02-11)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `15-4.2.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.0\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Change the type of the ``ast.Float`` value from ``Decimal`` to ``str``\n\n Using a ``Decimal`` implies potential differences in the representation of floating numbers,\n and already caused issues (`#91`__ and `#100`__) in the past, making it impossible to render,\n say, ``SELECT 0.0e1``, due to the fact that ``Decimal('0.0e1')`` resolves to\n ``Decimal('0')``.\n\n __ https://github.com/lelit/pglast/issues/91\n __ https://github.com/lelit/pglast/issues/100\n\n\n5.0.dev0 (2022-12-19)\n~~~~~~~~~~~~~~~~~~~~~\n\n- No visible changes with respect to v4, apart from the support for new/revised syntaxes of\n `PostgreSQL 15`__\n\n __ https://www.postgresql.org/docs/15/release-15.html\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Target PostgreSQL 15, thanks to libpg_query `15-4.0.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.0.0\n\n\nVersion 4\n#########\n\n4.5 (unreleased)\n~~~~~~~~~~~~~~~~\n\n- Use `Cython 3.0.2`__\n\n __ https://github.com/cython/cython/blob/master/CHANGES.rst#302-2023-08-27\n\n\n4.4 (2023-08-24)\n~~~~~~~~~~~~~~~~\n\n- Fix issues `#129`__ and `#130`__ (merged from `version 3.18`__)\n\n __ https://github.com/lelit/pglast/issues/129\n __ https://github.com/lelit/pglast/issues/130\n __ `3.18 (2023-08-24)`_\n\n\n4.3 (2023-04-27)\n~~~~~~~~~~~~~~~~\n\n- Fix `serialization issue`__ when column's ``DEFAULT`` value is an expression\n\n __ https://github.com/pganalyze/libpg_query/issues/188\n\n\n4.2 (2023-02-27)\n~~~~~~~~~~~~~~~~\n\n- Handle special syntax required by ``SET TIME ZONE INTERVAL '-08:00' hour to minute``\n\n- Fix mistype mapping of raw C \"long\" and \"double\" attributes, that were decorated with the\n wrong Python type\n\n\n4.1 (2022-12-19)\n~~~~~~~~~~~~~~~~\n\n- Fix serialization glitches introduced by \u201cAvoid overly abundancy of parentheses in\n expressions\u201d (to be precise, by this__ commit)\n\n __ https://github.com/lelit/pglast/commit/6cfe75eea80f9c9bec4ba467e7ec1ec0796020de\n\n\n4.0 (2022-12-12)\n~~~~~~~~~~~~~~~~\n\n- Update libpg_query to final `14-3.0.0`__\n\n __ https://github.com/pganalyze/libpg_query/releases/tag/14-3.0.0\n\n\n4.0.dev0 (2022-11-24)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `14-3.0.0`__\n\n __ https://github.com/pganalyze/libpg_query/blob/14-latest/CHANGELOG.md#14-300---2022-11-17\n\n- Avoid overly abundancy of parentheses in expressions\n\n- Prefer ``SELECT a FROM b LIMIT ALL`` to ``... LIMIT NONE``\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Target PostgreSQL 14\n\n- The wrapper classes used in previous versions, implemented in ``pglast.node``, are gone: now\n everything works on top of the ``AST`` classes (`issue #80`__)\n\n __ https://github.com/lelit/pglast/issues/80\n\n- The ``Ancestor`` class is not iterable anymore: it was an internal implementation facility,\n now moved to a ``_iter_members()`` method\n\n\nVersion 3\n#########\n\n3.18 (2023-08-24)\n~~~~~~~~~~~~~~~~~\n\n- Fix ``BooleanTest`` printer, enclosing expression within parens in more cases (`issue\n #129`__)\n\n __ https://github.com/lelit/pglast/issues/129\n\n- Fix ``Constraint`` printer, avoiding repetition of \"DEFERRABLE INITIALLY DEFERRED\" on some\n kind of constraints (`issue #130`__)\n\n __ https://github.com/lelit/pglast/issues/130\n\n\n3.17 (2022-11-04)\n~~~~~~~~~~~~~~~~~\n\n- Fix ``AlterSubscriptionStmt`` printer, handling \"SET PUBLICATION\" without options\n\n\n3.16 (2022-11-03)\n~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `13-2.2.0`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-220---2022-11-02\n\n\n3.15 (2022-10-17)\n~~~~~~~~~~~~~~~~~\n\n- Produce Python 3.11 wheels (`PR #108`__), thanks to ``cibuildwheel`` 2.11.1__ and to Bastien\n Gandouet\n\n __ https://github.com/lelit/pglast/pull/108\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2111\n\n\n3.14 (2022-08-08)\n~~~~~~~~~~~~~~~~~\n\n- Harden the way ``Visitor`` handle modifications to the AST (`issue #107`__)\n\n __ https://github.com/lelit/pglast/issues/107\n\n\n3.13 (2022-06-29)\n~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `13-2.1.2`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-212---2022-06-28\n\n\n3.12 (2022-06-19)\n~~~~~~~~~~~~~~~~~\n\n- Rewrite the implementation of the ``referenced_relations()`` function, that was flawed with\n regard to CTEs handling (`issue #106`__), thanks to Michal Charemza for providing his own\n version\n\n __ https://github.com/lelit/pglast/issues/106\n\n- Improve ``WithClause`` printer indentation\n\n- Fix minor whitespace related issues in a few printer functions\n\n\n3.11 (2022-05-29)\n~~~~~~~~~~~~~~~~~\n\n- Fix the ``Visitor`` class, it was ignoring nodes nested in sub-lists\n\n- Reduce the size of the generated parser by factoring out common code into helper functions\n\n\n3.10 (2022-05-11)\n~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `13-2.1.1`__ (`PR #102`__), thanks to James Guthrie\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-211---2022-05-03\n __ https://github.com/lelit/pglast/pull/102\n\n- Produce `musllinux`__ wheels, thanks to ``cibuildwheel`` `2.5.0`__ (:PEP:`656` was actually\n introduced in `2.2.0`__)\n\n __ https://peps.python.org/pep-0656/\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v250\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v220\n\n\n3.9 (2022-02-24)\n~~~~~~~~~~~~~~~~\n\n- Fix bug handling node containing a ``location`` field, e.g. ``CreateTableSpaceStmt`` (`issue\n #98`__)\n\n __ https://github.com/lelit/pglast/issues/98\n\n- Properly handle dereferenced array expression (`issue #99`__)\n\n __ https://github.com/lelit/pglast/issues/99\n\n- Avoid improper \"floatification\" of literal integers (`issue #100`__)\n\n __ https://github.com/lelit/pglast/issues/100\n\n\n3.8 (2021-12-28)\n~~~~~~~~~~~~~~~~\n\n- Fix glitch in the AST extractor tool (`issue #97`__)\n\n __ https://github.com/lelit/pglast/issues/97\n\n- Add Linux AArch64 wheel build support (`PR #95`__), thanks to odidev\n\n __ https://github.com/lelit/pglast/pull/95\n\n- Fix type mismatch when using ``--remove-pg_catalog-from-functions`` (`PR #93`__), thanks\n to Boris Zentner\n\n __ https://github.com/lelit/pglast/pull/93/\n\n\n3.7 (2021-10-13)\n~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `13-2.1.0`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-210---2021-10-12_\n\n\n3.6 (2021-10-09)\n~~~~~~~~~~~~~~~~\n\n- Use latest libpg_query, to fix an error parsing ``PLpgSQL`` statements (`issue #88`__)\n\n __ https://github.com/lelit/pglast/issues/88\n\n\n3.5 (2021-09-26)\n~~~~~~~~~~~~~~~~\n\n- Forward the ``special_functions`` option to substream, when concatenating items\n (`issue #89`__)\n\n __ https://github.com/lelit/pglast/issues/89\n\n- Fix representation of floating point numbers without decimal digits (`issue #91`__)\n\n __ https://github.com/lelit/pglast/issues/91\n\n- Produce Python 3.10 wheels, thanks to ``cibuildwheel`` 2.1.2\n\n- Update libpg_query to `13-2.0.7`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-207---2021-07-16_\n\n- New option ``--remove-pg_catalog-from-functions`` on the command line tool (`PR #90`__), thanks\n to Boris Zentner\n\n __ https://github.com/lelit/pglast/pull/90/\n\n- Implement more *special functions* (`PR #92`__), thanks to Boris Zentner\n\n __ https://github.com/lelit/pglast/pull/92/\n\n\n3.4 (2021-08-21)\n~~~~~~~~~~~~~~~~\n\n- Fix another packaging issue, that prevented recompilation from the sdist ``.tar.gz`` (`issue\n #86`__), thanks to Christopher Brichford\n\n __ https://github.com/lelit/pglast/issues/82\n\n\n3.3 (2021-07-04)\n~~~~~~~~~~~~~~~~\n\n- Update libpg_query to `13-2.0.6`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-206---2021-06-29_\n\n\n3.2 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n- Effectively include libpg_query's vendored sources (`issue #82`__)\n\n __ https://github.com/lelit/pglast/issues/82\n\n\n3.1 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n- Fix packaging glitch (`issue #82`__)\n\n __ https://github.com/lelit/pglast/issues/82\n\n- Build wheels also for macOS\n\n- Update libpg_query to `13-2.0.5`__\n\n __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-205---2021-06-24_\n\n\n3.0 (2021-06-04)\n~~~~~~~~~~~~~~~~\n\n- Fix glitch in the ``RawStream``, avoiding spurious space after an open parenthesis\n\n- Improve the ``Visitor`` class, to make it easier altering the original tree\n\n- Properly handle nested lists in the serialization of AST Node\n\n\n3.0.dev2 (2021-05-22)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Fix bug in ``CreateStmt`` printer (`issue #79`__)\n\n __ https://github.com/lelit/pglast/issues/79\n\n- Make it possible to pass also concrete ``ast.Node``\\ s to ``RawStream```\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- To reduce confusion, the ``printer`` module has been removed: print-specific stuff is now\n directly exposed by the ``printers`` subpackage while serialization classes are now in the\n new ``stream`` module\n\n- The default value for the ``safety_belt`` option of the ``printify()`` function is now\n ``False``\n\n\n3.0.dev1 (2021-05-16)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Fix ``AT_SetIdentity``, ``AT_EnableReplicaTrig`` and ``AlterSubscriptionStmt`` printers\n\n- Improve ``AlterTSConfigType`` and ``IntoClause`` printers\n\n- New generic \"visitor pattern\" (`issue #51`__) exemplified by a new\n ``referenced_relations()`` function (`issue #66`__)\n\n __ https://github.com/lelit/pglast/issues/51\n __ https://github.com/lelit/pglast/issues/66\n\n- Refine printing of SQL comments\n\n- Implement ``AlterExtensionStmt`` printer\n\n\n3.0.dev0 (2021-05-03)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Expose the new ``pg_query_scan()`` function as ``parser.scan()``\n\n- Expose the ``pg_query_parse()`` function as ``parser.parse_sql_json()``\n\n- Expose the new ``pg_query_parse_protobuf()`` function as ``parser.parse_sql_protobuf()``\n\n- Expose the new ``pg_query_deparse_protobuf()`` function as ``parser.deparse_protobuf()``\n\n- Honor the ``catalogname`` of a ``RangeVar`` if present (`issue #71`__)\n\n __ https://github.com/lelit/pglast/issues/71\n\n- Cover almost all ``SQL`` statements, testing against the whole ``PostgreSQL`` `regression\n suite`__ (`issue #68`__, `PR #72`__ and `PR #77`__), thanks to Ronan Dunklau and Hong Cheng\n\n __ https://github.com/pganalyze/libpg_query/tree/13-latest/test/sql/postgres_regress_\n __ https://github.com/lelit/pglast/issues/68\n __ https://github.com/lelit/pglast/pull/72\n __ https://github.com/lelit/pglast/pull/77\n\n- New rudimentary support for the `preserve comments` feature (`issue #23`__)\n\n __ https://github.com/lelit/pglast/issues/23\n\n~~~~~~~~~~~~~~~~~~~~\n**Breaking changes**\n~~~~~~~~~~~~~~~~~~~~\n\n- Target PostgreSQL 13\n\n- The ``pglast.parser`` module exposes all ``libpg_query`` entry points, even the new\n ``pg_query_deparse_protobuf()`` function that is basically equivalent to\n ``RawStream``\\ -based printer\n\n- The ``split()`` function is now based on the lower level ``pg_query_split_with_xxx()``\n functions\n\n- The ``parse_sql()`` function returns native Python objects, not a ``JSON`` string as before:\n all PG *nodes* are now represented by subclasses of ``pglast.ast.Node``, without exception,\n even ``Expr`` and ``Value`` are there. The latter impacts on ``pglast.node.Scalar``: for\n example it now may contains a ``ast.Integer`` instance instead of a Python ``int``\n\n- The ``pgpp --parse-tree`` output is a `pprint`__ represention of the ``AST``, not a ``JSON``\n string as before\n\n __ https://docs.python.org/3.9/library/pprint.html#pprint.pprint\n\n- The ``ParseError`` exception does not expose the ``location`` as an instance member anymore,\n although its still there, as the second argument (ie ``.args[1]``); furthermore, its value\n now corresponds to the index in the original Unicode string, instead of the offset in the\n ``UTF-8`` representation passed to the underlying C function\n\n\nVersion 2\n#########\n\n2.0.dev3 (2021-02-20)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Handle ``INCLUDE`` clause in ``IndexStmt`` (`PR #67`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/67\n\n\n2.0.dev2 (2020-10-24)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Merge new ``fingerprint`` functionality from ``v1`` (i.e. ``master``) branch\n\n\n2.0.dev1 (2020-09-26)\n~~~~~~~~~~~~~~~~~~~~~\n\n- Require Python 3.6 or greater\n\n- Handle ``ALTER TYPE .. RENAME VALUE`` in ``AlterEnumStmt`` (`PR #52`__), thanks to Ronan\n Dunklau\n\n __ https://github.com/lelit/pglast/pull/52\n\n- Add support for Create / Alter / Drop PROCEDURE (`PR #48`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/48\n\n- Use Ronan's fork__ of libpg_query, targeting PostgreSQL 12.1 (`PR #36`__)\n\n __ https://github.com/rdunklau/libpg_query\n __ https://github.com/lelit/pglast/pull/36\n\n- Change get_postgresql_version() to return a ``(major, minor)`` tuple (`issue #38`__)\n\n __ https://github.com/lelit/pglast/issues/38\n\n- Handle ``ALTER TABLE ... ALTER COLUMN ... SET STORAGE ...``\n\n- Handle PG12 materialized CTEs (`issue #57`)\n\n- Support column numbers in ``ALTER INDEX`` (`PR #58`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/58\n\n- Handle ``SET LOGGED`` and ``SET UNLOGGED`` in ``ALTER TABLE`` (`PR #59`__), thanks to Ronan\n Dunklau\n\n __ https://github.com/lelit/pglast/pull/59\n\n- Handle ``ALTER TYPE ... RENAME`` (`PR #62`__), , thanks to Ronan\n Dunklau\n\n __ https://github.com/lelit/pglast/pull/62\n\n\nVersion 1\n#########\n\n1.18 (2021-06-01)\n~~~~~~~~~~~~~~~~~\n\n- Fix exclusion constraint printer (`issue #81`__)\n\n __ https://github.com/lelit/pglast/issues/81\n\n\n1.17 (2021-02-20)\n~~~~~~~~~~~~~~~~~\n\n- Fix the generic case in the ``RenameStmt`` printer\n\n\n1.16 (2021-02-20)\n~~~~~~~~~~~~~~~~~\n\n- Promote to the *stable* state\n\n- Move the job of building and uploading binary wheels from TravisCI to GitHub Actions\n\n\n1.15 (2021-02-19)\n~~~~~~~~~~~~~~~~~\n\n- Fix ``IF EXISTS`` variant of ``RenameStmt`` printer (`PR #70`__), thanks to Jonathan\n Mortensen\n\n __ https://github.com/lelit/pglast/pull/70\n\n- Update libpg_query to 10-1.0.5\n\n\n1.14 (2020-10-24)\n~~~~~~~~~~~~~~~~~\n\n- Produce Python 3.9 wheels, thanks to ``cibuildwheel`` 1.6.3\n\n- Expose the ``libpg_query``'s `fingerprint`__ functionality (`PR #64`__), thanks to Yiming\n Wang\n\n __ https://github.com/lfittl/libpg_query/wiki/Fingerprinting\n __ https://github.com/lelit/pglast/pull/64\n\n\n1.13 (2020-09-26)\n~~~~~~~~~~~~~~~~~\n\n- Handle ``SELECT FROM foo``\n\n\n1.12 (2020-06-08)\n~~~~~~~~~~~~~~~~~\n\n- Double quote column names in the ``TYPE_FUNC_NAME_KEYWORDS`` set (`issue #55`__)\n\n __ https://github.com/lelit/pglast/issues/55\n\n- Possibly wrap ``SELECT`` in ``UNION``/``INTERSECT`` between parens, when needed\n (`issue #55`__)\n\n __ https://github.com/lelit/pglast/issues/55\n\n\n1.11 (2020-05-08)\n~~~~~~~~~~~~~~~~~\n\n- Fix ``A_Expr`` printer, when ``lexpr`` is missing (`PR #54`__), thanks to Aiham\n\n __ https://github.com/lelit/pglast/pull/54\n\n- Support ``DISABLE ROW LEVEL SECURITY`` in ``AlterTableCmd`` (`PR #49`__), thanks to Ronan\n Dunklau\n\n __ https://github.com/lelit/pglast/pull/49\n\n- Implement ``CreateOpClassStmt`` printer (`PR #47`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/47\n\n\n1.10 (2020-01-25)\n~~~~~~~~~~~~~~~~~\n\n- Fix collation name printer (`PR #44`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/44\n\n- Implement ``CreatePLangStmt`` printer (`PR #42`__), thanks to Bennie Swart\n\n __ https://github.com/lelit/pglast/pull/42\n\n- Fix privileges printer (`PR #41`__), thanks to Bennie Swart\n\n __ https://github.com/lelit/pglast/pull/41\n\n- Handle ``TRUNCATE`` event in ``CreateTrigStmt`` printer (`PR #40`__), thanks to Bennie Swart\n\n __ https://github.com/lelit/pglast/pull/40\n\n- Fix function body dollar quoting (`PR #39`__), thanks to Bennie Swart\n\n __ https://github.com/lelit/pglast/pull/39\n\n\n1.9 (2019-12-20)\n~~~~~~~~~~~~~~~~\n\n- Prettier ``INSERT`` representation\n\n\n1.8 (2019-12-07)\n~~~~~~~~~~~~~~~~\n\n- Prettier ``CASE`` representation\n\n- New option to emit a semicolon after the last statement (`issue #24`__)\n\n __ https://github.com/lelit/pglast/issues/24\n\n\n1.7 (2019-12-01)\n~~~~~~~~~~~~~~~~\n\n- Implement ``NotifyStmt`` printer\n\n- Implement ``RuleStmt`` printer, thanks to Gavin M. Roy for his `PR #28`__\n\n __ https://github.com/lelit/pglast/pull/28\n\n- Fix ``RenameStmt``, properly handling object name\n\n- Produce Python 3.8 wheels, thanks to `cibuildwheel`__ 1.0.0\n\n __ https://github.com/joerick/cibuildwheel\n\n- Support ``ALTER TABLE RENAME CONSTRAINT`` (`PR #35`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/35\n\n\n1.6 (2019-09-04)\n~~~~~~~~~~~~~~~~\n\n- Fix issue with boolean expressions precedence (`issue #29`__)\n\n __ https://github.com/lelit/pglast/issues/29\n\n- Implement ``BitString`` printer\n\n- Support ``LEAKPROOF`` option (`PR #31`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/31\n\n- Support ``DEFERRABLE INITIALLY DEFERRED`` option (`PR #32`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/32\n\n\n1.5 (2019-06-04)\n~~~~~~~~~~~~~~~~\n\n- Fix issue with ``RETURNS SETOF`` functions, a more general solution than the one proposed by\n Ronan Dunklau (`PR #22`__)\n\n __ https://github.com/lelit/pglast/pull/22\n\n- Allow more than one empty line between statements (`PR #26`__), thanks to apnewberry\n\n __ https://github.com/lelit/pglast/pull/26\n\n\n1.4 (2019-04-06)\n~~~~~~~~~~~~~~~~\n\n- Fix wrap of trigger's WHEN expression (`issue #18`__)\n\n __ https://github.com/lelit/pglast/issues/18\n\n- Support for variadic functions (`PR #19`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/19\n\n- Support ORDER / LIMIT / OFFSET for set operations (`PR #20`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/20\n\n- Implement ``ConstraintsSetStmt`` and improve ``VariableSetStmt`` printers\n\n\n1.3 (2019-03-28)\n~~~~~~~~~~~~~~~~\n\n- Support ``CROSS JOIN`` and timezone modifiers on time and timestamp datatypes (`PR #15`__),\n thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/15\n\n- Many new printers and several enhancements (`PR #14`__), thanks to Ronan Dunklau\n\n __ https://github.com/lelit/pglast/pull/14\n\n- Expose the package version as pglast.__version__ (`issue #12`__)\n\n __ https://github.com/lelit/pglast/issues/12\n\n\n1.2 (2019-02-13)\n~~~~~~~~~~~~~~~~\n\n- Implement new `split()` function (see `PR #10`__)\n\n __ https://github.com/lelit/pglast/pull/10\n\n- Implement ``BooleanTest`` printer (`issue #11`__)\n\n __ https://github.com/lelit/pglast/issues/11\n\n\n1.1 (2018-07-20)\n~~~~~~~~~~~~~~~~\n\n- No visible changes, but now PyPI carries binary wheels for Python 3.7.\n\n\n1.0 (2018-06-16)\n~~~~~~~~~~~~~~~~\n\n.. important:: The name of the package has been changed from ``pg_query`` to ``pglast``, to\n satisfy the request made by the author of ``libpg_query`` in `issue #9`__.\n\n This affects both the main repository on GitHub, that from now on is\n ``https://github.com/lelit/pglast``, and the ReadTheDocs project that hosts the\n documentation, ``http://pglast.readthedocs.io/en/latest/``.\n\n I'm sorry for any inconvenience this may cause.\n\n__ https://github.com/lelit/pglast/issues/9\n\n\n0.28 (2018-06-06)\n~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to 10-1.0.2\n\n- Support the '?'-style parameter placeholder variant allowed by libpg_query (details__)\n\n__ https://github.com/lfittl/libpg_query/issues/45\n\n\n0.27 (2018-04-15)\n~~~~~~~~~~~~~~~~~\n\n- Prettier JOINs representation, aligning them with the starting relation\n\n\n0.26 (2018-04-03)\n~~~~~~~~~~~~~~~~~\n\n- Fix cosmetic issue with ANY() and ALL()\n\n\n0.25 (2018-03-31)\n~~~~~~~~~~~~~~~~~\n\n- Fix issue in the safety belt check performed by ``pgpp`` (`issue #4`__)\n\n__ https://github.com/lelit/pglast/issues/4\n\n\n0.24 (2018-03-02)\n~~~~~~~~~~~~~~~~~\n\n- Implement ``Null`` printer\n\n\n0.23 (2017-12-28)\n~~~~~~~~~~~~~~~~~\n\n- Implement some other DDL statements printers\n\n- New alternative style to print *comma-separated-values* lists, activated by a new\n ``--comma-at-eoln`` option on ``pgpp``\n\n\n0.22 (2017-12-03)\n~~~~~~~~~~~~~~~~~\n\n- Implement ``TransactionStmt`` and almost all ``DROP xxx`` printers\n\n\n0.21 (2017-11-22)\n~~~~~~~~~~~~~~~~~\n\n- Implement ``NamedArgExpr`` printer\n\n- New alternative printers for a set of *special functions*, activated by a new\n ``--special-functions`` option on ``pgpp`` (`issue #2`__)\n\n__ https://github.com/lelit/pglast/issues/2\n\n\n0.20 (2017-11-21)\n~~~~~~~~~~~~~~~~~\n\n- Handle special de-reference (``A_Indirection``) cases\n\n\n0.19 (2017-11-16)\n~~~~~~~~~~~~~~~~~\n\n- Fix serialization of column labels containing double quotes\n\n- Fix corner issues surfaced implementing some more DDL statement printers\n\n\n0.18 (2017-11-14)\n~~~~~~~~~~~~~~~~~\n\n- Fix endless loop due to sloppy conversion of command line option\n\n- Install the command line tool as ``pgpp``\n\n\n0.17 (2017-11-12)\n~~~~~~~~~~~~~~~~~\n\n- Rename printers.sql to printers.dml (**backward incompatibility**)\n\n- List printer functions in the documentation, referencing the definition of related node type\n\n- Fix inconsistent spacing in JOIN condition inside a nested expression\n\n- Fix representation of unbound arrays\n\n- Fix representation of ``interval`` data type\n\n- Initial support for DDL statements\n\n- Fix representation of string literals containing single quotes\n\n\n0.16 (2017-10-31)\n~~~~~~~~~~~~~~~~~\n\n- Update libpg_query to 10-1.0.0\n\n\n0.15 (2017-10-12)\n~~~~~~~~~~~~~~~~~\n\n- Fix indentation of boolean expressions in SELECT's targets (`issue #3`__)\n\n__ https://github.com/lelit/pglast/issues/3\n\n\n0.14 (2017-10-09)\n~~~~~~~~~~~~~~~~~\n\n- Update to latest libpg_query's 10-latest branch, targeting PostgreSQL 10.0 final\n\n\n0.13 (2017-09-17)\n~~~~~~~~~~~~~~~~~\n\n- Fix representation of subselects requiring surrounding parens\n\n\n0.12 (2017-08-22)\n~~~~~~~~~~~~~~~~~\n\n- New option ``--version`` on the command line tool\n\n- Better enums documentation\n\n- Release the GIL while calling libpg_query functions\n\n\n0.11 (2017-08-11)\n~~~~~~~~~~~~~~~~~\n\n- Nicer indentation for JOINs, making OUTER JOINs stand out\n\n- Minor tweaks to lists rendering, with less spurious whitespaces\n\n- New option ``--no-location`` on the command line tool\n\n\n0.10 (2017-08-11)\n~~~~~~~~~~~~~~~~~\n\n- Support Python 3.4 and Python 3.5 as well as Python 3.6\n\n\n0.9 (2017-08-10)\n~~~~~~~~~~~~~~~~\n\n- Fix spacing before the $ character\n\n- Handle type modifiers\n\n- New option ``--plpgsql`` on the command line tool, just for fun\n\n\n0.8 (2017-08-10)\n~~~~~~~~~~~~~~~~\n\n- Add enums subpackages to the documentation with references to their related headers\n\n- New ``compact_lists_margin`` option to produce a more compact representation when possible\n (see `issue #1`__)\n\n__ https://github.com/lelit/pglast/issues/1\n\n\n0.7 (2017-08-10)\n~~~~~~~~~~~~~~~~\n\n- Fix sdist including the Sphinx documentation\n\n\n0.6 (2017-08-10)\n~~~~~~~~~~~~~~~~\n\n- New option ``--parse-tree`` on the command line tool to show just the parse tree\n\n- Sphinx documentation, available online\n\n\n0.5 (2017-08-09)\n~~~~~~~~~~~~~~~~\n\n- Handle some more cases when a name must be double-quoted\n\n- Complete the serialization of the WindowDef node, handling its frame options\n\n\n0.4 (2017-08-09)\n~~~~~~~~~~~~~~~~\n\n- Expose the actual PostgreSQL version the underlying libpg_query libray is built on thru a new\n ``get_postgresql_version()`` function\n\n- New option `safety_belt` for the ``prettify()`` function, to protect the innocents\n\n- Handle serialization of ``CoalesceExpr`` and ``MinMaxExpr``\n\n\n0.3 (2017-08-07)\n~~~~~~~~~~~~~~~~\n\n- Handle serialization of ``ParamRef`` nodes\n\n- Expose a ``prettify()`` helper function\n\n\n0.2 (2017-08-07)\n~~~~~~~~~~~~~~~~\n\n- Test coverage at 99%\n\n- First attempt at automatic wheel upload to PyPI, let's see...\n\n\n0.1 (2017-08-07)\n~~~~~~~~~~~~~~~~\n\n- First release (\"Hi daddy!\", as my soul would tag it)\n",
"bugtrack_url": null,
"license": "GPLv3+",
"summary": "PostgreSQL Languages AST and statements prettifier",
"version": "7.1",
"project_urls": {
"Homepage": "https://github.com/lelit/pglast"
},
"split_keywords": [
"postgresql",
"parser",
"sql",
"prettifier"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0c88c9b085461e3d6f0accb71c425fdafea18d6c32868e9b6cd9b20400ab8142",
"md5": "5fd4a0ae21a8d7e7f107d1e0bfd61024",
"sha256": "3c1763d13d6f6e4a63a2f13d497c858c19a4f0c4ab02ff20418443250bea7a8e"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "5fd4a0ae21a8d7e7f107d1e0bfd61024",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1143379,
"upload_time": "2024-11-26T08:16:00",
"upload_time_iso_8601": "2024-11-26T08:16:00.288555Z",
"url": "https://files.pythonhosted.org/packages/0c/88/c9b085461e3d6f0accb71c425fdafea18d6c32868e9b6cd9b20400ab8142/pglast-7.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3126194d1c87edf2f07907e347436129cdfbf900606fdef0a061af3622b6cfc5",
"md5": "f7f6266c65bdcb339ca6043f134789ec",
"sha256": "6c06629e7a00e85b01d33c204c23df2d1df2151640b6becc469a7123ca5753db"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f7f6266c65bdcb339ca6043f134789ec",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1079431,
"upload_time": "2024-11-26T08:16:03",
"upload_time_iso_8601": "2024-11-26T08:16:03.367958Z",
"url": "https://files.pythonhosted.org/packages/31/26/194d1c87edf2f07907e347436129cdfbf900606fdef0a061af3622b6cfc5/pglast-7.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d76716fe5be2ec032bcf78da6d9c9324f1d92823e1c9407a86c6e64fb65ba080",
"md5": "1d619e100a5921b2c38c218f12275fa5",
"sha256": "fcf377f0a644ad3970d2d84d43481fd712247ceecd219339b6bc1b08fe170bd8"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "1d619e100a5921b2c38c218f12275fa5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5435077,
"upload_time": "2024-11-26T08:16:05",
"upload_time_iso_8601": "2024-11-26T08:16:05.729667Z",
"url": "https://files.pythonhosted.org/packages/d7/67/16fe5be2ec032bcf78da6d9c9324f1d92823e1c9407a86c6e64fb65ba080/pglast-7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b70a94a708944f3eea1ffbce250e60a00239655e7f7d0a3add44b0c18486a0f6",
"md5": "3091d905667e8157a3be6339a87e42e5",
"sha256": "22e8588ed2833746759ab4d0075d92583d666d09015df1ed4204fc53b6474898"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3091d905667e8157a3be6339a87e42e5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5480379,
"upload_time": "2024-11-26T08:16:08",
"upload_time_iso_8601": "2024-11-26T08:16:08.343307Z",
"url": "https://files.pythonhosted.org/packages/b7/0a/94a708944f3eea1ffbce250e60a00239655e7f7d0a3add44b0c18486a0f6/pglast-7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d11f9a12bf601d94fbcf93c2b718438df12a4856ef4b1160b3b83d2fc1fd8c73",
"md5": "4b87272772129a4c586940c53f2be977",
"sha256": "87dcc5897229d8ef50cfec656c2a12767552387f633721519215c2ece52717be"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "4b87272772129a4c586940c53f2be977",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5318978,
"upload_time": "2024-11-26T08:16:10",
"upload_time_iso_8601": "2024-11-26T08:16:10.408733Z",
"url": "https://files.pythonhosted.org/packages/d1/1f/9a12bf601d94fbcf93c2b718438df12a4856ef4b1160b3b83d2fc1fd8c73/pglast-7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "65c810d201aaa2e1b091dcefa1777966fdf234ede557fc1e763326b76cd77b4a",
"md5": "796a01b3e9d71c11cfe60e12332fba7c",
"sha256": "05bbea236a311ecbc3a20cbcb9858ad5b7f677b0cd3d8ac42603d88ae20df18c"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "796a01b3e9d71c11cfe60e12332fba7c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5244064,
"upload_time": "2024-11-26T08:16:12",
"upload_time_iso_8601": "2024-11-26T08:16:12.150818Z",
"url": "https://files.pythonhosted.org/packages/65/c8/10d201aaa2e1b091dcefa1777966fdf234ede557fc1e763326b76cd77b4a/pglast-7.1-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "02ced0ed6a6d43181517c22fb7d81e9810cd16860c03b9aba7e083a193b3eb33",
"md5": "89ca08d4bd8376da851bb6bb9103b0f4",
"sha256": "f2512974d901890a651a659bd9ffc916ebfdb3b6c3f52e40f7af6489aa363dbc"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "89ca08d4bd8376da851bb6bb9103b0f4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5246259,
"upload_time": "2024-11-26T08:16:14",
"upload_time_iso_8601": "2024-11-26T08:16:14.050786Z",
"url": "https://files.pythonhosted.org/packages/02/ce/d0ed6a6d43181517c22fb7d81e9810cd16860c03b9aba7e083a193b3eb33/pglast-7.1-cp310-cp310-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d9fa8c006475130dd72abce4baa52b2276a2e1bdc992b2e113d233282cf0beb",
"md5": "10544732509be773a42aaaa1e9b78a74",
"sha256": "abe413070a1403e4ee5ccf45a461d284bdfc65c609526749f038aa362effe19b"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "10544732509be773a42aaaa1e9b78a74",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 5371394,
"upload_time": "2024-11-26T08:16:15",
"upload_time_iso_8601": "2024-11-26T08:16:15.728411Z",
"url": "https://files.pythonhosted.org/packages/6d/9f/a8c006475130dd72abce4baa52b2276a2e1bdc992b2e113d233282cf0beb/pglast-7.1-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ac06802caba2bcb7fabb38235e862dd40e766e5dfbc23ce4d86f95f5f61263f1",
"md5": "af748829b3a3c32b0ef7bf4a0c340c36",
"sha256": "236e0ea71e423c5896d081d1feca89dccf733033de8d2cad6715ea58712be042"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "af748829b3a3c32b0ef7bf4a0c340c36",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1015833,
"upload_time": "2024-11-26T08:16:17",
"upload_time_iso_8601": "2024-11-26T08:16:17.972166Z",
"url": "https://files.pythonhosted.org/packages/ac/06/802caba2bcb7fabb38235e862dd40e766e5dfbc23ce4d86f95f5f61263f1/pglast-7.1-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a067cd4d068fbf7edad8fd86a5ce348a5e3562fff8b60cf6790920a4d6d55e6",
"md5": "a6ac50995e36bec034e161e1bb73f8b1",
"sha256": "b302f67c45cc68247ca63518298776dabff26d3102da423630ca675f85dc3972"
},
"downloads": -1,
"filename": "pglast-7.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a6ac50995e36bec034e161e1bb73f8b1",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1077327,
"upload_time": "2024-11-26T08:16:19",
"upload_time_iso_8601": "2024-11-26T08:16:19.951692Z",
"url": "https://files.pythonhosted.org/packages/1a/06/7cd4d068fbf7edad8fd86a5ce348a5e3562fff8b60cf6790920a4d6d55e6/pglast-7.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "51b8e9b5aa540b0a46637b84a705def48e0f471b7854dcb31d6d6ad1c2c34ae3",
"md5": "0b93bdabfac504a0fc780d847a446141",
"sha256": "01c7c8afa8b964804ec3afd086e56741a84c08eeeca794f3eecd001cc78598c7"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "0b93bdabfac504a0fc780d847a446141",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1143755,
"upload_time": "2024-11-26T08:16:21",
"upload_time_iso_8601": "2024-11-26T08:16:21.510897Z",
"url": "https://files.pythonhosted.org/packages/51/b8/e9b5aa540b0a46637b84a705def48e0f471b7854dcb31d6d6ad1c2c34ae3/pglast-7.1-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9245ce2d0f858c99e4c2134cf94de238395f3b2510b8881fe68150eab5eec4ef",
"md5": "75efff6d13ec146df42bcd95dd377ec2",
"sha256": "b0154d61785994f76f22ac61e9d5293600a9ecb71031d51da76900fa67ff4b1f"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "75efff6d13ec146df42bcd95dd377ec2",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1079587,
"upload_time": "2024-11-26T08:16:23",
"upload_time_iso_8601": "2024-11-26T08:16:23.159049Z",
"url": "https://files.pythonhosted.org/packages/92/45/ce2d0f858c99e4c2134cf94de238395f3b2510b8881fe68150eab5eec4ef/pglast-7.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "903645cb8c8f808af769dd0ed53d030f49c2e8d6ff383675e1d25cccc0805371",
"md5": "046e3c12dc01549a1b1fb0441d4ed1ec",
"sha256": "4088bd267718179041e33e1a0ce29a74ab3bf5988f2a9f849c31c26c4d3e3cd3"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "046e3c12dc01549a1b1fb0441d4ed1ec",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5500603,
"upload_time": "2024-11-26T08:16:25",
"upload_time_iso_8601": "2024-11-26T08:16:25.275394Z",
"url": "https://files.pythonhosted.org/packages/90/36/45cb8c8f808af769dd0ed53d030f49c2e8d6ff383675e1d25cccc0805371/pglast-7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dd10233997a0f36ee6a16496c825d8a776c2624415b8f26a5f9a20d5a5bf80c7",
"md5": "d1b7aa78d98fba7a158236a30f460cf4",
"sha256": "e1e5565ed31dd6fa2eaaecf04c872dcf757d3a7e6507f33440405b7d18d5b627"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d1b7aa78d98fba7a158236a30f460cf4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5539144,
"upload_time": "2024-11-26T08:16:27",
"upload_time_iso_8601": "2024-11-26T08:16:27.844577Z",
"url": "https://files.pythonhosted.org/packages/dd/10/233997a0f36ee6a16496c825d8a776c2624415b8f26a5f9a20d5a5bf80c7/pglast-7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dc622ec213e806c2024ac55cf2600c101c160e9885338cddc7df03b9eca4708a",
"md5": "0210742d2e3e9dee543db87bbab5286d",
"sha256": "657792fc993fb3209fd326d904ca701d874af13805ee920ce396876c5c59fa0c"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "0210742d2e3e9dee543db87bbab5286d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5394603,
"upload_time": "2024-11-26T08:16:30",
"upload_time_iso_8601": "2024-11-26T08:16:30.222338Z",
"url": "https://files.pythonhosted.org/packages/dc/62/2ec213e806c2024ac55cf2600c101c160e9885338cddc7df03b9eca4708a/pglast-7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "47f62940552b216bd8f806a9f02e3339b9406fc2fa0c066888033d66cb761e65",
"md5": "513dc267d61ea1e5b96a67c942deaf4c",
"sha256": "ec62051713dc14f6b4d174e5a52007bea2a900608925ceed0532764837660914"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "513dc267d61ea1e5b96a67c942deaf4c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5300671,
"upload_time": "2024-11-26T08:16:31",
"upload_time_iso_8601": "2024-11-26T08:16:31.939701Z",
"url": "https://files.pythonhosted.org/packages/47/f6/2940552b216bd8f806a9f02e3339b9406fc2fa0c066888033d66cb761e65/pglast-7.1-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dcc1ae46a616c9744e3afa06b5bb30847497f894f7240ef733bb447aa3ea36b7",
"md5": "dbb4a833d916d19e1e887b4c8179648b",
"sha256": "bf83a2f7f5f0034e484f4e5a2e56923e5856531df7d07721c434c03e7adc5417"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "dbb4a833d916d19e1e887b4c8179648b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5278527,
"upload_time": "2024-11-26T08:16:33",
"upload_time_iso_8601": "2024-11-26T08:16:33.680846Z",
"url": "https://files.pythonhosted.org/packages/dc/c1/ae46a616c9744e3afa06b5bb30847497f894f7240ef733bb447aa3ea36b7/pglast-7.1-cp311-cp311-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0ba8bb59c4957ac12213b253d522802c03dc5b0772bc0595b9e6a89fd84c5de3",
"md5": "e772f368f8f3afdf78464ab7ff1da596",
"sha256": "3f0f56af87f35581d3db629ff28cbbec9b969437d555a98dba65c6a4e4db7870"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e772f368f8f3afdf78464ab7ff1da596",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 5414876,
"upload_time": "2024-11-26T08:16:37",
"upload_time_iso_8601": "2024-11-26T08:16:37.160032Z",
"url": "https://files.pythonhosted.org/packages/0b/a8/bb59c4957ac12213b253d522802c03dc5b0772bc0595b9e6a89fd84c5de3/pglast-7.1-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b0de6fdca5a7184805f3ed8948477e6aade7000eddbf934d461edd9dd6a4625f",
"md5": "aff4e85a0dd8b19037613f2286091f3b",
"sha256": "1f1c7b6221ce505a97e520a02c6d1f513c4f89bf3da45d6944809add5f45799d"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "aff4e85a0dd8b19037613f2286091f3b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1015854,
"upload_time": "2024-11-26T08:16:39",
"upload_time_iso_8601": "2024-11-26T08:16:39.439124Z",
"url": "https://files.pythonhosted.org/packages/b0/de/6fdca5a7184805f3ed8948477e6aade7000eddbf934d461edd9dd6a4625f/pglast-7.1-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9997cec8a178a6d371c6d4cf589db0c637df0f2d8bf080502f4793c8be7f9266",
"md5": "29c5df89ba2b165dad073c7331dacbee",
"sha256": "9cf687113bdec3e1a008f259b2ff1c8b3bcf6b94b9a2276a6b2dd647370c2d4f"
},
"downloads": -1,
"filename": "pglast-7.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "29c5df89ba2b165dad073c7331dacbee",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1077867,
"upload_time": "2024-11-26T08:16:40",
"upload_time_iso_8601": "2024-11-26T08:16:40.891136Z",
"url": "https://files.pythonhosted.org/packages/99/97/cec8a178a6d371c6d4cf589db0c637df0f2d8bf080502f4793c8be7f9266/pglast-7.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "382099bc832b7e138ac61033518516205b03d125d3b599c381483bbaeb0c7cd5",
"md5": "85c4f719e8d2a9b1efe5956b97b0f264",
"sha256": "59a475dac555a00ebef446fec6612c784459a6f27fcd70a29c0c51e1540514c8"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "85c4f719e8d2a9b1efe5956b97b0f264",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1145594,
"upload_time": "2024-11-26T08:16:42",
"upload_time_iso_8601": "2024-11-26T08:16:42.573443Z",
"url": "https://files.pythonhosted.org/packages/38/20/99bc832b7e138ac61033518516205b03d125d3b599c381483bbaeb0c7cd5/pglast-7.1-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "feb2bf1f79f988aa98e140922772b833b384939c00fc9bda3acbfe41c7dde5e2",
"md5": "44e5c96adf8c860899b24210a08906e7",
"sha256": "65d69821d286760471ea0382e2434a332f6a56a2e4569b05f635203f40db6c4d"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "44e5c96adf8c860899b24210a08906e7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1082529,
"upload_time": "2024-11-26T08:16:44",
"upload_time_iso_8601": "2024-11-26T08:16:44.713070Z",
"url": "https://files.pythonhosted.org/packages/fe/b2/bf1f79f988aa98e140922772b833b384939c00fc9bda3acbfe41c7dde5e2/pglast-7.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e5825e7c7a17d0cf4910f7f35ee29f0d69588c8bb0e9bb945387a97295b6096d",
"md5": "db7531839fae2ea4041821a675b5c52f",
"sha256": "204eaddcb1f0173e8af6264eb98c5c391d62839cf56c2ddae62cd940fbc5b6d3"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "db7531839fae2ea4041821a675b5c52f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5546605,
"upload_time": "2024-11-26T08:16:46",
"upload_time_iso_8601": "2024-11-26T08:16:46.346136Z",
"url": "https://files.pythonhosted.org/packages/e5/82/5e7c7a17d0cf4910f7f35ee29f0d69588c8bb0e9bb945387a97295b6096d/pglast-7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0a5911db7a1db8e883fd7c4f8c99c703e2ff3bfb9f1071869c32ab2a0ac5345",
"md5": "104655415e6c375b2a37b6229e973f0c",
"sha256": "dd99d926156352415903a3feec90225a5ad3323ecb1fc03681fba8e5c920493a"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "104655415e6c375b2a37b6229e973f0c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5641857,
"upload_time": "2024-11-26T08:16:47",
"upload_time_iso_8601": "2024-11-26T08:16:47.964973Z",
"url": "https://files.pythonhosted.org/packages/f0/a5/911db7a1db8e883fd7c4f8c99c703e2ff3bfb9f1071869c32ab2a0ac5345/pglast-7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8cb26274211cf110dbaa6bfd164786ca9ec4188d5ba6037ebac037f108e16e66",
"md5": "181ea0a8aeb5d67afd42ace4720a88a8",
"sha256": "6e53758075e0113d1e1edc8c7cf00e2ca7bd9b22760e5bfcb5705f31e95f1ab1"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "181ea0a8aeb5d67afd42ace4720a88a8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5413478,
"upload_time": "2024-11-26T08:16:49",
"upload_time_iso_8601": "2024-11-26T08:16:49.842385Z",
"url": "https://files.pythonhosted.org/packages/8c/b2/6274211cf110dbaa6bfd164786ca9ec4188d5ba6037ebac037f108e16e66/pglast-7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8985e8b8daea554a81014c847720f5c6507fe21818e67f4b8495b32f45b9b6be",
"md5": "e86389ab05495b8b74ffe3f9d68e3218",
"sha256": "479252c406de0489b51e868b8d08a5684b73d972a5b2c6ee21c677ca0070f819"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "e86389ab05495b8b74ffe3f9d68e3218",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5306968,
"upload_time": "2024-11-26T08:16:51",
"upload_time_iso_8601": "2024-11-26T08:16:51.611066Z",
"url": "https://files.pythonhosted.org/packages/89/85/e8b8daea554a81014c847720f5c6507fe21818e67f4b8495b32f45b9b6be/pglast-7.1-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "13e8b9231a08695649dc5d937e8a0f3893fdbd66a67c3e79cabdf0b541e0e987",
"md5": "ee250ddde9c575cc1db018d7a38b627f",
"sha256": "e779ae3e971089e047bb657f8008587d6abfde31aec5241ca3376aeee8be4df2"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "ee250ddde9c575cc1db018d7a38b627f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5253994,
"upload_time": "2024-11-26T08:16:53",
"upload_time_iso_8601": "2024-11-26T08:16:53.735043Z",
"url": "https://files.pythonhosted.org/packages/13/e8/b9231a08695649dc5d937e8a0f3893fdbd66a67c3e79cabdf0b541e0e987/pglast-7.1-cp312-cp312-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7d17dbea5f1f0ff61b357841a50e10b96fca9479997cf1e911278008eb5d69f4",
"md5": "57dcb9566bb4b373689aa1a7a4e0102b",
"sha256": "e3a6b1aab96c177a8c01722b745be9734f066b8aa953988bca9439d41b395f2b"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "57dcb9566bb4b373689aa1a7a4e0102b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 5432715,
"upload_time": "2024-11-26T08:16:55",
"upload_time_iso_8601": "2024-11-26T08:16:55.745006Z",
"url": "https://files.pythonhosted.org/packages/7d/17/dbea5f1f0ff61b357841a50e10b96fca9479997cf1e911278008eb5d69f4/pglast-7.1-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6f66da3299c222a9768bdc4de3b8ce1f7dc0b70a482ab40d44bb369b9004e59b",
"md5": "b4aed6dad51762624b4b0eb058d4257b",
"sha256": "3118f9cc2b02c4db6451d6eacd885927075d8c8805abf02aa08ff8078dbb68c7"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "b4aed6dad51762624b4b0eb058d4257b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1009813,
"upload_time": "2024-11-26T08:16:57",
"upload_time_iso_8601": "2024-11-26T08:16:57.425981Z",
"url": "https://files.pythonhosted.org/packages/6f/66/da3299c222a9768bdc4de3b8ce1f7dc0b70a482ab40d44bb369b9004e59b/pglast-7.1-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "73fae2b9f90380b03f389d1f5be3788b6b666b95c7850df8f6928e6137ce75e8",
"md5": "5c652d6e5fe962bb098194d30057f3e5",
"sha256": "6e4a5f7857fceb64dcc2b1b5940a1d33a52bdad6ead050d7903080b4e915902e"
},
"downloads": -1,
"filename": "pglast-7.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "5c652d6e5fe962bb098194d30057f3e5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1054106,
"upload_time": "2024-11-26T08:16:58",
"upload_time_iso_8601": "2024-11-26T08:16:58.900478Z",
"url": "https://files.pythonhosted.org/packages/73/fa/e2b9f90380b03f389d1f5be3788b6b666b95c7850df8f6928e6137ce75e8/pglast-7.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "333d08b6fafa70aa01936de29d7fdbad95ed7ba5a33fe6af1ffd2ee52d972b7a",
"md5": "39dc0763ca455402ab3ce0e9cca8abdf",
"sha256": "f5be8b9166a04eaf5cc2b81b9f9e4ba7d3a39f6aea3a8164f8db08ecfb0461c5"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "39dc0763ca455402ab3ce0e9cca8abdf",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1139863,
"upload_time": "2024-11-26T08:17:00",
"upload_time_iso_8601": "2024-11-26T08:17:00.371073Z",
"url": "https://files.pythonhosted.org/packages/33/3d/08b6fafa70aa01936de29d7fdbad95ed7ba5a33fe6af1ffd2ee52d972b7a/pglast-7.1-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "47b816aa9cb6a503bf53648d809bbbd3f72381e03bd77cd4c9e56c6ff795cb51",
"md5": "b9cbead578adf45dc08af6ab4887bd42",
"sha256": "44b16c40c6bc0219f635bc98e06574bc4615de624370816b2d579065e0d150a7"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b9cbead578adf45dc08af6ab4887bd42",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1078765,
"upload_time": "2024-11-26T08:17:01",
"upload_time_iso_8601": "2024-11-26T08:17:01.915281Z",
"url": "https://files.pythonhosted.org/packages/47/b8/16aa9cb6a503bf53648d809bbbd3f72381e03bd77cd4c9e56c6ff795cb51/pglast-7.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7db98e28cde20cead1f6ae2dfa2a2da2c3a61b81192039fc9357f1bfc9a3e665",
"md5": "0ed849d3233e1345cafbb70b490a5e7a",
"sha256": "6b4026cc7e071647bb4814b04f801319959dfcf3ad100c649206c74ea0a22d97"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "0ed849d3233e1345cafbb70b490a5e7a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5548899,
"upload_time": "2024-11-26T08:17:03",
"upload_time_iso_8601": "2024-11-26T08:17:03.564310Z",
"url": "https://files.pythonhosted.org/packages/7d/b9/8e28cde20cead1f6ae2dfa2a2da2c3a61b81192039fc9357f1bfc9a3e665/pglast-7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f4925a06cb3d84e5f662e13ce921fc65f6178972f48693c4dc96c709c99b086f",
"md5": "99afaf5e09a05daf11b4271ad647ca51",
"sha256": "fbd23fd1aead9e5089e9417e60b98bbc51f39e432b000a69a2e32464dd73a563"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "99afaf5e09a05daf11b4271ad647ca51",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5641913,
"upload_time": "2024-11-26T08:17:05",
"upload_time_iso_8601": "2024-11-26T08:17:05.387473Z",
"url": "https://files.pythonhosted.org/packages/f4/92/5a06cb3d84e5f662e13ce921fc65f6178972f48693c4dc96c709c99b086f/pglast-7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "84bf683a48d33110f973b84103a33a616edfa71ef35b9c291a5193fd29c0a2f7",
"md5": "6472e95efe295dec50985a95dbcae42f",
"sha256": "d40488b718938a885706ad2f2962c0180190b8263f5598c4a2f0209d9d27e8a3"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "6472e95efe295dec50985a95dbcae42f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5414780,
"upload_time": "2024-11-26T08:17:07",
"upload_time_iso_8601": "2024-11-26T08:17:07.338353Z",
"url": "https://files.pythonhosted.org/packages/84/bf/683a48d33110f973b84103a33a616edfa71ef35b9c291a5193fd29c0a2f7/pglast-7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9aa29c7822514c28de23862d204419192d45ea5e7ba8b40609cf9078c88cd199",
"md5": "3ca00f3e7795335d57db0679e285e82f",
"sha256": "ba611cd0dfdef365419b82ae7eafe9a008906a6a36cd445b2f256b9ba764c20c"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "3ca00f3e7795335d57db0679e285e82f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5309845,
"upload_time": "2024-11-26T08:17:09",
"upload_time_iso_8601": "2024-11-26T08:17:09.292737Z",
"url": "https://files.pythonhosted.org/packages/9a/a2/9c7822514c28de23862d204419192d45ea5e7ba8b40609cf9078c88cd199/pglast-7.1-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b088842dd50560f1b4860a4bd1932e4eb477e00d0c94d74814162c3e08e7ab77",
"md5": "cd031eedb881d4489cddda52d8a353e1",
"sha256": "38656c992b784ac9144cdb53332eb79f82d241dce63f44b5c78d02bbf31faa1e"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "cd031eedb881d4489cddda52d8a353e1",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5257692,
"upload_time": "2024-11-26T08:17:11",
"upload_time_iso_8601": "2024-11-26T08:17:11.304590Z",
"url": "https://files.pythonhosted.org/packages/b0/88/842dd50560f1b4860a4bd1932e4eb477e00d0c94d74814162c3e08e7ab77/pglast-7.1-cp313-cp313-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "72c6b1f23a833a3112949b4e77c81e89951a39edf5c2d03aa88fcfe1244bbf25",
"md5": "688e0f267732119a75ab2f1793b9fc4c",
"sha256": "47088c226c030c7aef7e851fc7a809f3455c7c055108d264082965185596dbbb"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "688e0f267732119a75ab2f1793b9fc4c",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 5440669,
"upload_time": "2024-11-26T08:17:13",
"upload_time_iso_8601": "2024-11-26T08:17:13.774560Z",
"url": "https://files.pythonhosted.org/packages/72/c6/b1f23a833a3112949b4e77c81e89951a39edf5c2d03aa88fcfe1244bbf25/pglast-7.1-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df033e7a4ce57a49072034f320ed9d83167957e84e7bb06605088da4a5a39796",
"md5": "b80284053745cfc141729f67c86f28e2",
"sha256": "57158097b7658fa4f9bd2704caf6fd39bbaf7efc5cd2a818446f1ef0e4a90dc9"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "b80284053745cfc141729f67c86f28e2",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1008683,
"upload_time": "2024-11-26T08:17:15",
"upload_time_iso_8601": "2024-11-26T08:17:15.483777Z",
"url": "https://files.pythonhosted.org/packages/df/03/3e7a4ce57a49072034f320ed9d83167957e84e7bb06605088da4a5a39796/pglast-7.1-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f43da490a6fcbdb05da4de270172d3ef0b6b903d7b626d35550f09ebc97049d3",
"md5": "05b18d0f691065097f820cf7e89ef821",
"sha256": "6e7d81d8c96b3df668cccb0ecb14dbfa7a59f63cfaad4b1e22576560f712b6a6"
},
"downloads": -1,
"filename": "pglast-7.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "05b18d0f691065097f820cf7e89ef821",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1049828,
"upload_time": "2024-11-26T08:17:17",
"upload_time_iso_8601": "2024-11-26T08:17:17.266821Z",
"url": "https://files.pythonhosted.org/packages/f4/3d/a490a6fcbdb05da4de270172d3ef0b6b903d7b626d35550f09ebc97049d3/pglast-7.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3ac2d959030ab4ff096afd7c464927f31c16a404c28c5eb5fbda0e2844bb9169",
"md5": "32bf3a9b385a87bf8bb6cf145e66bbd0",
"sha256": "592777006c261c68c9508fe06ed7eb4cea98e941c8f22ba61162fca893ce097e"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "32bf3a9b385a87bf8bb6cf145e66bbd0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1144047,
"upload_time": "2024-11-26T08:17:18",
"upload_time_iso_8601": "2024-11-26T08:17:18.904082Z",
"url": "https://files.pythonhosted.org/packages/3a/c2/d959030ab4ff096afd7c464927f31c16a404c28c5eb5fbda0e2844bb9169/pglast-7.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fff68f74f9d66310fc312cee570fc1fb39c23cc8a4ed6e9bfed6d560d5b6a1a2",
"md5": "22b5ebe5ce43b675f29499b521408b2e",
"sha256": "c9070d789142793900a1644be6ea1edf6172403fa929ff249668df3ca20fd375"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "22b5ebe5ce43b675f29499b521408b2e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1079581,
"upload_time": "2024-11-26T08:17:20",
"upload_time_iso_8601": "2024-11-26T08:17:20.429831Z",
"url": "https://files.pythonhosted.org/packages/ff/f6/8f74f9d66310fc312cee570fc1fb39c23cc8a4ed6e9bfed6d560d5b6a1a2/pglast-7.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "847ae1c5e731c9397f7ba21cbf11c7610bb8105ae7a410c05d48ee83471967f3",
"md5": "2792b6231f69f63f4836eed1bae5e6af",
"sha256": "ca121434bdc165ee97e5433507ad9630ec13a6fb8a3f2e3a599c2e6750fa5197"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "2792b6231f69f63f4836eed1bae5e6af",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5437722,
"upload_time": "2024-11-26T08:17:22",
"upload_time_iso_8601": "2024-11-26T08:17:22.273365Z",
"url": "https://files.pythonhosted.org/packages/84/7a/e1c5e731c9397f7ba21cbf11c7610bb8105ae7a410c05d48ee83471967f3/pglast-7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "70da1ec9aa10cf1d24146496864f89f595a7cff38fbe7046bf1269582cb98933",
"md5": "ef5defbb9b2b2b6248e4d6912d59ef54",
"sha256": "4f19a9ae3281187e80d748cb3c4805fa19eb73bc75cb663ae8e0e141e85dea05"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ef5defbb9b2b2b6248e4d6912d59ef54",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5482862,
"upload_time": "2024-11-26T08:17:25",
"upload_time_iso_8601": "2024-11-26T08:17:25.367467Z",
"url": "https://files.pythonhosted.org/packages/70/da/1ec9aa10cf1d24146496864f89f595a7cff38fbe7046bf1269582cb98933/pglast-7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "002fd4cf092e96641b786fb63c4b277fb878d886f4aa9750d19a5faf3f523e0a",
"md5": "dfd856fab5c99782af4438d699cd2e78",
"sha256": "b0f7bffce7fe45621b5d0db9172ce0835981af9a69d19b3fab3b58678b215b24"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "dfd856fab5c99782af4438d699cd2e78",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5321252,
"upload_time": "2024-11-26T08:17:27",
"upload_time_iso_8601": "2024-11-26T08:17:27.247107Z",
"url": "https://files.pythonhosted.org/packages/00/2f/d4cf092e96641b786fb63c4b277fb878d886f4aa9750d19a5faf3f523e0a/pglast-7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e5a5c86cfa79628d4c8b7badddff1d7ce4f45e3ec0b41ddc15149a182c92ab47",
"md5": "66fe21e46abfdb301dff0823d99f7fec",
"sha256": "e0c9deb98d5923599fbc94e59653de0f3f717221d38e00e0f29cf5e69da16acb"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "66fe21e46abfdb301dff0823d99f7fec",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5245145,
"upload_time": "2024-11-26T08:17:29",
"upload_time_iso_8601": "2024-11-26T08:17:29.611912Z",
"url": "https://files.pythonhosted.org/packages/e5/a5/c86cfa79628d4c8b7badddff1d7ce4f45e3ec0b41ddc15149a182c92ab47/pglast-7.1-cp39-cp39-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2f8f1318ec6db9be97065628a2a3d6fac2ca27c65bce9da19313eea742e25f48",
"md5": "2a441e8e5e2d860b634a93604a1330b8",
"sha256": "9897489468300247524b838bcd18bc3fb6542642392d0a16f6b4fa530c76296f"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "2a441e8e5e2d860b634a93604a1330b8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5248986,
"upload_time": "2024-11-26T08:17:31",
"upload_time_iso_8601": "2024-11-26T08:17:31.286395Z",
"url": "https://files.pythonhosted.org/packages/2f/8f/1318ec6db9be97065628a2a3d6fac2ca27c65bce9da19313eea742e25f48/pglast-7.1-cp39-cp39-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2811ec0080140fc579ee3371091a4f9afd303e5de0c844ecdd33e899b88bf7ad",
"md5": "d0ae53a59e430af8b1f7fa10aa9c935c",
"sha256": "b86ce5f460af9a681433243b619ddd09f6adf9fbfa0fbe58c87fe768754caec2"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d0ae53a59e430af8b1f7fa10aa9c935c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 5372764,
"upload_time": "2024-11-26T08:17:33",
"upload_time_iso_8601": "2024-11-26T08:17:33.437115Z",
"url": "https://files.pythonhosted.org/packages/28/11/ec0080140fc579ee3371091a4f9afd303e5de0c844ecdd33e899b88bf7ad/pglast-7.1-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aeb769671d2a68349f05cec91edf663815298812230e5ce2e40abb437cac2a61",
"md5": "fa85cb3e3a0d6b17265557fed9460533",
"sha256": "a85d6eeafda1cf0470d70cd235923eb5e2e14d595e5ef92f65463a4eea24352e"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "fa85cb3e3a0d6b17265557fed9460533",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1016345,
"upload_time": "2024-11-26T08:17:35",
"upload_time_iso_8601": "2024-11-26T08:17:35.926359Z",
"url": "https://files.pythonhosted.org/packages/ae/b7/69671d2a68349f05cec91edf663815298812230e5ce2e40abb437cac2a61/pglast-7.1-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b0525f7d7437cb513f04ff83adbc0fe098fc47296ef08d765322bd0be88f277f",
"md5": "ad3b4f4d630b650ddeff4d4b69560f41",
"sha256": "f1940c4218d47222471c22ec2db0f09542a43faafa5d985f425b9e53c487d22a"
},
"downloads": -1,
"filename": "pglast-7.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "ad3b4f4d630b650ddeff4d4b69560f41",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1078052,
"upload_time": "2024-11-26T08:17:37",
"upload_time_iso_8601": "2024-11-26T08:17:37.739586Z",
"url": "https://files.pythonhosted.org/packages/b0/52/5f7d7437cb513f04ff83adbc0fe098fc47296ef08d765322bd0be88f277f/pglast-7.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "adf968dbcf71c525370253d694584df0ec2814834d787eefd82d0ffd8d482166",
"md5": "89cc92d050ac606e9765efe2ee3c6f6f",
"sha256": "a1e5927924412e1619d78d01d5c47f469dc59417ba7fe1004ce9fa9415ba77e2"
},
"downloads": -1,
"filename": "pglast-7.1.tar.gz",
"has_sig": false,
"md5_digest": "89cc92d050ac606e9765efe2ee3c6f6f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3365230,
"upload_time": "2024-11-26T07:09:48",
"upload_time_iso_8601": "2024-11-26T07:09:48.815356Z",
"url": "https://files.pythonhosted.org/packages/ad/f9/68dbcf71c525370253d694584df0ec2814834d787eefd82d0ffd8d482166/pglast-7.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-26 07:09:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lelit",
"github_project": "pglast",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pglast"
}