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
|
These are the changes in plan to introduce in PyBaz. There is a lot of cruft
and crack in this code base, so many disruptive changes will be necessary to
clean up the mess.
If you are unhappy with these changes because they will make your life harder
or because you think they are just more crack, please notify me and I'll try to
find a solution to make you happy.
David Allouche <ddaa@ddaa.net>
ddaa in #arch on irc.freenode.net
* Plans for PyBaz 1.3
- Remove deprecations present in 1.1
All functions, methods and properties marked as deprecated in PyBaz 1.1
will be removed in PyBaz 1.3.
- Deprecate SourceTree
SourceTree is used as a (quite useless) abstract base class for all
source tree classes, and a factory that magically instanciate WorkingTree,
LibraryTree or ForeignTree instance.
The magic factory behaviour will be deprecated.
- Deprecate ForeignTree and LibraryTree
Theses classes serve no useful purpose.
- New type testing features for source trees
New properties will be introduced to provide a transition path before the
simplification of the source tree hierarchy.
ArchSourceTree.is_reference_tree: True if the tree is a pristine or a
revision library entry and cannot be used to create WorkingTree. False if
the tree may be modified.
pybaz.is_tree_root(dirname): True if dirname is the root of an Arch
source tree and may be used to create an ArchSourceTree or WorkingTree.
- Deprecate ArchSourceTree.inventory
In favour of the iter_inventory method.
- Deprecate ArchSourceTree.get_tree_version()
- Deprecate WorkingTree.set_tree_version(V)
In favour of the tree_version property.
- Deprecate ArchSourceTree.get_tagging_method()
- Deprecate WorkingTree.set_tagging_method()
In favour of the tagging_method property.
- Deprecate ArchSourceTree.get_tree()
Obscure legacy function.
- WorkingTree.add_log_version()
This method serves no use case. The log-version should be create on
import when necessary. In all other cases, log versions are already created
as needed, and empty log versions are useless.
- WorkingTree.add_pristine()
This is generally immediately followed by find_pristine. The
functionality will be folded into find_pristine with a create=True keyword
argument.
- Revision.library_add()
This is generally immediately followed by library_find. The functionality
will be folded into library_find with a create=True keyword argument.
- Deprecate methods inherited from DirName in SourceTree and Changeset
SourceTree and Changeset should have a "has a" (inclusion) relationship
to DirName, instead of a "is a" (derivation) relationship. All methods
inherited from DirName will emit deprecation warnings. A new "path" property
will give the associated DirName instance.
- Redesign the output parsing subsystem
It is expected that baz incremental output will change in such a way as
to require a major redesign of the output parsing classes.
In any case, the current design relies on the client to use "isinstance"
to classify the various output lines. That is bad design.
- Redesign NameParser
The NameParser interface is awkyard and broken. It shoud also undergo
many deprecations to become more convenient and more consistent with other
classes.
* Plans for PyBaz 1.4
- Remove SourceTree, ForeignTree and LibraryTree
- Remove methods deprecated in PyBaz 1.3
- Remove subclass relationship between DirName, SourceTree and Changeset
That will break code that relies on the fact that SourceTree and
Changeset instances are also instances of str, but there is no way to
provide a deprecation path.
|