clean-architecture-example-1
clean-architecture-example-1 copied to clipboard
Suggest to loosen the dependency on funcy
Hi, your project clean-architecture-example-1 requires "funcy==1.10.2" in its dependency. After analyzing the source code, we found that the following versions of funcy can also be suitable without affecting your project, i.e., funcy 1.9, 1.9.1, 1.10, 1.10.1, 1.10.3, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17. Therefore, we suggest to loosen the dependency on funcy from "funcy==1.10.2" to "funcy>=1.9,<=1.17" to avoid any possible conflict for importing more packages or for downstream projects that may use clean-architecture-example-1.
May I pull a request to further loosen the dependency on funcy?
By the way, could you please tell us whether such dependency analysis may be potentially helpful for maintaining dependencies easier during your development?
We also give our detailed analysis as follows for your reference:
Your project clean-architecture-example-1 directly uses 1 APIs from package funcy.
funcy.seqs.first
Beginning from the 1 APIs above, 0 functions are then indirectly called, including 0 funcy's internal APIs and 0 outsider APIs. The specific call graph is listed as follows (neglecting some repeated function occurrences).
[/Enforcer/clean-architecture-example-1]
+--funcy.seqs.first
We scan funcy's versions and observe that during its evolution between any version from [1.9, 1.9.1, 1.10, 1.10.1, 1.10.3, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17] and 1.10.2, the changing functions (diffs being listed below) have none intersection with any function or API we mentioned above (either directly or indirectly called by this project).
diff: 1.10.2(original) 1.9
['funcy.cross.raise_from', 'funcy.flow.limit_error_rate', 'funcy.decorators._GeneratorContextManager.__exit__', 'funcy.colls.iwhere', 'funcy.debug.log_durations.__exit__', 'funcy.debug.print_iter_durations', 'funcy.flow.reraise', 'funcy.debug.log_durations.__init__', 'funcy.calc.cache', 'funcy.debug.log_iter_durations', 'funcy.debug.log_durations', 'funcy.debug.format_time', 'funcy.funcs.iffy', 'funcy.colls.where', 'funcy._inspect.get_spec', 'funcy.decorators._GeneratorContextManager']
diff: 1.10.2(original) 1.9.1
['funcy.cross.raise_from', 'funcy.flow.limit_error_rate', 'funcy.decorators._GeneratorContextManager.__exit__', 'funcy.debug.log_durations.__exit__', 'funcy.debug.print_iter_durations', 'funcy.flow.reraise', 'funcy.debug.log_durations.__init__', 'funcy.calc.cache', 'funcy.debug.log_iter_durations', 'funcy.debug.log_durations', 'funcy.debug.format_time', 'funcy.funcs.iffy', 'funcy._inspect.get_spec', 'funcy.decorators._GeneratorContextManager']
diff: 1.10.2(original) 1.10
['funcy.funcs.iffy', 'funcy.flow.reraise', 'funcy.cross.raise_from', 'funcy.calc.cache']
diff: 1.10.2(original) 1.10.1
['funcy.funcs.iffy']
diff: 1.10.2(original) 1.10.3
['funcy.debug.log_errors', 'funcy.debug.log_errors.__init__', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.debug.print_calls', 'funcy.debug.log_exits', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.debug.log_durations.__init__', 'funcy.debug.log_durations', 'funcy.debug.print_enters', 'funcy.debug.log_calls', 'funcy.debug.signature_repr', 'funcy.debug.log_enters', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.debug.print_exits']
diff: 1.10.2(original) 1.11
['funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.debug.log_exits', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.debug.log_errors', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.seqs.lreductions', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.tree.ltree_nodes', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.colls.lpluck', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.colls.all', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.seqs.map', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.colls.one', 'funcy.debug.print_calls', 'funcy.seqs.filter', 'funcy.seqs.reductions', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.12
['funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.debug.log_exits', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.debug.log_errors', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.seqs.lreductions', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.colls.lpluck', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.colls.all', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.seqs.map', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.debug.print_calls', 'funcy.seqs.filter', 'funcy.seqs.reductions', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.13
['funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.debug.log_exits', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.compat.nullcontext.__exit__', 'funcy.compat.nullcontext', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.debug.log_errors', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.compat.nullcontext.__init__', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.seqs.lreductions', 'funcy.compat.nullcontext.__enter__', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.flow.wrap_with', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.colls.lpluck', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.colls.all', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.seqs.map', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.debug.print_calls', 'funcy.seqs.filter', 'funcy.seqs.reductions', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.14
['funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.objects.wrap_prop', 'funcy.debug.log_exits', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.flow.nullcontext.__exit__', 'funcy.debug.log_errors', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.seqs.lreductions', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.flow.wrap_with', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.flow.nullcontext', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.colls.lpluck', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.colls.all', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.seqs.map', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.debug.print_calls', 'funcy.flow.nullcontext.__init__', 'funcy.seqs.filter', 'funcy.seqs.reductions', 'funcy.flow.nullcontext.__enter__', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.15
['funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.objects.wrap_prop', 'funcy.debug.log_exits', 'funcy.funcs.rpartial', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.flow.nullcontext.__exit__', 'funcy.debug.log_errors', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.flow.raiser', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.seqs.lreductions', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.flow.wrap_with', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.flow.nullcontext', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.objects.LazyObject', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.colls.lpluck', 'funcy.calc.cache', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.colls.all', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.debug.print_calls', 'funcy.flow.nullcontext.__init__', 'funcy.seqs.reductions', 'funcy.flow.nullcontext.__enter__', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.16
['funcy.calc.CacheMemory.__setitem__', 'funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.calc.SkipMemoization', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.objects.wrap_prop', 'funcy.debug.log_exits', 'funcy.funcs.rpartial', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.calc.SkipMemory', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.colls.has_path', 'funcy.debug.log_errors', 'funcy.flow.nullcontext.__exit__', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.flow.raiser', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.funcs.curry', 'funcy.seqs.lreductions', 'funcy.calc.CacheMemory.__init__', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.funcs.autocurry', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.flow.wrap_with', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.flow._is_exception_type', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.flow.nullcontext', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.objects.LazyObject', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.decorators.has_single_arg', 'funcy.seqs.split_at', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.seqs._icut_seq', 'funcy.funcs.rcurry', 'funcy.colls.lpluck', 'funcy.calc.cache', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.decorators.has_1pos_and_kwonly', 'funcy.colls.all', 'funcy.calc.CacheMemory.expire', 'funcy.calc.memoize', 'funcy.flow.throttle', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.calc.CacheMemory', 'funcy._inspect.get_spec', 'funcy.calc.CacheMemory.clear', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.calc._memory_decorator', 'funcy.debug.print_calls', 'funcy.flow.nullcontext.__init__', 'funcy.seqs.reductions', 'funcy.flow.nullcontext.__enter__', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.calc.CacheMemory.__getitem__', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
diff: 1.10.2(original) 1.17
['funcy.calc.CacheMemory.__setitem__', 'funcy.flow.retry', 'funcy.seqs.isums', 'funcy.seqs.ldistinct', 'funcy.funcolls.none_fn', 'funcy.calc.SkipMemoization', 'funcy.py3.lzip', 'funcy.strings.re_iter', 'funcy.tree.ltree_leaves', 'funcy._inspect._sig_to_spec', 'funcy.seqs.xmap', 'funcy.colls.izip_dicts', 'funcy.seqs.lfilter', 'funcy.seqs.lkeep', 'funcy.objects.wrap_prop', 'funcy.debug.log_exits', 'funcy.funcs.rpartial', 'funcy.seqs.lpartition_by', 'funcy.seqs.with_next', 'funcy.decorators.make_decorator', 'funcy.seqs.iwithout', 'funcy.seqs.split_by', 'funcy.colls.join', 'funcy.seqs.lsplit', 'funcy.flow.ignore', 'funcy.seqs.iflatten', 'funcy.colls.invoke', 'funcy.seqs.accumulate', 'funcy.decorators.contextmanager', 'funcy.seqs.ikeep', 'funcy.debug.LabeledContextDecorator.decorator', 'funcy.calc.SkipMemory', 'funcy.seqs.ipartition_by', 'funcy.seqs.lsums', 'funcy.seqs.mapcat', 'funcy.colls._factory', 'funcy.seqs.lsplit_by', 'funcy.colls.where', 'funcy.seqs._ireductions', 'funcy.colls.zipdict', 'funcy.seqs.isplit', 'funcy.seqs.flatten', 'funcy.debug.print_exits', 'funcy.colls.has_path', 'funcy.debug.log_errors', 'funcy.flow.nullcontext.__exit__', 'funcy.compat.raise_from', 'funcy.debug.LabeledContextDecorator', 'funcy.debug.smart_repr', 'funcy.seqs._cut_iter', 'funcy.colls.zip_dicts', 'funcy.seqs._cut', 'funcy.colls.is_distinct', 'funcy.flow.raiser', 'funcy.colls.pluck', 'funcy.seqs.sums', 'funcy.seqs.imapcat', 'funcy.seqs.ifilter', 'funcy.seqs.without', 'funcy.funcolls.any_fn', 'funcy.colls.walk', 'funcy.cross.filter', 'funcy.colls.iwhere', 'funcy.compat.lmap', 'funcy.seqs.keep', 'funcy.debug.signature_repr', 'funcy.funcs.curry', 'funcy.seqs.lreductions', 'funcy.calc.CacheMemory.__init__', 'funcy.debug.log_errors.__init__', 'funcy.flow.fallback', 'funcy.funcs.autocurry', 'funcy.decorators.Call', 'funcy.seqs.lchunks', 'funcy.colls.ipluck', 'funcy.debug.print_enters', 'funcy.funcolls.all_fn', 'funcy.colls.some', 'funcy.seqs.ireductions', 'funcy.colls.any', 'funcy.debug.LabeledContextDecorator.__init__', 'funcy.seqs.ximap', 'funcy.flow.wrap_with', 'funcy.seqs.remove', 'funcy.tree.itree_nodes', 'funcy.flow._is_exception_type', 'funcy.seqs.partition_by', 'funcy.strings.str_join', 'funcy.seqs.distinct', 'funcy.colls.izip_values', 'funcy.py2.zip', 'funcy.funcs.ijuxt', 'funcy.flow.nullcontext', 'funcy.decorators.Call.__str__', 'funcy.funcolls.one_fn', 'funcy.seqs.with_prev', 'funcy.seqs._cut_seq', 'funcy.seqs.ilen', 'funcy.seqs.lmapcat', 'funcy.objects.LazyObject', 'funcy.tree.ltree_nodes', 'funcy.decorators.decorator', 'funcy.seqs.cat', 'funcy.seqs.concat', 'funcy.tree.tree_nodes', 'funcy.seqs._reductions', 'funcy.seqs.lsplit_at', 'funcy.decorators.has_single_arg', 'funcy.seqs.split_at', 'funcy.flow.limit_error_rate', 'funcy.seqs.ichunks', 'funcy.colls.walk_values', 'funcy.seqs._icut', 'funcy.colls.pluck_attr', 'funcy.decorators.wraps', 'funcy.seqs._icut_iter', 'funcy.decorators.Call.__repr__', 'funcy.seqs._icut_seq', 'funcy.funcs.rcurry', 'funcy.colls.lpluck', 'funcy.calc.cache', 'funcy.tree.tree_leaves', 'funcy.colls.linvoke', 'funcy.debug.log_calls', 'funcy.seqs.iremove', 'funcy.debug.log_enters', 'funcy.compat.lfilter', 'funcy.colls.zip_values', 'funcy.seqs.idistinct', 'funcy.seqs.lmap', 'funcy.colls.iinvoke', 'funcy.debug.log_durations.__init__', 'funcy.colls.ipluck_attr', 'funcy.decorators.has_1pos_and_kwonly', 'funcy.colls.all', 'funcy.calc.CacheMemory.expire', 'funcy.calc.memoize', 'funcy.flow.throttle', 'funcy.seqs.imap', 'funcy.tree.itree_leaves', 'funcy.colls.lpluck_attr', 'funcy.calc.CacheMemory', 'funcy._inspect.get_spec', 'funcy.calc.CacheMemory.clear', 'funcy.seqs.interleave', 'funcy.flow._ensure_exceptable', 'funcy.funcs.juxt', 'funcy.funcolls.some_fn', 'funcy.flow.reraise', 'funcy.colls.lwhere', 'funcy.funcs.ljuxt', 'funcy.seqs.isplit_by', 'funcy.seqs.partition', 'funcy.seqs.lwithout', 'funcy.seqs.split', 'funcy.seqs.lflatten', 'funcy.objects.cached_readonly', 'funcy.colls.one', 'funcy.calc._memory_decorator', 'funcy.debug.print_calls', 'funcy.flow.nullcontext.__init__', 'funcy.seqs.reductions', 'funcy.flow.nullcontext.__enter__', 'funcy.seqs.chunks', 'funcy.funcs.compose', 'funcy.seqs.pairwise', 'funcy.seqs.lconcat', 'funcy.colls.select', 'funcy.seqs.lpartition', 'funcy.seqs.lremove', 'funcy.cross.raise_from', 'funcy.calc.CacheMemory.__getitem__', 'funcy.colls.del_in', 'funcy.cross.map', 'funcy.flow.joining', 'funcy.debug.log_durations', 'funcy.seqs.lcat', 'funcy.objects.cached_readonly.__set__', 'funcy.seqs.ipartition', 'funcy.seqs.isplit_at']
Therefore, we believe that it is quite safe to loose your dependency on funcy from "funcy==1.10.2" to "funcy>=1.9,<=1.17". This will improve the applicability of clean-architecture-example-1 and reduce the possibility of any further dependency conflict with other projects.