Changelog

v0.3.6-29-g1465367

Changes

  • Switch conda workflow to condadev environment. [Stephen Arnold]

  • Swap out flake8 for cython-lint, update setup files, remove pep8 cfg. [Stephen Arnold]

Fixes

  • Cleanup tests and fix a raw string test, enable more win32. [Stephen Arnold]

    • split all runners into separate arch via matrix

    • macos does need macos-14 to get a proper arm64 build

  • Apply emptygroups fix and remove conda-only patch, also. [Stephen L Arnold]

    • release workflow: restrict pypi upload to repo owner

    • tox.ini: replace deprecated pep517 module, update deploy url

Other

  • Fix #42. [Andreas van Cranenburgh]

  • Include current notification level in cache key. [Andreas van Cranenburgh]

    this prevents a cached regular expression being used that was created with a different notification level.

    For example, the following now generates the expected warning:

    In [1]: import re2
    In [2]: re2.compile('a*+')
    Out[2]: re.compile('a*+')
    In [3]: re2.set_fallback_notification(re2.FALLBACK_WARNING)
    In [4]: re2.compile('a*+')
    <ipython-input-5-041122e221c7>:1: UserWarning: WARNING: Using re module. Reason: bad repetition operator: *+
      re2.compile('a*+')
    Out[4]: re.compile('a*+')
    
  • Support fallback to Python re for possessive quantifiers. [Andreas van Cranenburgh]

  • Document lack of support for possessive quantifiers and atomic groups. [Andreas van Cranenburgh]

  • Make tests pass on my system; if this behavior turns out to be inconsistent across versions/platforms, maybe the test should be disabled altogether. #27. [Andreas van Cranenburgh]

  • Add NOFLAGS and RegexFlags constants; #41. [Andreas van Cranenburgh]

  • Remove python versions for make valgrind. [Andreas van Cranenburgh]

  • Merge pull request #33 from sarnold/conda-patch. [Andreas van Cranenburgh]

    Conda patch for None vs empty string change

  • Merge pull request #32 from JustAnotherArchivist/match-getitem. [Andreas van Cranenburgh]

    Make Match objects subscriptable

  • Add test for Match subscripting. [JustAnotherArchivist]

  • Make Match objects subscriptable. [JustAnotherArchivist]

    Fixes #31

v0.3.6 (2021-05-05)

  • Merge pull request #30 from sarnold/release-pr. [Andreas van Cranenburgh]

    workflow updates

  • Add missing sdist job and artifact check to workflows, bump version. [Stephen L Arnold]

  • Bump version again. [Andreas van Cranenburgh]

  • Merge pull request #28 from sarnold/use-action. [Andreas van Cranenburgh]

    Workflow cleanup

  • Move pypi upload to end of release.yml, use gitchangelog action. [Stephen L Arnold]

v0.3.4 (2021-04-10)

Changes

  • Ci: update workflows and tox cfg (use tox for smoke test) [Stephen L Arnold]

  • Rename imported test helpers to avoid any discovery issues. [Stephen L Arnold]

Fixes

  • Apply test patch, cleanup tox and pytest args. [Stephen L Arnold]

  • Handle invalid escape sequence warnings, revert path changes. [Stephen L Arnold]

