-
Notifications
You must be signed in to change notification settings - Fork 144
/
CHANGELOG
390 lines (340 loc) · 12.3 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
2.0
- support Python 3.11 officially
- added get_lax()
- added lzip(strict) param
- made autocurry() and friends support kw-only and pos-only arguments
- improved call._whatever_ arg introspection: pos-only, kw-only, kwargs and varargs are supported
Backwards incompatible changes:
- dropped Python 2 support
- dropped namespace helper class
- dropped old SkipMemoization alias for SkipMemory exception
- @cache(key_func) param is now keyword only
- @decorator's call won't access args capturesd by **kwargs individually anymore
1.18
- added join_with(strict=)
- use more precise timer `timeit.default_timer` for log*durations (Saugat Pachhai)
- preserve metadata when using autocurry as a decorator (#117) (Kale Kundert)
- doc improvements (thx to Tim Gates)
1.17
- support Python 3.10 officially
- added del_in()
- made throttle() and limit_error_rate() work on methods
- added str and repr to Call objects
- migrated CI to Github actions (thx to Bruno Alla)
- fixed doc[string] for zip_dicts (Tal Einat)
- fixed some inspect issues
- minor doc fixes
1.16
- support Python 3.9 officially
- unify @memoize() and @cache(): both have .skip/.memory/.invalidate/.invalidate_all now
- support dynamic resulting exception in @reraise() (Laurens Duijvesteijn)
- made () optional for @decorator-made decorators with kw-only args
- added @throttle()
- added has_path() (Denys Zorinets)
- fixed autocurry kwargs handling
1.15
- made rpartial accept keyworded arguments (Ruan Comelli)
- made `@cache.invalidate()` idempotent (Dmitry Vasilyanov)
- made raiser() accept a string as a shortcut
- fixed cheatsheat description for 'distinct' helper (tsouvarev)
- fixed some seqs docstrings
- fixed some typos (Tim Gates)
1.14
- stated Python 3.7 and 3.8 support
- dropped Python 2.6
- added @wrap_prop()
- added filter_errors param to @retry()
- published nullcontext properly
1.13
- added @wrap_with()
- added nullcontext
1.12
- added @cached_readonly
- more introspection in @decorator decorators
- documented @cached_property inheritance limitations
- included tests in pypi sdist tarball (Tomáš Chvátal)
1.11
- switched docs and internals to Python 3
- improved docs: better texts and examples here and there
- support Python 3.7 officially
- added popups over functions everywhere in docs
- accept any iterables of errors in flow utils
- fixed walk_values() for defaultdicts with empty factory
- fixed xmap() signature introspection
- documented lzip()
1.10.3
- added repr_len param to various debug utils
- dropped testing in Python 3.3
1.10.2
- support extended function semantics in iffy (Eric Prykhodko)
- distribute as a universal wheel.
1.10.1
- use raise from in reraise()
- fix @cache with mixed positional and keywords args (thx to adrian-dankiv)
1.10
- added @reraise()
- added unit and threshold params to *_durations() utils
- published and documented LazyObject
- fixed iffy() default argument when action is not present (Dmytro Kabakchei)
1.9.1
- make where() skip nonexistent keys (Aleksei Voronov)
- fixed r?curry() on funcy i?map(), i?mapcat() and merge_with()
1.9
- filled in docstrings and some names
- better currying:
- all *curry() now work with builtins and classes
- autocurry() is robust in deciding when to call
- deprecated autocurry() n arg
- @memoize now exposes its memory and accepts key_func arg
- @cache also accepts key_func and supports funcs with **kwargs
- added omit() (Petr Melnikov)
- fixed/hacked PyCharm import introspection
- optimized i?reductions() in Python 3
- backported accumulate() to Python 2
1.8
- added count_reps()
- published namespace class
- added LazyObject (simplistic, experimental and not documented)
- support class dicts in walk*(), select*(), compact(), project() and empty()
- support Python 3 dict.keys(), .values() and .items() in walk*() and friends
- fixed empty() on iterators
- optimized chunking range() in Python 3
1.7.5
- fixed defaults in double @decorated function
- fixed @decorator with more than one default
1.7.4
- better error message on call.missed_arg access
- optimized call.arg access in @decorator
1.7.3
- support Python 3.6 officially
- fix deprecation warnings in Python 3.5 and 3.6
1.7.2
- added cheatsheet
- many fixes in docs
- documented @post_processing()
- fixed (print|log)_* on non-function callables
1.7.1
- fixed 3+ argument map() in Python 3
1.7
- support Python 3.5 officially
- added group_values()
- fixed i?partition_by() for non-boolean extended mapper
- cleanups and optimizations in colls and seqs
1.6
- added i?tree_nodes()
- added (log|print)_iter_durations() to debug utils
- added lists support to get_in(), set_in() and update_in()
- single argument takewhile() and dropwhile()
- published iwhere(), ipluck(), ipluck_attr() and iinvoke()
- support @retry() with list (not tuple) of errors (Zakhar Zibarov)
- changed µs to mks in time messages
- optimized update_in()
1.5
- added rcompose()
- added i?tree_leaves()
- added pluck_attr() (Marcus McCurdy)
- added set_in() and update_in()
- added get_in() (Swaroop)
- fixed bug with flatten() follow not passed deep
1.4
- added rpartial() and rcurry()
- support arguments in print_(calls|exits)
- made print_(errors|durations) work both with and without arguments
- made (log|print)_errors() work as context manager
- made (log|print)_durations() work as context managers
- pass func docstring to @cached_property
1.3
- added with_next()
- added timeout argument to @retry() (rocco66)
- support kwargs in @memoize'd functions (Lukasz Dobrzanski)
- do not cut result repr in @(log|print)_calls() and @(log|print)_exits
1.2
- support pypy3
- added @contextmanager, ContextDecorator
- added @(log|print)_(enters|exits)
- print stack trace in @(log|print)_(calls|errors)
- added label argument for tap()
- better formatted call signatures in debug utilities
- added itervalues()
- exposed empty(), iteritems()
- exposed @wraps and unwrap()
- slightly optimized last() and nth()
- fixed signatures of functions wrapped with @wrap_(mapper|selector)
1.1
- added merge_with() and join_with()
- added @once, @once_per_args and @once_per()
- added suppress() context manager
- added is_set()
- added name argument to @monkey
- decorators created with @decorator now set __original__ attribute
- optimized @decorator
- optimized nth() and last()
- lzip() is now exported by default from/for py3
Backward incompatible fixes:
- made pluck(), where() and invoke() return interators in python 3
- __wrapped__ attribute added by decorators now correctly refers to immediate wrapped not innermost
1.0.0
- @silent, @ignore() and decorators created with @decorator will now work
with method_descriptors and other non-wrappable callables.
- chained decorators now have access to arguments by name
- exposed cut_prefix() and cut_suffix()
- optimized re_tester()
- fixed @retry in python 3
Backward incompatible changes:
- function made from dict will now use __getitem__ instead of get.
Means possible KeyErrors for dicts and factory function calls for defaultdict.
Use `a_dict.get` instead of just `a_dict` for old behaviour.
- reverted imap(None, seq) to default strange behaviour.
0.10.1
- optimized @decorator
0.10
- added is_tuple()
- raiser() can now be called without arguments, defaults to Exception
- support del @cached_property
- optimized and cleaned up @cached_property
- optimized i?split(), split_at() and split_by()
- optimized @memoize
- optimized zipdict()
Backward incompatible changes:
- split(), split_at() and split_by() now return a tuple of two lists instead of list of them
- @cached_property no longer uses _name to store cached value
- partial() is now an alias to functools.partial, use func_partial() for old behaviour
0.9
- added experimental python 3 support
- added python 2.6 support
- added autocurry()
- published idistinct(), isplit(), isplit_at(), isplit_by()
- some optimizations
0.8
- added raiser()
- added idistinct()
- added key argument to i?distinct()
- added key argument to is_distinct()
- added group_by_keys()
Backward incompatible changes:
- walk_values() now updates defaultdict item factory to composition of mapper and old one
- izip_dicts() now packs values in tuple separate from key
- @decorator raises AttributeError not NameError when non-existent argument is accessed by name
0.7
- added i?flatten()
- added pairwise()
- added nth()
- added is_seqcont()
- greatly optimized @decorator
- added @log_durations and @print_durations
- @logs_calls and @print_calls now provide call signature on return
- @logs_calls and @print_calls now log errors, optional for @log_calls
- better call signature stringification for @(log|print)_(calls|errors)
- fixed i?partition() and i?chunks() with xrange()
Backward incompatible changes:
- is_iter() now returns False given xrange() object
0.6.0
- added izip_values() and izip_dicts()
- added last() and butlast()
- added isnone() and notnone() primitives
- added extended fn semantics to group_by(), count_by() and i?partition_by()
- added fill argument to with_prev()
- optimized ilen()
0.5.6
- fixed installation issue
0.5.5
- added count_by()
- added i?partition_by()
0.5.4
- added @post_processing() flow utility
- partition() and chunks() can handle iterators now
- added ipartition() and ichunks()
0.5.3
- fixed decorators produced with @decorator over non-functions
- optimized @ignore and @silent
0.5.2
- added i?without()
- more and better docs
Backward incompatible changes:
- compact() now strips all falsy values not just None
0.5.1
- added ints and slices to extended fn semantics
- added extended semantics to *_fn(), compose(), complement and i?juxt()
- can now @monkey() patch modules
- cached properties can now be set
0.5.0
- added type testing utilities
- added @monkey
- added cut_prefix() and cut_suffix() privately
- added @silent_lookuper
- exported @retry directly from from funcy
- better support for arg introspection in @decorator
Backward incompatible changes:
- removed defaults for log_calls() and log_errors()
- @make_lookuper decorated functions now will raise LookupError on memory miss,
use @silent_lookuper for old behavior
- call object in @decorator access to func, args and kwargs
is now done through _func, _args and _kwargs
0.4.1
- decorators created with @decorator are now able to pass additional args and kwargs
- @collecting, @joining() and @limit_error_rate() now exported directly from funcy
- @tap(), @log_calls and @log_errors() now exported directly from funcy
- added @print_calls and @print_errors
- better handling passing None to optional parameter
- docs for debugging utilities
Backward incompatible changes:
- @log renamed to @log_calls
0.4.0
- extended predicate/mapping semantics for seq and coll utils
- added str_join()
- added @collecting and @joining()
- added sums() and isums()
- better docs
0.3.4
- added with_prev()
- added iterable()
- support iterators in walk*(), select*(), empty() and project()
- reexport itertools.chain()
- faster curry
- more docs
0.3.3
- added compact(), i?reductions()
- added default argument to @ignore()
- added tap() experimental debug utility
- @make_lookuper() now works on functions with arguments
- exposed ilen() publicly
- added default argument to @ignore()
- fix: join() and merge() now correctly fail when receive [None, ...]
- better docs
Backward incompatible changes:
- renamed @memoize.lookup() to @make_lookuper()
0.3.2
- added ilen()
- added some object helpers: namespace base class and @cached_property
- more docs
0.3.1
- added @memoize.lookup()
- more and better docs
Backward incompatible changes:
- removed generator based @decorator version
- pluck() now accepts key as first parameter
0.3.0
- partial docs
- added where(), pluck() and invoke() inspired by underscore
- added split_by()
- second() made public
- reexport itertools.cycle()
- walk() and select() work with strings now
Backward incompatible changes:
- renamed groupby() to group_by()
- separated split_at() from split()
- automatically unpack one-element tuples returned from re_*()
- join() now returns None on empty input instead of TypeError
- made fallback() accept multiple arguments
Bugfixes:
- fixed join() swallowing first coll from iterator of colls
0.2.1
- one argument keep()
- fallback() flow
0.2
- added curry() to funcs
- added re_test(), re_tester() and re_finder() to strings
- added second() to seqs
- added one() and one_fn() to colls and funcolls
- support defaultdicts in walk*(), select*(), project(), empty()
- one argument and uncallable default in iffy()