-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Raise custom exceptions on syntax errors #46
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
swaroopch
approved these changes
Aug 23, 2018
gabrielferreira95
added a commit
to nubank/edn_format
that referenced
this pull request
Nov 25, 2019
* Convert requirements from exact to minimum Fixes swaroopch#40 * Bump version to 0.5.13 * LICENSE: bump year * Fix ambiguous variable name (swaroopch#44) * Add a Changelog * Fix parsing of exact-precision floats with a negative exposant (swaroopch#47) * Accept missing printable ASCII chars (swaroopch#45) * Add a sort_sets optional keyword argument to dump (swaroopch#42) * add failing unit test * add ImmutableList * use ImmutableList on code * fix latin * conform to flake8 * add test * add placeholder file * workaround for limitation on the image downstream * remove conda.txt file * add docstring * descend from Sequence instead of MutableSequence * copy explicitly * remove MutableSequence tests * bump version * fix formatting * use copy.copy() as .copy() is not available for lists on python2 * remove redundant tests * simplify condition * Raise custom exceptions on syntax errors (swaroopch#46) * Add CONTRIBUTING.md (swaroopch#48) * Handle fractions edn-format/edn#64 * Handle #_ Fixes #4. Note it doesn’t support top-level #_ usage such as in: foo #_ bar * Add tests for #_ * Tweak README regarding caveats + mention @bfontaine contributor * Bump version to 0.6.0 Thanks @bfontaine and @konr! * Add v0.6.0 to the Changelog * Run Travis tests on latest Python 3.7 * Use dist: xenial * Use mutable data structures to improve parsing time Previously a list was used to hold the intermediate results during parsing of "expressions", but each expression was prepended by copying, Fixing this takes parsing from quadratic to linear time. * Bump version to 0.6.1 * Update setup.py to 0.6.1 * Various code simplifications (swaroopch#53) * Parse nil and booleans as symbols (swaroopch#54) * Add Vagrantfile for local dev * Use collections.abc instead of collections Fixes swaroopch#55 * Fix build issues https://travis-ci.org/swaroopch/edn_format/jobs/475411817 * Fix Python 2.x compatibility https://travis-ci.org/swaroopch/edn_format/jobs/475413453 * Bump version to 0.6.2 * DRY the requirements Move from setup.py to only requirements.txt * Add badge for PyPI version * add support for unicode char literals * fixed indentation in test_sort_keys * combined version_info checks in edn_format/edn_lex.py Co-Authored-By: LeXofLeviafan <lexofleviafan@gmail.com> * fixed comment in char token definition * made changes according to flake8 demands * Bump version to 0.6.3 * Travis : Upgrade Ubuntu version to latest LTS, bionic * Use tag signing * Add an edn_parse.tag decorator, + docs and tests on tags (swaroopch#59) * Contributor Notes: replace the deprecated commands * Version 0.6.4 * Move contributor notes in CONTRIBUTING.md (swaroopch#61) * Add edn_format.loads_all to parse all expressions in a string (swaroopch#60) * Parse hexadecimal notation Fixes swaroopch#62. * Disallow 0-prefixed integers From the spec: > No integer other than 0 may begin with 0. * Release v0.6.5 * Bump version to 0.6.5-nu
gcbeltramini
pushed a commit
to nubank/edn_format
that referenced
this pull request
Nov 27, 2019
* Convert requirements from exact to minimum Fixes swaroopch#40 * Bump version to 0.5.13 * LICENSE: bump year * Fix ambiguous variable name (swaroopch#44) * Add a Changelog * Fix parsing of exact-precision floats with a negative exposant (swaroopch#47) * Accept missing printable ASCII chars (swaroopch#45) * Add a sort_sets optional keyword argument to dump (swaroopch#42) * add failing unit test * add ImmutableList * use ImmutableList on code * fix latin * conform to flake8 * add test * add placeholder file * workaround for limitation on the image downstream * remove conda.txt file * add docstring * descend from Sequence instead of MutableSequence * copy explicitly * remove MutableSequence tests * bump version * fix formatting * use copy.copy() as .copy() is not available for lists on python2 * remove redundant tests * simplify condition * Raise custom exceptions on syntax errors (swaroopch#46) * Add CONTRIBUTING.md (swaroopch#48) * Handle fractions edn-format/edn#64 * Handle #_ Fixes #4. Note it doesn’t support top-level #_ usage such as in: foo #_ bar * Add tests for #_ * Tweak README regarding caveats + mention @bfontaine contributor * Bump version to 0.6.0 Thanks @bfontaine and @konr! * Add v0.6.0 to the Changelog * Run Travis tests on latest Python 3.7 * Use dist: xenial * Use mutable data structures to improve parsing time Previously a list was used to hold the intermediate results during parsing of "expressions", but each expression was prepended by copying, Fixing this takes parsing from quadratic to linear time. * Bump version to 0.6.1 * Update setup.py to 0.6.1 * Various code simplifications (swaroopch#53) * Parse nil and booleans as symbols (swaroopch#54) * Add Vagrantfile for local dev * Use collections.abc instead of collections Fixes swaroopch#55 * Fix build issues https://travis-ci.org/swaroopch/edn_format/jobs/475411817 * Fix Python 2.x compatibility https://travis-ci.org/swaroopch/edn_format/jobs/475413453 * Bump version to 0.6.2 * DRY the requirements Move from setup.py to only requirements.txt * Add badge for PyPI version * add support for unicode char literals * fixed indentation in test_sort_keys * combined version_info checks in edn_format/edn_lex.py Co-Authored-By: LeXofLeviafan <lexofleviafan@gmail.com> * fixed comment in char token definition * made changes according to flake8 demands * Bump version to 0.6.3 * Travis : Upgrade Ubuntu version to latest LTS, bionic * Use tag signing * Add an edn_parse.tag decorator, + docs and tests on tags (swaroopch#59) * Contributor Notes: replace the deprecated commands * Version 0.6.4 * Move contributor notes in CONTRIBUTING.md (swaroopch#61) * Add edn_format.loads_all to parse all expressions in a string (swaroopch#60) * Parse hexadecimal notation Fixes swaroopch#62. * Disallow 0-prefixed integers From the spec: > No integer other than 0 may begin with 0. * Release v0.6.5 * Merge with upstream * Remove repeated tests * Undo some changes after the merge * Fix regex for t_FLOAT * Add more test cases * Refactor t_FLOAT regex
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current code raises
SyntaxError
on syntax errors. The problem with that is it’s impossible to catch EDN syntax errors and not other syntax errors. Also,SyntaxError
is raised by the Python parser on bad code.This PR adds a new
exceptions
namespace with a single class,EDNDecodeError
, that inherits fromValueError
. This mimicks Python’sjson.decoder.JSONDecodeError
.Note that this is a breaking change, since code that catches
SyntaxError
s to catch EDN issues won’t work anymore if it’s not changed to catchEDNDecodeError
s instead.