more readable linkification for the CHANGELOG

This commit is contained in:
Mahmoud Hashemi 2015-08-22 16:48:52 -07:00
parent 18e2663270
commit 4981e96633
2 changed files with 74 additions and 63 deletions

View File

@ -13,15 +13,15 @@ from the first wave addressed and closed. tzutils merged into
timeutils. AtomicSaver approach and API much improved. Several other
features added:
* [iterutils.backoff](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.backoff) and [iterutils.backoff_iter](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.backoff_iter) for exponential backoff
* [iterutils.frange](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.frange) and [iterutils.xfrange](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.xfrange) for floating point range generation
* Slightly more permissive [jsonutils.JSONLIterator](http://boltons.readthedocs.org/en/latest/jsonutils.html#boltons.jsonutils.JSONLIterator) blank line ignoring
* [strutils.iter_splitlines](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.iter_splitlines) for lazily getting lines from a larger string
* [timeutils.dt_to_timestamp](http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.dt_to_timestamp), per the long-lived PR [#13](https://github.com/mahmoud/boltons/issues/13).
* iterutils.backoff and iterutils.backoff_iter for exponential backoff
* iterutils.frange and iterutils.xfrange for floating point range generation
* Slightly more permissive jsonutils.JSONLIterator blank line ignoring
* strutils.iter_splitlines for lazily getting lines from a larger string
* timeutils.dt_to_timestamp, per the long-lived PR #13.
* Merged tzutils into timeutils
* [fileutils.AtomicSaver](http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.AtomicSaver) rewrite and redoc
* -teens support for [strutils.ordinalize](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.ordinalize)
* made [iterutils.one](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.one) consistent with [iterutils.first](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.first)
* fileutils.AtomicSaver rewrite and redoc
* -teens support for strutils.ordinalize
* made iterutils.one consistent with iterutils.first
0.6.6
@ -31,7 +31,7 @@ features added:
Fix atomic saving open-file issue for Windows.
* Patch for AtomicSaver on Windows. Full rewrite comes in 15.0.0.
* [strutils.gunzip_bytes](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.gunzip_bytes) for decompressing a gzip bytestring
* strutils.gunzip_bytes for decompressing a gzip bytestring
0.6.5
@ -39,20 +39,20 @@ Fix atomic saving open-file issue for Windows.
*(July 30, 2015)*
BufferedSocket work, html2text, pairwise shortcut, is_container, plural
typo fix, [timeutils.isoparse](http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.isoparse), [cacheutils.ThresholdCounter](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.ThresholdCounter), and lots of
typo fix, timeutils.isoparse, cacheutils.ThresholdCounter, and lots of
testing
* Add [iterutils.first](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.first) function
* Add [cacheutils.ThresholdCounter](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.ThresholdCounter)
* Add iterutils.first function
* Add cacheutils.ThresholdCounter
* Add JSONL verification to jsonutils
* Add [timeutils.isoparse](http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.isoparse)
* Add [strutils.html2text](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.html2text) and [strutils.HTMLTextExtractor](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.HTMLTextExtractor)
* Fix [strutils.pluralize](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.pluralize) (indeces -> indices, per [#41](https://github.com/mahmoud/boltons/issues/41))
* Add [iterutils.is_container](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.is_container) function
* Fixed a small formatting bug in [tbutils.ExceptionInfo](http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.ExceptionInfo) that added
* Add timeutils.isoparse
* Add strutils.html2text and strutils.HTMLTextExtractor
* Fix strutils.pluralize (indeces -> indices, per #41)
* Add iterutils.is_container function
* Fixed a small formatting bug in tbutils.ExceptionInfo that added
an extra 'builtins.' for builtin exceptions under python 3
* Added tests for many modules
* Create [iterutils.pairwise](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.pairwise) shortcuts for pairwise chunks since
* Create iterutils.pairwise shortcuts for pairwise chunks since
pairs (key/val) are common
* Additional 2.6 compatibility and tests
* Fixed CachedInstancePartial to be Python 3 friendly without breaking
@ -69,16 +69,16 @@ Fixed multiline exception message handling in ParsedException. added
mathutils. adding a tentative version of socketutils. fix LRU.popitem. fix
OMD.__eq__.
* Fix a bug where [dictutils.OrderedMultiDict](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict)'s __eq__ would fail
* Fix a bug where dictutils.OrderedMultiDict's __eq__ would fail
with non-iterable objects of comparison
* Fixed `LRU.popitem` to return a key value pair
* Added mathutils with [mathutils.ceil](http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.ceil) and [mathutils.floor](http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.floor)
* Added mathutils with mathutils.ceil and mathutils.floor
implementations that can search a fixed set of choices using the
bisect module.
* Fix [excutils.ParsedException](http://boltons.readthedocs.org/en/latest/excutils.html#boltons.excutils.ParsedException) so exception message would not start
* Fix excutils.ParsedException so exception message would not start
with whitespace
* Fix multiline exception messages
* Adding [socketutils.BufferedSocket](http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.BufferedSocket) and [socketutils.NetstringSocket](http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.NetstringSocket)
* Adding socketutils.BufferedSocket and socketutils.NetstringSocket
0.6.3
@ -88,12 +88,12 @@ OMD.__eq__.
Add typeutils, remove compat.py, make ParsedException work with eval()ed
code
* Properly parse tracebacks with missing source. Resolves [#30](https://github.com/mahmoud/boltons/issues/30)
* Tweak the docs for [typeutils.get_all_subclasses](http://boltons.readthedocs.org/en/latest/typeutils.html#boltons.typeutils.get_all_subclasses)
* Moved [typeutils.make_sentinel](http://boltons.readthedocs.org/en/latest/typeutils.html#boltons.typeutils.make_sentinel) into typeutils and removed the
* Properly parse tracebacks with missing source. Resolves #30
* Tweak the docs for typeutils.get_all_subclasses
* Moved typeutils.make_sentinel into typeutils and removed the
confusing compat module
* Add in typeutils with modifications per the caveats of [#15](https://github.com/mahmoud/boltons/issues/15)
* Added function [iterutils.one](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.one)
* Add in typeutils with modifications per the caveats of #15
* Added function iterutils.one
0.6.2
-----
@ -101,10 +101,10 @@ code
Add partial_ordering, fix LRU repr and addition behavior
* Add [funcutils.partial_ordering](http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.partial_ordering)(), decorator similar to
* Add funcutils.partial_ordering(), decorator similar to
functools.total_ordering()
* Fixed [cacheutils.LRU](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.LRU)'s behavior per [#21](https://github.com/mahmoud/boltons/issues/21)
* Fix [cacheutils.LRU](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.LRU) repr reversal, fixes [#20](https://github.com/mahmoud/boltons/issues/20)
* Fixed cacheutils.LRU's behavior per #21
* Fix cacheutils.LRU repr reversal, fixes #20
0.6.0
-----
@ -117,9 +117,9 @@ Python 3 support and several community bugfixes. Docs clarifications, too.
2.7, 3.4, and PyPy.
* clarify TracebackInfo.from_current() method gap, per user 'dl__'
here: http://www.reddit.com/r/Python/comments/321d3o/boltons_over_100_python_utilities/
* Fix the [cacheutils.cached](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.cached) decorator, adding a sanity test, fixes [#12](https://github.com/mahmoud/boltons/issues/12)
* Fix the cacheutils.cached decorator, adding a sanity test, fixes #12
* Fix bytes2human when builtin zip returns iterators
* Simplified logic of [iterutils.chunked](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunked)
* Simplified logic of iterutils.chunked
0.5.1
-----
@ -129,10 +129,10 @@ A lot of bugfixes and Python 2.6 and PyPy compatibility changes thanks
to community contributions and encouragement.
* Corrected cases where OMD was not exactly a dropin for OrderedDict
* conditional availability of [gcutils.get_all](http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.get_all) based on pypy or cpython, also
[gcutils.is_tracked](http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.is_tracked) was added in 2.7, so making [gcutils.get_all](http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.get_all) work with 2.6
* conditional availability of gcutils.get_all based on pypy or cpython, also
gcutils.is_tracked was added in 2.7, so making gcutils.get_all work with 2.6
* Made namedutils backwards compatibilty for python 2.6 best effort
* Fix invalid part_path usage in [fileutils.AtomicSaver](http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.AtomicSaver)
* Fix invalid part_path usage in fileutils.AtomicSaver
0.5.0
-----
@ -142,18 +142,18 @@ First publicly released version. The major focus of this release was
docs, docstrings, and Read The Docs.
* Cleared out __init__ module for maximum independence
* making [statsutils.median](http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.median) use _get_quantile and add [statsutils.trimean](http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.trimean)
* Switching the [statsutils.Stats](http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats) type to be more sorted-data oriented, since it's
* making statsutils.median use _get_quantile and add statsutils.trimean
* Switching the statsutils.Stats type to be more sorted-data oriented, since it's
only for offline analysis of unordered data
* Made consistent multi-line string formats, as well as usage of the
term 'builtin' vs 'built-in' (noun vs adjective)
* Instrumented LRI with stats tracking
* Made [timeutils.decimal_relative_time](http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.decimal_relative_time) cardinalization optional
* Made timeutils.decimal_relative_time cardinalization optional
* Removed timeutils dependency on strutils
* Made [tbutils.TracebackInfo](http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.TracebackInfo) classmethods work with no arguments.
* Renamed ParsedTB to [tbutils.ParsedException](http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.ParsedException)
* Made [dictutils.OMD](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OMD) .get()/.getlist() semantics more consistent.
* finalizing .todict() and adding .sorted() to the [dictutils.OMD](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OMD)
* Made tbutils.TracebackInfo classmethods work with no arguments.
* Renamed ParsedTB to tbutils.ParsedException
* Made dictutils.OMD .get()/.getlist() semantics more consistent.
* finalizing .todict() and adding .sorted() to the dictutils.OMD
* Removed osutils and adding a note about utils in general
* Made cacheutils more consistent between LRU and LRI, adding some
cacheutils docs
@ -168,9 +168,9 @@ docs, docstrings, and Read The Docs.
Mostly a dictutils API update (addlist), but also gcutils.
* [dictutils.OMD](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OMD): split out addlist() from add(), removing the multi
* dictutils.OMD: split out addlist() from add(), removing the multi
kwarg
* adding gcutils with [gcutils.GCToggler](http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.GCToggler) and gc.get_all
* adding gcutils with gcutils.GCToggler and gc.get_all
0.4.1
@ -191,10 +191,10 @@ hashtags
* tbutils: Changed the way exceptions are parsed out of tracebacks
* tbutils: Guard against potential linecache issues
* Defined/implemented [iterutils.windowed_iter](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.windowed_iter) corner case behavior
* Added from_path to [fileutils.FilePerms](http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.FilePerms)
* Adding [strutils.find_hashtags](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.find_hashtags)
* Add ignore patterns to [fileutils.iter_find_files](http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.iter_find_files)
* Defined/implemented iterutils.windowed_iter corner case behavior
* Added from_path to fileutils.FilePerms
* Adding strutils.find_hashtags
* Add ignore patterns to fileutils.iter_find_files
0.3.0
@ -210,13 +210,13 @@ added in this release.
convenience method for ExceptionInfo -> default exception print,
also need to add more docstrings.
* adding initial jsonutils with JSONL support
* added [cacheutils.LRU](http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.LRU)
* added [timeutils.parse_timedelta](http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.parse_timedelta)
* added cacheutils.LRU
* added timeutils.parse_timedelta
* fixing iteritems with multi=False in the
[dictutils.OrderedMultiDict](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict) (should return first key, but last
dictutils.OrderedMultiDict (should return first key, but last
value not first)
* debugutils: add pdb excepthook and [debugutils.pdb_on_signal](http://boltons.readthedocs.org/en/latest/debugutils.html#boltons.debugutils.pdb_on_signal)
* add [fileutils.mkdir_p](http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.mkdir_p)
* debugutils: add pdb excepthook and debugutils.pdb_on_signal
* add fileutils.mkdir_p
* tableutils: add maxlen to table text stuff
* fix date citation for gob's
* adding pure-Python implementation of Gob's algorithm
@ -265,10 +265,10 @@ added in this release.
* fix reverse; missing yield from!
* add initial table biz
* add get_counts
* add [dictutils.OrderedMultiDict.get_inverted](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.get_inverted)() for those handy reverse lookups
* add dictutils.OrderedMultiDict.get_inverted() for those handy reverse lookups
* break out skip list to FastIter OMD + bench
* add [strutils.a10n](http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.a10n)()
* fix a bug in [dictutils.OrderedMultiDict](http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict)'s .add()
* add strutils.a10n()
* fix a bug in dictutils.OrderedMultiDict's .add()
* adding initial reimplementation of OMD
* adding some tests to dictutils
* update boltons formatutils to match what's goin on in lithoxyl
@ -381,7 +381,5 @@ added in this release.
* bucketize and bucketize_bool, with docs
* add examples to chunked and chunked_iter
* update split() docs with more examples.
* [iterutils.chunked_iter](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunked_iter) and [iterutils.chunked](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunked)
* [iterutils.split](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.split) and [iterutils.split_iter](http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.split_iter) work
ckof±
* iterutils.chunked_iter and iterutils.chunked
* iterutils.split and iterutils.split_iter work

View File

@ -8,12 +8,14 @@ BASE_ISSUES_URL = 'https://github.com/mahmoud/boltons/issues/'
_issues_re = re.compile('#(\d+)')
_member_re = re.compile('((\w+utils)\.[a-zA-Z0-9_.]+)')
URL_MAP = {}
def sub_member_match(match):
full_name = match.group(1)
mod_name = match.group(2)
url = BASE_RTD_URL + mod_name + '.html#boltons.' + full_name
ret = '[%s](%s)' % (full_name, url)
ret = '[%s][%s]' % (full_name, full_name)
URL_MAP[full_name] = url
# print ret
return ret
@ -21,8 +23,10 @@ def sub_member_match(match):
def sub_issue_match(match):
link_text = match.group(0)
issue_num = match.group(1)
link_target = BASE_ISSUES_URL + issue_num
ret = '[%s](%s)' % (link_text, link_target)
link_target = 'i%s' % issue_num
link_url = BASE_ISSUES_URL + issue_num
ret = '[%s][%s]' % (link_text, link_target)
URL_MAP[link_target] = link_url
# print ret
return ret
@ -35,7 +39,16 @@ def main():
cl_text = open(cl_filename).read().decode('utf-8')
ret = _member_re.sub(sub_member_match, cl_text)
ret = _issues_re.sub(sub_issue_match, ret)
link_map_lines = []
for (name, url) in sorted(URL_MAP.items()):
link_map_lines.append('[%s]: %s' % (name, url))
print ret
print
print
print '\n'.join(link_map_lines)
print
if __name__ == '__main__':