Skip to content
Permalink
Branch: master
Commits on Jun 11, 2019
  1. Version 2.4

    rtobar committed Jun 11, 2019
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  2. yajl2_c backend will be easier to get now

    rtobar committed Jun 11, 2019
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  3. Updating README to reflect change of ownership

    rtobar committed Jun 11, 2019
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  4. Ignoring wheels and eggs

    rtobar committed Jun 11, 2019
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  5. New script to build binary wheels in MacOS

    rtobar committed Jun 11, 2019
    The script is very specific to a particular machine I use to build these
    and other wheels, but it shouldn't be difficult to modify to make it
    easier to integrate in other environments (e.g., travis).
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  6. New script to create manylinux wheels

    rtobar committed Jun 11, 2019
    The script is meant to be run within the quay.io/pypa/manylinux1_x86_64
    docker image, which is why it uses the otherwise strange /io top-level
    directory. Needless to say (but I'm saying it), /io must be mapped to
    the top-level directory of this repo.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  7. Adding yajl's license text

    rtobar committed Jun 11, 2019
    Since we are planning to ship binary wheels with an embedded yajl
    library we should include its license into the LICENSE.txt file as per
    yajl's requirements.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  8. Pointing to ICRAR's fork as main version

    rtobar committed Jun 11, 2019
    I also added myself as an author of the package, together with my mail
    address.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  9. Use precise explicitly

    rtobar committed Jun 11, 2019
    Ubuntu precise is not the default distro anymore in Travis (Trusty is),
    so in order to keep the Travis builds working we need to explicitly use
    it. In the future we obviously should move to Trusty or Xenial.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Mar 25, 2019
  1. Adding newline at EOF

    rtobar committed Mar 25, 2019
    I haven't heard this is an actual issue that blocks compilation/usage,
    but on the other hand it doesn't hurt.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Jan 24, 2017
  1. Removing confusing "All rights reserved"

    rtobar committed Jan 24, 2017
    This phrase is a formality that no longer has legal effects, but caused
    confusion with the permissive grants of the 3-clause BSD license under which
    ijson is distributed.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  2. Fixing segfault

    rtobar committed Jan 19, 2017
    This was due to the missing final NULL in he keyword list. This should have
    always have been there, but until CPython 3.6 the error wasn't evident (and
    even with 3.6 it's not always reproducible -- for instance, the unit tests all
    nicely run).
    
    I'm also extending the python versions used by Travis to include 3.5 and 3.6
    for better coverage.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Jan 8, 2017
  1. C extension is imported as a whole

    rtobar committed Jan 8, 2017
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  2. Removing unnecessary print

    rtobar committed Jan 8, 2017
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Nov 15, 2016
  1. Better yajl detection via ccompiler module

    rtobar committed Nov 14, 2016
    This new way allow for environments to be passed down (CC, CFLAGS et al.) and
    also leaves less temporary files behind.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Nov 3, 2016
  1. Fixed path when map_key is first element

    rtobar committed Nov 3, 2016
    gen->path always contains at least 1 element, and when a map_start event is
    found a new None element is added to the list. Thus the logic to find whether
    this map key is the first element of the prefix returned by this generator was
    wrong and generated ".key" for a JSON like '{"key": 1}'
    
    I've added a unit test to make sure this problem doesn't arise again.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Oct 31, 2016
  1. Simpler macro names in C extension

    rtobar committed Oct 31, 2016
    This is purely for aeasthetic reasons. There was also a bit a duplicated code
    in the macro definitions which has now been unified.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Oct 19, 2016
  1. Using YAJL2 in Travis

    rtobar committed Oct 19, 2016
    Using YAJL2 means that we test more backends (i.e., python, yajl2, yajl2_cffi
    and yajl2_c) than we currently do with libyajl1 (i.e., python and yajl only).
    One can see the difference in the number of tests run (32 against 58).
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  2. Minor fixes/improvements for running tests

    rtobar committed Oct 19, 2016
    Tests run but were not reporting which backends were not being tested. The
    find_yajl_ctypes function also failed sometimes with OSError instead of
    YAJLImportError.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  3. Advertising new C backend

    rtobar committed Oct 19, 2016
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  4. Building and testing the new C extension backend

    rtobar committed Oct 19, 2016
    The new backend requires a C compiler and the YAJL development headers and
    library to be present on the system. If the conditions are not right we don't
    include extension to the setup process.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  5. Adding new C extension backend

    rtobar committed Oct 19, 2016
    This new C extension backend implements three objects (basic_parse, parse and
    items) which work like an iterator (i.e., they implement the iter and iternext
    methods). They do the same work their counterparts in the other backends do;
    that is, basic_parse generates tuples of (event, value), parse adds a path to
    that tuple, and items generates objects out of those. The fact that they are
    written in C, plus a few other minor goodies, means that their performance is
    substantially better than the other backends.
    
    The code tries to take all error cases into account and return the correct
    values when needed. Reference counting seems correct when things work
    correctly; that is no memory corruption or memory leak occurs when parsing bigs
    amount of data. Reference counting might be incorrect in some error situations,
    but that's work future work.
    
    The C extension itself is called _yajl2. Its functionality is in turn exposed
    via the yajl2_c python module which is what users should finally import.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Oct 17, 2016
  1. Prevent memory leaks

    rtobar committed Oct 14, 2016
    The builder.containers list creates circular references between itself and the
    ObjectBuilder object that contains it. This means that garbage collection is
    taking care of disposing of these self-referencing objects from time to time.
    If no GC is enabled (e.g., when using timeit.timeit, or because intentionally
    turned off) these objects build up in memory, defeating the purpose of the
    items generator and those under it. By explicitly clearing up the builder's
    list before the builder gets out of scope we solve this.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Oct 15, 2016
  1. Parse numbers consistent with stdlib json

    isagalaev committed Oct 15, 2016
  2. Merge pull request isagalaev#56 from rtobar/master

    isagalaev committed Oct 15, 2016
    cffi: minor fixes/improvements
  3. Merge branch 'pile-of-poo'

    isagalaev committed Oct 15, 2016
Commits on Oct 11, 2016
  1. error as a string, not as bytes

    rtobar committed Oct 11, 2016
    Otherwise under python 3 the exception's message doesn't get properly formatted
    and it's hard to point out exactly where the error was found.
    
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Oct 10, 2016
  1. cffi: variadic arguments need explicit cast

    rtobar committed Oct 10, 2016
    Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Commits on Jun 30, 2016
  1. Use Python's built-in JSON string parsing

    ExplodingCabbage committed Jun 30, 2016
    Has at least two advantages over ijson's previous implementation:
    
    - possible performance improvements from using a C implementation where available (see https://github.com/python/cpython/blob/11f699c512bc826d809f5bc9ab0e27a027cd1951/Lib/json/decoder.py#L129)
    
    - fixes handling of surrogate pairs. Previously ijson would incorrectly parse a JSON text like "\ud834\udd09" to an invalid Python string made up of two surrogate characters; the correct behaviour (implemented by Python's json module) is to treat these as UTF-16 surrogate code points and return the character u'𝄉'. This behaviour is described in the JSON spec at https://tools.ietf.org/html/rfc7159#section-7 and implemented by Python at (for example) https://github.com/python/cpython/blob/11f699c512bc826d809f5bc9ab0e27a027cd1951/Lib/json/decoder.py#L118-L122
Older
You can’t perform that action at this time.