Other

  • Bump version. [Andreas van Cranenburgh]

  • Improve fix for #26. [Andreas van Cranenburgh]

  • Add test for #26. [Andreas van Cranenburgh]

  • Fix infinite loop on substitutions of empty matches; fixes #26. [Andreas van Cranenburgh]

  • Fix “make test” and “make test2” [Andreas van Cranenburgh]

  • Merge pull request #25 from sarnold/last-moves. [Andreas van Cranenburgh]

    Last moves

  • Another one. [Andreas van Cranenburgh]

  • Fix fix of conda patch. [Andreas van Cranenburgh]

  • Fix conda patch. [Andreas van Cranenburgh]

  • Fix “make test”; rename doctest files for autodetection. [Andreas van Cranenburgh]

  • Fix narrow unicode detection. [Andreas van Cranenburgh]

  • Merge pull request #24 from sarnold/tst-cleanup. [Andreas van Cranenburgh]

    Test cleanup

  • Fix Python 2 compatibility. [Andreas van Cranenburgh]

  • Use pytest; fixes #23. [Andreas van Cranenburgh]

  • Tweak order of badges. [Andreas van Cranenburgh]

  • Makefile: default to Python 3. [Andreas van Cranenburgh]

  • Update README, fix Makefile. [Andreas van Cranenburgh]

  • Merge pull request #22 from sarnold/missing-tests. [Andreas van Cranenburgh]

    add missing tests to sdist package, update readme and ci worflows (#1)

  • Fix pickle_test (tests.test_re.ReTests) … ERROR (run tests with nose) [Stephen L Arnold]

  • Update changelog (and trigger ci rebuild) [Stephen L Arnold]

  • Add missing tests to sdist package, update readme and ci worflows (#1) [Steve Arnold]

    readme: update badges, merge install sections, fix some rendering issues

v0.3.3 (2021-01-26)

Changes

  • Add .gitchangelog.rc and generated CHANGELOG.rst (keep HISTORY) [Stephen L Arnold]

  • Ci: update wheel builds for Linux, Macos, and Windows. [Stephen L Arnold]

Fixes

  • Ci: make sure wheel path is correct for uploading. [Stephen L Arnold]

Other

  • Bump version. [Andreas van Cranenburgh]

  • Update README.rst. fixes #21. [Andreas van Cranenburgh]

  • Merge pull request #20 from freepn/new-bld. [Andreas van Cranenburgh]

    New cmake and pybind11 build setup

v0.3.2 (2020-12-16)

  • Bump version. [Andreas van Cranenburgh]

  • Merge pull request #18 from freepn/github-ci. [Andreas van Cranenburgh]

    workaroud for manylinux dependency install error plus release automation

v0.3.1 (2020-10-27)

  • Bump version. [Andreas van Cranenburgh]

  • Change package name for pypi. [Andreas van Cranenburgh]

v0.3 (2020-10-27)

  • Bump version. [Andreas van Cranenburgh]

  • Merge pull request #14 from yoav-orca/master. [Andreas van Cranenburgh]

    Support building wheels automatically using github actions

  • Creating github actions for building wheels. [Yoav Alon]

  • Created pyproject.toml. [Yoav Alon]

    Poetry and other modern build system need to know which build-tools to install prior to calling setup.py. added a pyproject.toml to specify cython as a dependency.

  • Add contains() method. [Andreas van Cranenburgh]

    • contains() works like match() but returns a bool to avoid creating a Match object. see #12

    • add wrapper for re.Pattern so that contains() and count() methods are also available when falling back to re.

  • Disable dubious tests. [Andreas van Cranenburgh]

    • All tests pass.

    • Don’t test for exotic/deprecated stuff such as non-initial flags in patterns and octal escapes without leading 0 or triple digits.

    • Known corner cases no longer reported as failed tests.

    • support b inside character class to mean backspace

    • use re.error instead of defining subclass RegexError; ensures that exceptions can be caught both in re2 and in a potential fallback to re.

  • Disable failing test for known corner case. [Andreas van Cranenburgh]

  • Remove tests with re.LOCALE flag since it is not allowed with str in Python 3.6+ [Andreas van Cranenburgh]

  • Decode named groups even with bytes patterns; fixes #6. [Andreas van Cranenburgh]

  • Make -std=c++11 the default; fixes #4. [Andreas van Cranenburgh]

  • Merge pull request #5 from mayk93/master. [Andreas van Cranenburgh]

    Adding c++ 11 compile flag on Ubuntu

  • Adding c++ 11 compile flag on Ubuntu. [Michael]

  • Merge pull request #3 from podhmo/macports. [Andreas van Cranenburgh]

    macports support

  • Macports support. [podhmo]

  • Use STL map for unicodeindices. [Andreas van Cranenburgh]

  • Only translate unicode indices when needed. [Andreas van Cranenburgh]

  • Update README. [Andreas van Cranenburgh]

  • Add -std=c++11 only for clang, because gcc on CentOS 6 does not support it. [Andreas van Cranenburgh]

  • Disable non-matched group tests; irrelevant after dad49cd. [Andreas van Cranenburgh]

  • Merge pull request #2 from messense/master. [Andreas van Cranenburgh]

    Fix groupdict decode bug

  • Fix groupdict decode bug. [messense]

  • Merge pull request #1 from pvaneynd/master. [Andreas van Cranenburgh]

    Ignore non-matched groups when replacing with sub

  • Ignore non-matched groups when replacing with sub. [Peter Van Eynde]

    From 3.5 onwards sub() and subn() now replace unmatched groups with empty strings. See:

    https://docs.python.org/3/whatsnew/3.5.html#re

    This change removes the ‘unmatched group’ error which occurs when using re2.

  • Fix setup.py unicode error. [Andreas van Cranenburgh]

  • Add C++11 param; update URL. [Andreas van Cranenburgh]

  • Fix bugs; ensure memory is released; simplify C++ interfacing; [Andreas van Cranenburgh]

    • Fix bug causing zero-length matches to be returned multiple times

    • Use Latin 1 encoding with RE2 when unicode not requested

    • Ensure memory is released: - put del calls in finally blocks - add missing del call for ‘matches’ array

    • Remove Cython hacks for C++ that are no longer needed; use const keyword that has been supported for some time. Fixes Cython 0.24 compilation issue.

    • Turn _re2.pxd into includes.pxi.

    • remove some tests that are specific to internal Python modules _sre and sre

  • Fix Match repr. [Andreas van Cranenburgh]

  • Add tests for bug with \b. [Andreas van Cranenburgh]

  • Document support syntax &c. [Andreas van Cranenburgh]

    • add reference of supported syntax to main docstring

    • add __all__ attribute defining public members

    • add re’s purge() function

    • add tests for count method

    • switch order of prepare_pattern() and _compile()

    • rename prepare_pattern() to _prepare_pattern() to signal that it is semi-private

  • Add count method. [Andreas van Cranenburgh]

    • add count method, equivalent to len(findall(…))

    • use arrays in utf8indices

    • tweak docstrings

  • Move functions around. [Andreas van Cranenburgh]

  • Improve substitutions, Python 3 compatibility. [Andreas van Cranenburgh]

    • when running under Python 3+, reject unicode patterns on bytes data, and vice versa, in according with general Python 3 behavior.

    • improve Match.expand() implementation.

    • The substitutions by RE2 behave differently from Python (character escapes, named groups, etc.), so use Match.expand() for anything but simple literal replacement strings.

    • make groupindex of pattern objects public.

    • add Pattern.fullmatch() method.

    • use #define PY2 from setup.py instead of #ifdef hack.

    • debug option for compilation.

    • use data() instead of c_str() on C++ strings, and always supply length, so that strings with null characters are supported.

    • bump minimum cython version due to use of bytearray typing

    • adapt tests to Python 3; add b and u string prefixes where needed, &c.

    • update README

  • Add flags parameter to toplevel functions. [Andreas van Cranenburgh]

  • Update performance table / missing features. [Andreas van Cranenburgh]

  • Workaround for sub(…) with count > 1. [Andreas van Cranenburgh]

  • Handle named groups in replacement string; &c. [Andreas van Cranenburgh]

    • handle named groups in replacement string

    • store index of named groups in Pattern object instead of Match object.

    • use bytearray for result in _subn_callback

  • Pickle Patterns; non-char buffers; &c. [Andreas van Cranenburgh]

    • support pickling of Pattern objects

    • support buffers from objects that do not support char buffer (e.g., integer arrays); does not make a lot of sense, but this is what re does.

    • enable benchmarks shown in readme by default; fix typo.

    • fix typo in test_re.py

  • New buffer API; precompute groups/spans; &c. [Andreas van Cranenburgh]

    • use new buffer API NB: even though the old buffer interface is deprecated from Python 2.6, the new buffer interface is only supported on mmap starting from Python 3.

    • avoid creating Match objects in findall()

    • precompute groups and spans of Match objects, so that possibly encoded version of search string (bytestr / cstring) does not need to be kept.

    • in _make_spans(), keep state for converting utf8 to unicode indices; so that there is no quadratic behavior on repeated invocations for different Match objects.

    • release GIL in pattern_Replace / pattern_GlobalReplace

    • prepare_pattern: loop over pattern as char *

    • advertise Python 3 support in setup.py, remove python 2.5

  • Properly translate pos, endpos indices with unicode, &c. [Andreas van Cranenburgh]

    • properly translate pos, endpos indices with unicode

    • keep original unicode string in Match objects

    • separate compile.pxi file

  • Re-organize code. [Andreas van Cranenburgh]

  • Minor changes. [Andreas van Cranenburgh]

  • Python 2/3 compatibility, support buffer objects, &c. [Andreas van Cranenburgh]

    • Python 2/3 compatibility

    • support searching in buffer objects (e.g., mmap)

    • add module docstring

    • some refactoring

    • remove outdated Cython-generated file

    • modify setup.py to cythonize as needed.

  • Implement finditer as generator. [Andreas van Cranenburgh]

  • Merge pull request #31 from sunu/master. [Michael Axiak]

    Add Python 3 support.

  • Add Python 3 support. [Tarashish Mishra]

  • Version bump. [Michael Axiak]

release/0.2.22 (2015-05-15)

  • Version bump. [Michael Axiak]

  • Merge pull request #22 from socketpair/release_gil_on_compile. [Michael Axiak]

    Release GIL during regex compilation.

  • Release GIL during regex compilation. [Коренберг Марк]

    (src/re2.cpp is not regenerated in this commit)

release/0.2.21 (2015-05-14)

  • Release bump. [Michael Axiak]

  • Merge pull request #18 from offlinehacker/master. [Michael Axiak]

    setup.py: Continue with default lib paths if not detected automatically

  • Setup.py: Continue with default lib paths if not detected automatically. [Jaka Hudoklin]

  • Fix issue #11. [Michael Axiak]

  • Remove spurious print statement. [Michael Axiak]

  • Added version check in setup.py to prevent people from shooting themselves in the foot trying to compile with an old cython version. [Michael Axiak]

release/0.2.20 (2011-11-15)

  • Version bump to 0.2.20. [Michael Axiak]

  • Version bump to 0.2.18 and use MANIFEST.in since python broke how sdist works in 2.7.1 (but fixes it in 2.7.3…) [Michael Axiak]

release/0.2.16 (2011-11-08)

Fixes

  • Unmatched group span (-1,-1) caused exception in _convert_pos. [Israel Tsadok]

  • Last item in qualified split included the item before last. [Israel Tsadok]

  • Exception in callback would cause a memory leak. [Israel Tsadok]

  • Group spans need to be translated to their relative decoded positions. [Israel Tsadok]

  • This is not what verbose means in this context. [Israel Tsadok]

  • Findall used group(0) instead of group(1) when there was a group. [Israel Tsadok]

  • Dangling reference when _subn_callback breaks on limit. [Israel Tsadok]

  • Infinite loop in pathological case of findall(“.*”, “foo”) [Israel Tsadok]

Other

  • Version bump to 0.2.16. [Michael Axiak]

  • Merged itsadok’s changes to fix treatment of D and W. Added tests to reflection issue #4. [Michael Axiak]

  • Fixed issue #5, support W, S and D. [Israel Tsadok]

  • Fixed issue #3, changed code to work with new re2 api. [Michael Axiak]

  • Merge branch ‘itsadok-master’ [Michael Axiak]

  • Merge branch ‘master’ of https://github.com/itsadok/pyre2 into itsadok-master. [Michael Axiak]

  • Failing tests for pos and endpos. [Israel Tsadok]

  • Set default notification to FALLBACK_QUIETLY, as per the documentation. [Israel Tsadok]

  • Get rid of deprecation warning. [Israel Tsadok]

  • Fix hang on findall(‘’, ‘x’) [Israel Tsadok]

  • Allow weak reference to Pattern object. [Israel Tsadok]

  • Allow named groups in span(), convert all unicode positions in one scan. [Israel Tsadok]

  • Added failing test for named groups. [Israel Tsadok]

  • Fix lastgroup and lastindex. [Israel Tsadok]

  • Verify that flags do not get silently ignored with compiled patterns. [Israel Tsadok]

  • Had to cheat on a test, since we can’t support arbitrary bytes. [Israel Tsadok]

  • Fix lastindex. [Israel Tsadok]

  • Pass some more tests - added pos, endpos, regs, re attributes to Match object. [Israel Tsadok]

  • Added max_mem parameter, bumped version to 0.2.13. [Michael Axiak]

  • Remove spurious get_authors() call. [Michael Axiak]

  • Added Alex to the authors file. [Michael Axiak]

  • Version bumped to 0.2.11. [Michael Axiak]

  • Added difference in version to changelist, added AUTHORS parsing to setup.py. [Michael Axiak]

  • Added check for array, added synonym ‘error’ for RegexError to help pass more python tests. [Michael Axiak]

  • Made make test run a little nicer. [Michael Axiak]

  • Added note about copyright assignment to authors. [Michael Axiak]

  • Fix test_re_match. [Israel Tsadok]

  • Fix test_bug_1140. [Israel Tsadok]

  • Update readme. [Israel Tsadok]

  • Preprocess pattern to match re2 quirks. Fixes several bugs. [Israel Tsadok]

  • Re2 doesn’t like when you escape non-ascii chars. [Israel Tsadok]

  • Merge remote branch ‘moreati/master’ [Israel Tsadok]

  • Merge from axiak/HEAD. [Alex Willmer]

  • Merge from axiak/master. [Alex Willmer]

  • Pass ErrorBadEscape patterns to re.compile(). Have re.compile() accept SRE objects. [Alex Willmer]

  • Ignore .swp files. [Alex Willmer]

  • Remove superfluous differences to axiak/master. [Alex Willmer]

  • Merge remote branch ‘upstream/master’ [Alex Willmer]

  • Merge changes from axiak master. [Alex Willmer]

  • Fix previous additions to setup.py. [Alex Willmer]

  • Add url to setup.py. [Alex Willmer]

  • Remove #! line from re.py module, since it isn’t a script. [Alex Willmer]

  • Add classifers and long description to setup.py. [Alex Willmer]

  • Add MANIFEST.in. [Alex Willmer]

  • Merge branch ‘master’ of git://github.com/facebook/pyre2. [Alex Willmer]

    Conflicts:

    re2.py

  • Ignore byte compiled python files. [Alex Willmer]

  • Add copyright, license, and three convenience functions to re2.py. [Alex Willmer]

  • Switch re2.h include to angle brackets. [Alex Willmer]

  • Handle n in replace template, since re2 doesn’t. [Israel Tsadok]

  • Import escape function as it from re. [Israel Tsadok]

  • The unicode char classes never worked. TIL testing is important. [Israel Tsadok]

  • Make unicode stickyness rules like in re module. [Israel Tsadok]

  • Return an iterator from finditer. [Israel Tsadok]

  • Have re.compile() accept SRE objects. (copied from moreati’s fork) [Israel Tsadok]

  • Fix var name mixup. [Israel Tsadok]

  • Added self to authors. [Israel Tsadok]

  • Fix memory leak. [Israel Tsadok]

  • Added re unit test from python2.6. [Israel Tsadok]

  • Make match group allocation more RAII style. [Israel Tsadok]

  • Use None for unused groups in split. [Israel Tsadok]

  • Change split to match sre.c implementation, and handle empty matches. [Israel Tsadok]

  • Match delete[] to new[] calls. [Israel Tsadok]

  • Added group property to match re API. [Israel Tsadok]

  • Use appropriate char classes in case of re.UNICODE. [Israel Tsadok]

  • Fall back on re in case of back references. [Israel Tsadok]

  • Use unmangled pattern in case of fallback to re. [Israel Tsadok]

  • Simplistic cache, copied from re.py. [Israel Tsadok]

  • Fix some memory leaks. [Israel Tsadok]

  • Allow multiple arguments to group() [Israel Tsadok]

  • Allow multiple arguments to group() [Israel Tsadok]

  • Fixed path issues. [Michael Axiak]

  • Added flags to pattern object, bumped version number. [Michael Axiak]

  • Change import path to fix include dirs. [Michael Axiak]

  • Updated manifest and changelog. [Michael Axiak]

  • Added .expand() to group objects. [Michael Axiak]

  • Removed the excessive thanks. [Michael Axiak]

  • Added regex module to performance tests. [Michael Axiak]

  • Pattern objects should be able to return the input pattern. [Alec Berryman]

    I’m just storing the original object passed in (found it could be str or unicode - thanks, unicode tests!). It could be calculated if important to save space.

  • Further findall fix: one-match finds. [Alec Berryman]

    I read the spec more carefully this time.

  • Added changelist file for future releases. [Michael Axiak]

  • Added alec to AUTHORS. Bumped potential version number. Fixed findall support to work without closures. [Michael Axiak]

  • Make pyre2 64-bit safe. [Alec Berryman]

    Now compiles on a 64-bit system; previously, complained that you might have a string size that couldn’t fit into an int. Py_ssize_t is required instead of plain size_t because Python’s is signed.

  • Fix findall behavior to match re. [Alec Berryman]

    findall is to return a list of strings or tuples of strings, while finditer is to return an iterator of match objects; previously both were returning lists of match objects. findall was fixed, but finditer is still returning a list.

    New tests.

  • Makefile: test target. [Alec Berryman]

  • Note Cython 0.13 dependency. [Alec Berryman]

  • Moved to my own license. I can do that since I started the code from scratch. [Michael Axiak]

  • Fix formatting of table. [Michael Axiak]

  • Added number of trials, fixed some wording. [Michael Axiak]

  • Added missing files to MANIFEST. [Michael Axiak]

  • Added performance testing, bumped version number. [Michael Axiak]

  • Added readme data. [Michael Axiak]

  • Updated installation language. [Michael Axiak]

  • Incremented version number. [Michael Axiak]

  • Fixed split regression with missing unicode translation. [Michael Axiak]

  • Maybe utf8 works? [Michael Axiak]

  • Got unicode to past broken test. [Michael Axiak]

  • Added debug message for issue with decoding. [Michael Axiak]

  • Added more utf8 stuff. [Michael Axiak]

  • Delay group construction for faster match testing. [Michael Axiak]

  • Got utf8 support to work. [Michael Axiak]

  • Starting to add unicode support… BROKEN. [Michael Axiak]

  • Added fallback and notification. [Michael Axiak]

  • Added runtime library path to fix /usr/local/ bug for installation of re2 library. [Michael Axiak]

  • Fixed setup and updated readme. [Michael Axiak]

  • Added more setup.py antics. [Michael Axiak]

  • Added ancillary stuff. [Michael Axiak]

  • Added sub, subn, findall, finditer, split. Bam. [Michael Axiak]

  • Added finditer along with tests. [Michael Axiak]

  • Fix rst. [Michael Axiak]

  • Added contact link to readme. [Michael Axiak]

  • Fixed formatting for readme. [Michael Axiak]

  • Added lastindex, lastgroup, and updated README file. [Michael Axiak]

  • Added some simple tests. Got match() to work, named groups to work. spanning to work. pretty much at the same level as pyre2 proper. [Michael Axiak]

  • Added more things to gitignore, another compile. [Michael Axiak]

  • Move code to src directory for better sanity. [Michael Axiak]

  • Updated re2 module to use Cython instead, got matching working almost completely with minimal flag support. [Michael Axiak]

  • Suppress logging of failed pattern compilation. [David Reiss]

    This isn’t necessary in Python since errors are reported by exceptions. Use a slightly more verbose form to allow easier setting of more options later.

  • Don’t define tp_new for regexps and matches. [David Reiss]

    It turns out that these are not required to use PyObject_New. They are only required to allow Python code to call the type to create a new instance, which I don’t want to allow. Remove them.

  • Fix a segfault by initializing attr_dict to NULL. [David Reiss]

    I thought PyObject_New would call my tp_new, which is set to PyType_GenericNew, which NULLs out all user-defined fields (actually memset, but the docs say NULL). However, this appears to not be the case. Explicitly NULL out attr_dict in create_regexp to avoid segfaults when compiling a bad pattern. Do it for create_match too for future safety, even though it is not required with the current code.

  • Add struct tags for easier debugging with gdb. [David Reiss]

    See http://sourceware.org/ml/archer/2009-q1/msg00085.html for a little more information.

  • Add some convenience functions to re2.py. [Alex Willmer]

  • Add a copyright and license comment to re2.py. [David Reiss]

    This is to prepare for adding some not-totally-trivial code to it.

  • Use PEP-8-compliant 4-space indent in re2.py. [David Reiss]

  • Use angle-brackets for the re2.h include. [Alex Willmer]

  • Add build information to the README. [David Reiss]

  • Add contact info to README. [David Reiss]

  • Initial commit of pyre2. [David Reiss]