{"id":17087255,"url":"https://github.com/seppeljordan/parsemon2","last_synced_at":"2025-09-06T17:43:19.146Z","repository":{"id":74932351,"uuid":"101792160","full_name":"seppeljordan/parsemon2","owner":"seppeljordan","description":"A monadic parser in python","archived":false,"fork":false,"pushed_at":"2023-07-19T09:34:57.000Z","size":7974,"stargazers_count":8,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T21:53:16.622Z","etag":null,"topics":["monadic","parsing","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seppeljordan.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-29T18:14:40.000Z","updated_at":"2024-05-31T17:00:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"0f1d8b4b-27e3-405a-bc42-2e90c9f3ebbe","html_url":"https://github.com/seppeljordan/parsemon2","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/seppeljordan/parsemon2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seppeljordan%2Fparsemon2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seppeljordan%2Fparsemon2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seppeljordan%2Fparsemon2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seppeljordan%2Fparsemon2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seppeljordan","download_url":"https://codeload.github.com/seppeljordan/parsemon2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seppeljordan%2Fparsemon2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273940077,"owners_count":25195095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["monadic","parsing","python"],"created_at":"2024-10-14T13:31:59.205Z","updated_at":"2025-09-06T17:43:19.131Z","avatar_url":"https://github.com/seppeljordan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"parsemon2\n=========\n\nThis is yet another attempt to bring monadic parsing to python.  The\nproblem the author saw with many other implementations is a limit to\ntheir composability.  A lot of the times these otherwise quite well\nwritten implementations suffer pretty bad from pythons lack of TCO.\nThis implementation uses trampolines to get around that.\n\nRight now this implementation is nothing more but a toy, but the tests\nthat come with this package show already that it's parsing ability is\nnot dependent on pythons recursion limit.\n\nWe also have error messages.\n\nThere is a (tested!) example implementation of a json parser included\nin the package.  See ``src/parsemon/json.py`` for more information.\n\ninstallation\n============\n\nThis package should be available as a ``manylinux_2_24_x86_64`` wheel\non pypi.  On a update to date linux machine ``pip`` should do the job\njust fine::\n\n  pip install parsemon2\n\nCurrently MS Windows and macOS are not supported.\n\nbuilding the package\n====================\n\nBuilding the package from source can be done in multiple ways.\n\nbuilding from sdist\n-------------------\n\nYou need to have the rust toolchain installed.  Check out your\nGNU/Linux distribution to learn how to install it.  Another handy\nresource to consider is `https://www.rust-lang.org/tools/install`.\n\nNow you can build the package from source via ``pip``::\n\n  pip install setuptools_rust wheel\n  pip wheel parsemon2 --no-binary :all:\n\nNow you should have a wheel for your platform in your working\ndirectory.\n\nbuild from the repository\n-------------------------\n\nThe easiest way to build wheels from the git repository is to use\n``docker`` since there is a handy build script included in the repo.\nMake sure the your user has access to docker.  Consult the\ndocumentation of your system for more information on how to install\ndocker.\n\nWith ``docker`` installed run the following in the root folder of the\nsource code repository::\n\n  bin/build-wheels\n\nAfter the program finishes you should find wheels for various python\nversions in the ``dist/`` directory.\n\n\ndocumentation\n=============\n\nIf you want to learn about the library we recommend checking out our\n`readthedocs page`_.\n\n\nChanges\n=======\n\n3.2.2\n=====\n\n- Further performance improvements\n\n3.2.1\n-----\n\n- Fixed minor bug in error handling code\n\n3.2.0\n-----\n\n- Slight performance improvements\n- Implement repeat combinator that tries to run a parser for a\n  specified number of times\n\n3.1.0\n-----\n\n- Serious peformance improvements were made\n- Minor bug fix in json example parser\n\n3.0.1\n-----\n\n- Update README\n\n3.0\n---\n\n- Remove pyrsistent deque implementation\n- Improve fmap performance\n- Implement end-of-input parser\n- ``run_parser`` now returns a ``ParsingResult`` object instead of the raw\n  value of the supplied parser\n- ``run_parser`` won't fail if the parser did not consume all of the\n  supplied input\n- Got rid of ``NotEnouhInput`` exception.\n- Drop official support for Python 3.6\n- Change semantics of ``until`` parser.\n\n2.0\n---\n\n- Parsers constructed with ``do`` can now take arguments\n- New parser for floating point numbers: ``parsmon.basic.floating_point``\n- Implement ``x | y`` operator for parsers, it is a short hand for\n  ``choice(x,y)``\n- Improved performance parsing speed by factor 4 - 6\n- There is now an example of a parser included in this package.  It is\n  the worlds slowest json parser\n\n1.1\n---\n\n- Implement validators\n- ``chain`` now accepts 1 or more arguments\n- Implement do notation\n- New whitespace parser\n- New parser for integers\n\n\n.. _`readthedocs page`: https://parsemon2.readthedocs.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseppeljordan%2Fparsemon2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseppeljordan%2Fparsemon2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseppeljordan%2Fparsemon2/lists"}