luqum - A lucene query parser in Python, using PLY
#########################################################
|pypi-version| |readthedocs| |travis| |coveralls|
|logo|
"luqum" (as in LUcene QUery Manipolator) is a tool to parse queries
written in the `Lucene Query DSL`_ and build an abstract syntax tree
to inspect, analyze or otherwise manipulate search queries.
It enables enriching the Lucene Query DSL meanings
(for example to support nested object searches or have particular treatments on some fields),
and transform lucene DSL queries to native `ElasticSearch JSON DSL`_
Thanks to luqum, your users may continue to write queries like:
`author.last_name:Smith OR author:(age:[25 TO 34] AND first_name:John)`
and you will be able to leverage ElasticSearch query DSL,
and control the precise meaning of each search terms.
Luqum is dual licensed under Apache2.0 and LGPLv3.
Compatible with Python 3.6+
Installation
============
``pip install luqum``
Dependencies
============
`PLY`_ >= 3.11
Full documentation
==================
http://luqum.readthedocs.org/en/latest/
.. _`Lucene Query DSL` : https://lucene.apache.org/core/3_6_0/queryparsersyntax.html
.. _`ElasticSearch JSON DSL`: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
.. _`PLY`: http://www.dabeaz.com/ply/
.. |logo| image:: https://raw.githubusercontent.com/jurismarches/luqum/master/luqum-logo.png
.. |pypi-version| image:: https://img.shields.io/pypi/v/luqum.svg
:target: https://pypi.python.org/pypi/luqum
:alt: Latest PyPI version
.. |travis| image:: http://img.shields.io/travis/jurismarches/luqum/master.svg?style=flat
:target: https://travis-ci.org/jurismarches/luqum
.. |coveralls| image:: http://img.shields.io/coveralls/jurismarches/luqum/master.svg?style=flat
:target: https://coveralls.io/r/jurismarches/luqum
.. |readthedocs| image:: https://readthedocs.org/projects/luqum/badge/?version=latest
:target: http://luqum.readthedocs.org/en/latest/?badge=latest
:alt: Documentation Status
Changelog for luqum
###################
The format is based on `Keep a Changelog`_
and this project tries to adhere to `Semantic Versioning`_.
.. _`Keep a Changelog`: http://keepachangelog.com/en/1.0.0/
.. _`Semantic Versioning`: http://semver.org/spec/v2.0.0.html
0.13.0 - 2023-03-24
===================
Added
-----
* Add support for unbounded ranges
Support is added for open ranges, i.e. inequality operators in
front of a term. In tree form, the < is named To, and > is named From.
Additionally, a TreeTransformer is also added, to convert these
open ranges to more traditional Range objects.
To properly support escaping, some adjustments were made to how escaping
sequences work. After careful evaluation of how Apache Lucene handles
escape sequences, it appears that random characters can be escaped, even
if they result in unknown escape sequences: the escaped character is
always yielded. This makes support for operations such as `<\=foo` a lot
less complicated.
There is no support in the ElasticsearchQueryBuilder.
0.12.1 - 2023-02-08
===================
Fixed
-----
- Precedence for unknown operation and boost (#89, thanks to @JSCU-CNI)
0.12.0 - 2022-10-13
===================
Changed
-------
- Boost can be implicit ; by default, the boost factor is 1
Added
-----
- Add support for Lucene and Elasticsearch Boolean operations (#71, thanks to @linefeedse):
* Introduce the BooleanOperation
* add its resolution in ElasticSearch transformer
* add it as a possible resolver for the unknown operation (no explicit operator in query)
- Set E element as ElasticsearchQueryBuilder's attributes (#75, thanks to @qcoumes):
This allows to override elements such as EMust, EWord, ...,
without the need of overriding ElasticsearchQueryBuilder's methods.
- Explicit support for Python 3.9 and Python 3.10 (#76)
- Add a thread safe parse function (#82)
Fixed
-----
- Cast TokenValue.__str__ return value to string (#74, thanks to @delkopiso)
- Isolated comma should be parsed as a Word (#80)
- Better handling of escaped wildcards
Docs
----
- Add boolean operation to doc
- Fix quick start documentation
- Updated readthedocs instructions
CI
--
- Run tests with github actions
- Update all libraries for dev:
* switch from nose to pytest as nose is not python3.10 compatible
* remove old travis tests
0.11.0 - 2021-01-06
===================
Changed
-------
- completely modified the naming module and `auto_name` function, as it was not practical as is.
Added
-----
- added tools to build visual explanations about why a request matches a results
(leveraging `elasticsearch named queries`__.
- added a visitor and transformer that tracks path to element while visiting the tree.
__ https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-queries-and-filters
Fixed
-----
- fixed the handling of names when transforming luqum tree to elasticsearch queries
and added integration tests.
0.10.0 - 2020-09-22
===================
Added
-----
- support for parsing Regular expressions like `/foo/` (no transformation to Elasticsearch DSL yet)
- basic support for head and tail of expressions (the separators)
and for their position (pos and size) in original text
- added `auto_head_tail` util
(use it if you build your tree programatically and want a printable representation)
- tree item now support a `clone_item` method and a setter for children.
This should help with making transformation pattern easier.
- New `visitor.TreeVisitor` and `visitor.TreeTransformer` classes to help in processing trees
`utils.LuceneTreeVisitor`, `utils.LuceneTreeVisitorV2` and `utils.LuceneTreeTransformer`
are warned as deprecated (but still works).
Changed
-------
- support for python 3.8 added, support for python 3.4 and 3.5 dropped
- better printing of Proximity and Fuzzy items (preserve implicit nature of degree)
- raise `IllegalCharacterError` on illegal character found instead of printing and skipping
- renamed `ParseError` to `ParseSyntaxError`, and kept `ParseError` as a parent exception
Fixed
-----
- Range item were not checking for bounds type on equality
- Boost item were not checking for force on equality
- Reorganize tests
0.9.0 - 2020-07-29
==================
Added
-----
- support for elasticsearch 7
0.8.1 - 2019-11-01
==================
Added
-----
- added Apache 2 license, while maintaining LGPLv3+
0.8.0 - 2019-08-02
==================
Added
-----
- support for `multi_match` query in `ElasticsearchQueryBuilder`.
Fixed
-----
- SchemaAnalyzer, should count non text fields as not_analyzed
- `ElasticsearchQueryBuilder`'s `field_options` parameter
can accept `match_type` instead of `type` to change request type.
This is now the prefered way over `type`
which may more easily conflict with request parameters.
0.7.5 - 2018-10-29
==================
Added
-----
- handling sub fields (aka `multi-fields`__)
__ https://www.elastic.co/guide/en/elasticsearch/reference/6.3/multi-fields.html
Fixed
-----
- fixed bug on equality, having more children in one tree than in the other,
was not triggering inequality if first nodes were the same !
0.7.4 - 2018-08-28
==================
Added
-----
- handling `special characters escaping`_
- added `iter_wildcards` and `split_wildcards` to have a finer grained search of wildcard in terms
.. _`special characters escaping`: https://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Escaping%20Special%20Characters
Fixed
-----
- fixed bug in `luqum.utils.LuceneTreeTransformer` when removing node
- fixed bug in handling approx operator on multiple words in
`luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`
- test coverage now check branch
0.7.3 - 2018-06-08
===================
Fixed
-----
- On ElasticSearch query transformation, Luqum was interpreting wildcards in Phrases where as it should not
0.7.2 - 2018-05-14
===================
Fixed
-----
- adding the `zero_terms_query` to `match_phrase` was a mistake (introduced in 0.7.0).
Added
-----
- 0.7.0 introduced the `match` query for queries with single words on analyzed fields,
whereas before it was using `match_phrase`.
Although this is more coherent,
this may cause difficulties on edge cases
as this may leads to results different from previous release.
This behaviour might be disabled using a new `match_word_as_phrase` parameter
to `luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`.
Note that this parameter maybe removed in future release.
(the `field_options` might be used instead on a per field basis).
0.7.1 - 2018-03-20
==================
Fixed
-----
- version introduced because of a bad upload on pypi (Restructured description error)
0.7.0 - 2018-03-20
==================
Added
-----
- Support for named queries (see `elastic named queries`__)
- Helper to automatically create ElasticSearch query builder options from the index configuration,
see: `luqum.elasticsearch.schema`
- a new arg `field_options` on `luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`
allows to add parameters to field queries.
It also permits to control the type of query for match queries.
- now for a query with a single word, if the field is analyzed,
the transformation to elastic search query will use a "match" query instead of a "match_phrase".
This is more conform in behaviour to what the expression of "query_string" would produce.
Fixed
-----
- small fix in utils.TreeTransformerV2,
which was not removing elements from lists or tuple as stated
- single word matches, are now `match`, and not `match_phrase`
- `match_phrase` has the `zero_terms_query` field, as for `match`
__ https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-named-queries-and-filters.html
Changed
--------
- dropped official Python 3.3 support
0.6.0 - 2017-12-12
==================
Added
-----
- Manage object fields in elasicsearch transformation
Fixed
-----
- minor fix, getting better error message when parsing error is at the end of content
Changed
--------
- better handling of nested fields may lead to shorter requests
0.5.3 - 2017-08-21
==================
Added
-----
- A class to transform smartly replace implicit operations with explicit one (*OR* or *AND*)
Fixed
-----
- handling of fields names with numbers followed by a number
(better handling of time in expressions)
Changed
-------
- now using ply 3.10
0.5.2 - 2017-05-29
==================
Changed
-------
- better recursion in the tree transformer util (API Change)
Fixed
-----
- handling of empty phrases for elasticsearch query builder
0.5.1 - 2017-04-10
==================
a minor release
Changed
-------
- Better handling of the implicit operator on printing
0.5.0 - 2017-04-04
==================
Changed
-------
- Operations are now supporting multiple operands (instead of only two).
This mitigate the construction of very deep trees.
Fixed
-----
- fixes and improvement of documentation
0.4.0 - 2016-12-05
==================
Changed
-------
- The Lucene query checker now checks nested fields before transformation to prevent bad usage
0.3.1 - 2016-11-23
==================
Added
-----
- Support for nested fields in Elastic Search queries
Changed
-------
- improved performances by adding a cache to the tree visitor utility
0.3 - 2016-11-21
=================
(Note that 0.2 version was skipped)
Added
-----
- Transforming Lucene queries to Elastic Search queries
- Added a new tree visitor `TreeVisitorV2` more easy to use
Fixed
-----
- Improved first tree visitor utility and its tests (API Change)
0.1 - 2016-05-17
=================
This was the initial release of Luqum.
Added
------
- the parser and the tree structure
- the visitor and transformer utils
- the Lucene query consistency checker
- the prettify for pretty printing
Raw data
{
"_id": null,
"home_page": "https://github.com/jurismarches/luqum",
"name": "luqum",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Jurismarches",
"author_email": "contact@jurismarches.com",
"download_url": "https://files.pythonhosted.org/packages/11/fe/eb6ae5039c704846edd07e36b9895c86c4340ae4bb73292de5cfe80bc5f9/luqum-0.13.0.linux-x86_64.tar.gz",
"platform": null,
"description": "luqum - A lucene query parser in Python, using PLY\n#########################################################\n\n|pypi-version| |readthedocs| |travis| |coveralls|\n\n|logo| \n\n\"luqum\" (as in LUcene QUery Manipolator) is a tool to parse queries \nwritten in the `Lucene Query DSL`_ and build an abstract syntax tree \nto inspect, analyze or otherwise manipulate search queries.\n\nIt enables enriching the Lucene Query DSL meanings\n(for example to support nested object searches or have particular treatments on some fields),\nand transform lucene DSL queries to native `ElasticSearch JSON DSL`_\n\nThanks to luqum, your users may continue to write queries like:\n`author.last_name:Smith OR author:(age:[25 TO 34] AND first_name:John)`\nand you will be able to leverage ElasticSearch query DSL,\nand control the precise meaning of each search terms.\n\nLuqum is dual licensed under Apache2.0 and LGPLv3.\n\nCompatible with Python 3.6+\n\nInstallation\n============\n\n``pip install luqum``\n\n\nDependencies\n============\n\n`PLY`_ >= 3.11\n\n\nFull documentation\n==================\n\nhttp://luqum.readthedocs.org/en/latest/\n\n\n.. _`Lucene Query DSL` : https://lucene.apache.org/core/3_6_0/queryparsersyntax.html\n.. _`ElasticSearch JSON DSL`: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html\n\n.. _`PLY`: http://www.dabeaz.com/ply/\n\n.. |logo| image:: https://raw.githubusercontent.com/jurismarches/luqum/master/luqum-logo.png\n\n.. |pypi-version| image:: https://img.shields.io/pypi/v/luqum.svg\n :target: https://pypi.python.org/pypi/luqum\n :alt: Latest PyPI version\n.. |travis| image:: http://img.shields.io/travis/jurismarches/luqum/master.svg?style=flat\n :target: https://travis-ci.org/jurismarches/luqum\n.. |coveralls| image:: http://img.shields.io/coveralls/jurismarches/luqum/master.svg?style=flat\n :target: https://coveralls.io/r/jurismarches/luqum\n.. |readthedocs| image:: https://readthedocs.org/projects/luqum/badge/?version=latest\n :target: http://luqum.readthedocs.org/en/latest/?badge=latest\n :alt: Documentation Status\n\n\n\n\nChangelog for luqum\n###################\n\nThe format is based on `Keep a Changelog`_\nand this project tries to adhere to `Semantic Versioning`_.\n\n.. _`Keep a Changelog`: http://keepachangelog.com/en/1.0.0/\n.. _`Semantic Versioning`: http://semver.org/spec/v2.0.0.html\n\n\n0.13.0 - 2023-03-24\n===================\n\nAdded\n-----\n\n* Add support for unbounded ranges\n\n Support is added for open ranges, i.e. inequality operators in\n front of a term. In tree form, the < is named To, and > is named From.\n\n Additionally, a TreeTransformer is also added, to convert these\n open ranges to more traditional Range objects.\n\n To properly support escaping, some adjustments were made to how escaping\n sequences work. After careful evaluation of how Apache Lucene handles\n escape sequences, it appears that random characters can be escaped, even\n if they result in unknown escape sequences: the escaped character is\n always yielded. This makes support for operations such as `<\\=foo` a lot\n less complicated.\n\n There is no support in the ElasticsearchQueryBuilder.\n\n0.12.1 - 2023-02-08\n===================\n\nFixed\n-----\n\n- Precedence for unknown operation and boost (#89, thanks to @JSCU-CNI)\n\n\n0.12.0 - 2022-10-13\n===================\n\nChanged\n-------\n\n- Boost can be implicit ; by default, the boost factor is 1\n\nAdded\n-----\n\n- Add support for Lucene and Elasticsearch Boolean operations (#71, thanks to @linefeedse):\n\n * Introduce the BooleanOperation\n * add its resolution in ElasticSearch transformer\n * add it as a possible resolver for the unknown operation (no explicit operator in query)\n\n- Set E element as ElasticsearchQueryBuilder's attributes (#75, thanks to @qcoumes):\n\n This allows to override elements such as EMust, EWord, ...,\n without the need of overriding ElasticsearchQueryBuilder's methods.\n\n- Explicit support for Python 3.9 and Python 3.10 (#76)\n- Add a thread safe parse function (#82)\n\nFixed\n-----\n\n- Cast TokenValue.__str__ return value to string (#74, thanks to @delkopiso)\n- Isolated comma should be parsed as a Word (#80)\n- Better handling of escaped wildcards\n\nDocs\n----\n\n- Add boolean operation to doc\n- Fix quick start documentation\n- Updated readthedocs instructions\n\nCI\n--\n\n- Run tests with github actions\n- Update all libraries for dev:\n\n * switch from nose to pytest as nose is not python3.10 compatible\n * remove old travis tests\n\n0.11.0 - 2021-01-06\n===================\n\nChanged\n-------\n\n- completely modified the naming module and `auto_name` function, as it was not practical as is.\n\nAdded\n-----\n\n- added tools to build visual explanations about why a request matches a results\n (leveraging `elasticsearch named queries`__.\n- added a visitor and transformer that tracks path to element while visiting the tree.\n\n__ https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-queries-and-filters\n\nFixed\n-----\n\n- fixed the handling of names when transforming luqum tree to elasticsearch queries\n and added integration tests.\n\n\n0.10.0 - 2020-09-22\n===================\n\nAdded\n-----\n\n- support for parsing Regular expressions like `/foo/` (no transformation to Elasticsearch\u00a0DSL yet)\n- basic support for head and tail of expressions (the separators)\n and for their position (pos and size) in original text\n- added `auto_head_tail` util\n (use it if you build your tree programatically and want a printable representation)\n- tree item now support a `clone_item` method and a setter for children.\n This should help with making transformation pattern easier.\n- New `visitor.TreeVisitor` and `visitor.TreeTransformer` classes to help in processing trees\n `utils.LuceneTreeVisitor`, `utils.LuceneTreeVisitorV2` and `utils.LuceneTreeTransformer`\n are warned as deprecated (but still works).\n\nChanged\n-------\n\n- support for python 3.8 added, support for python 3.4 and 3.5 dropped\n- better printing of Proximity and Fuzzy items (preserve implicit nature of degree)\n- raise `IllegalCharacterError` on illegal character found instead of printing and skipping\n- renamed `ParseError` to `ParseSyntaxError`, and kept `ParseError` as a parent exception\n\nFixed\n-----\n\n- Range item were not checking for bounds type on equality\n- Boost item were not checking for force on equality\n- Reorganize tests\n\n0.9.0 - 2020-07-29\n==================\n\nAdded\n-----\n\n- support for elasticsearch 7\n\n0.8.1 - 2019-11-01\n==================\n\nAdded\n-----\n\n- added Apache 2 license, while maintaining LGPLv3+\n\n0.8.0 - 2019-08-02\n==================\n\nAdded\n-----\n\n- support for `multi_match` query in `ElasticsearchQueryBuilder`.\n\nFixed\n-----\n\n- SchemaAnalyzer, should count non text fields as not_analyzed\n- `ElasticsearchQueryBuilder`'s `field_options` parameter\n can accept `match_type` instead of `type` to change request type.\n This is now the prefered way over `type`\n which may more easily conflict with request parameters.\n\n0.7.5 - 2018-10-29\n==================\n\nAdded\n-----\n\n- handling sub fields (aka `multi-fields`__)\n\n__ https://www.elastic.co/guide/en/elasticsearch/reference/6.3/multi-fields.html\n\nFixed\n-----\n\n- fixed bug on equality, having more children in one tree than in the other,\n was not triggering inequality if first nodes were the same !\n\n0.7.4 - 2018-08-28\n==================\n\nAdded\n-----\n\n- handling `special characters escaping`_\n- added `iter_wildcards` and `split_wildcards` to have a finer grained search of wildcard in terms\n\n.. _`special characters escaping`: https://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Escaping%20Special%20Characters\n\nFixed\n-----\n\n- fixed bug in `luqum.utils.LuceneTreeTransformer` when removing node\n- fixed bug in handling approx operator on multiple words in\n `luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`\n- test coverage now check branch\n\n0.7.3 - 2018-06-08\n===================\n\nFixed\n-----\n\n- On ElasticSearch query transformation, Luqum was interpreting wildcards in Phrases where as it should not\n\n0.7.2 - 2018-05-14\n===================\n\nFixed\n-----\n\n- adding the `zero_terms_query` to `match_phrase` was a mistake (introduced in 0.7.0).\n\nAdded\n-----\n\n- 0.7.0 introduced the `match` query for queries with single words on analyzed fields,\n whereas before it was using `match_phrase`.\n Although this is more coherent,\n this may cause difficulties on edge cases\n as this may leads to results different from previous release.\n\n This behaviour might be disabled using a new `match_word_as_phrase` parameter\n to `luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`.\n Note that this parameter maybe removed in future release.\n (the `field_options` might be used instead on a per field basis).\n\n\n0.7.1 - 2018-03-20\n==================\n\nFixed\n-----\n\n- version introduced because of a bad upload on pypi (Restructured description error)\n\n0.7.0 - 2018-03-20\n==================\n\nAdded\n-----\n\n- Support for named queries (see `elastic named queries`__)\n- Helper to automatically create ElasticSearch query builder options from the index configuration,\n see: `luqum.elasticsearch.schema`\n- a new arg `field_options` on `luqum.elasticsearch.visitor.ElasticsearchQueryBuilder`\n allows to add parameters to field queries.\n It also permits to control the type of query for match queries.\n- now for a query with a single word, if the field is analyzed,\n the transformation to elastic search query will use a \"match\" query instead of a \"match_phrase\".\n This is more conform in behaviour to what the expression of \"query_string\" would produce.\n\n\nFixed\n-----\n\n- small fix in utils.TreeTransformerV2,\n which was not removing elements from lists or tuple as stated\n- single word matches, are now `match`, and not `match_phrase`\n- `match_phrase` has the `zero_terms_query` field, as for `match`\n\n__ https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-named-queries-and-filters.html\n\nChanged\n--------\n\n- dropped official Python 3.3 support\n\n0.6.0 - 2017-12-12\n==================\n\nAdded\n-----\n\n- Manage object fields in elasicsearch transformation\n\nFixed\n-----\n\n- minor fix, getting better error message when parsing error is at the end of content\n\nChanged\n--------\n\n- better handling of nested fields may lead to shorter requests\n\n0.5.3 - 2017-08-21\n==================\n\nAdded\n-----\n\n- A class to transform smartly replace implicit operations with explicit one (*OR* or *AND*)\n\nFixed\n-----\n\n- handling of fields names with numbers followed by a number\n (better handling of time in expressions)\n\nChanged\n-------\n\n- now using ply 3.10\n\n0.5.2 - 2017-05-29\n==================\n\nChanged\n-------\n\n- better recursion in the tree transformer util (API Change)\n\nFixed\n-----\n\n- handling of empty phrases for elasticsearch query builder\n\n0.5.1 - 2017-04-10\n==================\n\na minor release\n\nChanged\n-------\n\n- Better handling of the implicit operator on printing\n\n0.5.0 - 2017-04-04\n==================\n\nChanged\n-------\n\n- Operations are now supporting multiple operands (instead of only two).\n This mitigate the construction of very deep trees.\n\nFixed\n-----\n\n- fixes and improvement of documentation\n\n0.4.0 - 2016-12-05\n==================\n\nChanged\n-------\n\n- The Lucene query checker now checks nested fields before transformation to prevent bad usage\n\n0.3.1 - 2016-11-23\n==================\n\nAdded\n-----\n\n- Support for nested fields in Elastic Search queries\n\nChanged\n-------\n\n- improved performances by adding a cache to the tree visitor utility\n\n0.3 - 2016-11-21\n=================\n\n(Note that 0.2 version was skipped)\n\nAdded\n-----\n\n- Transforming Lucene queries to Elastic Search queries\n- Added a new tree visitor `TreeVisitorV2` more easy to use\n\nFixed\n-----\n- Improved first tree visitor utility and its tests (API Change)\n\n\n0.1 - 2016-05-17\n=================\n\nThis was the initial release of Luqum.\n\nAdded\n------\n\n- the parser and the tree structure\n- the visitor and transformer utils\n- the Lucene query consistency checker\n- the prettify for pretty printing\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "A Lucene query parser generating ElasticSearch queries and more !",
"version": "0.13.0",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "11feeb6ae5039c704846edd07e36b9895c86c4340ae4bb73292de5cfe80bc5f9",
"md5": "f24572e4ea642ac8f4e39afd5e2d93e7",
"sha256": "1af57bc37637014460858a2ae4737760015ed0b9d8b23d61f198de4736c174f5"
},
"downloads": -1,
"filename": "luqum-0.13.0.linux-x86_64.tar.gz",
"has_sig": false,
"md5_digest": "f24572e4ea642ac8f4e39afd5e2d93e7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 90171,
"upload_time": "2023-03-24T11:27:22",
"upload_time_iso_8601": "2023-03-24T11:27:22.637644Z",
"url": "https://files.pythonhosted.org/packages/11/fe/eb6ae5039c704846edd07e36b9895c86c4340ae4bb73292de5cfe80bc5f9/luqum-0.13.0.linux-x86_64.tar.gz",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c134cae9016cb1d9c1f1e5439f0570080848ed658cbc3e1b39e180812fce1a43",
"md5": "65c2a2b1673c0b1c4dee52c0d44e3145",
"sha256": "bf0ac6eb3ca8a6a579ff6dd4bd9d88fbba5d9f559b4f5d864f99c4a6b5061853"
},
"downloads": -1,
"filename": "luqum-0.13.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "65c2a2b1673c0b1c4dee52c0d44e3145",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 54409,
"upload_time": "2023-03-24T11:27:20",
"upload_time_iso_8601": "2023-03-24T11:27:20.451463Z",
"url": "https://files.pythonhosted.org/packages/c1/34/cae9016cb1d9c1f1e5439f0570080848ed658cbc3e1b39e180812fce1a43/luqum-0.13.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-24 11:27:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "jurismarches",
"github_project": "luqum",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "luqum"
}