2007-03-06 Aaron Bentley * Better error when a log is missing from a tree * pybaz 1.5.3 release 2006-12-19 Aaron Bentley * Get all tests running * pybaz 1.5.2 release 2006-12-18 Aaron Bentley * Support archive names with underscores in email address portion 2006-12-09 Aaron Bentley * Clean up deprecation warnings * pybaz 1.5.1 release 2006-11-29 Aaron Bentley * pybaz 1.5 release 2005-10-06 David Allouche * pybaz.get: undeprecated * pybaz.Revision.previous: support '<<>>' * pybaz.Patchlog.new_patches: hack for '!!!!!nothing-should-depend-on-this' 2005-03-30 David Allouche * pybaz._builtin.tla_tells_empty_meta_info: remove that old cruft. Bazaar has always implemented proper detection of empty archive-meta-info files. 2005-03-27 David Allouche * pybaz.Patchlog: modified usage of tree and fromlib arguments (__init__): raises ValueError if both "tree" and "fromlib" arguments are set. (fromlib): attribute is now read-only. (tree): attribute is now read-only. 2005-03-22 David Allouche * pybaz.NameParser: extensive test suite and improved bug for bug compatibility with baz. * pybaz.NameParser.object: improved correctness. 2005-03-14 David Allouche * pybaz.Archive.location: no longer raises ExecProblem when the archive is not registered. Has value None instead. 2005-02-14 David Allouche New pybaz version detection API * pybaz.backend.command_version: Removed. This information is now provided by pybaz.backend.version.release. 2005-01-17 David Allouche * Deprecated getters in favour of properties Read-only values which are normally immutable, and which are thus susceptible to memoization, are represented in PyArch as properties. Many of those properties were originally defined using public getter methods. Now, they are defined using protected methods and the public methods are deprecated. (Category.get_archive): Deprecated getter method. (Branch.get_archive) : Deprecated getter method. (Version.get_archive) : Deprecated getter method. (Revision.get_archive): Deprecated getter method. Replace by the "archive" properties. (Category.get_nonarch): Deprecated getter method. (Branch.get_nonarch) : Deprecated getter method. (Version.get_nonarch) : Deprecated getter method. (Revision.get_nonarch): Deprecated getter method. Replace by the "nonarch" properties. (Archive.get_fullname) : Deprecated getter method. (Category.get_fullname): Deprecated getter method. (Branch.get_fullname) : Deprecated getter method. (Version.get_fullname) : Deprecated getter method. (Revision.get_fullname): Deprecated getter method. Replace by the "fullname" properties. (Version.get_branch) : Deprecated getter method. (Revision.get_branch): Deprecated getter method. Replace by the "branch" properties. (Revision.get_version): Deprecated getter method. Replace by the "version" property. (Revision.get_patchlevel): Deprecated getter method. Replace by the "patchlevel" property. (Archive.get_name) : Deprecated getter method. (Archive.get_location) : Deprecated getter method. (Archive.get_is_mirror) : Deprecated getter method. (Archive.get_official_name): Deprecated getter method. (Archive.get_is_signed) : Deprecated getter method. (Archive.get_has_listings) : Deprecated getter method. Replace by the properties with the corresponding names. (Revision.get_patchlog): Deprecated getter method. (Revision.get_ancestor): Deprecated getter method. (Revision.get_previous): Deprecated getter method. Replace by the properties with the corresponding names. (Patchlog.get_revision) : Deprecated getter method. (Patchlog.get_summary) : Deprecated getter method. (Patchlog.get_description) : Deprecated getter method. (Patchlog.get_date) : Deprecated getter method. (Patchlog.get_creator) : Deprecated getter method. (Patchlog.get_new_patches) : Deprecated getter method. (Patchlog.get_merged_patches): Deprecated getter method. (Patchlog.get_new_files) : Deprecated getter method. (Patchlog.get_modified_files): Deprecated getter method. (Patchlog.get_renamed_files) : Deprecated getter method. (Patchlog.get_removed_files) : Deprecated getter method. Replace by the properties with the corresponding names. (Patchlog.get_continuation): Deprecated getter method. (Patchlog.continuation): Renamed property. Replace by the "continuation_of" property. * Deprecated sequence methods in favour of iterable methods. Methods which return sequences have been deprecated in favour of similar methods returning iterables. (Archive.get_categories) : Deprecated sequence method. (Archive.get_library_categories): Deprecated sequence method. Replace by the "iter_categories" and "iter_library_categories" methods. (Category.get_branches) : Deprecated sequence method. (Category.get_library_branches): Deprecated sequence method. Replace by the "iter_branches" and "iter_library_branches" methods. (Branch.get_versions) : Deprecated sequence method. (Branch.get_library_versions): Deprecated sequence method. Replace by the "iter_versions" and "iter_library_versions" methods. (Version.get_revisions) : Deprecated sequence method. (Version.get_library_revisions): Deprecated sequence method. Replace by the "iter_revisions" and "iter_library_revisions" methods. * Deprecated sequence functions in favour of iterable functions. (archives): Deprecated sequence function. Replace by the "iter_archive" function. (library_archives): Deprecated sequence function. Replace by the "iter_library_archives" function. * Deprecated non-memoisable sequence properties in favour of iterable methods. A few properties provided access to mutable information that generally requires network access to provide. They have been deprecated in favour of iterable methods to underline the mutable nature of the value and the potentially high cost of retrieval. (Archive.categories): Deprecated mutable sequence property. (Category.branches) : Deprecated mutable sequence property. (Branch.versions) : Deprecated mutable sequence property. (Version.revisions) : Deprecated mutable sequence property. Replace by the the corresponding iter_* methods. * Deprecated package conversion The as_version() and as_revision() methods were introduced to make it possible to indifferently process branches, versions, or revisions. It turned out to be a bad idea. In useful cases, those methods just were named in a way that does not say what they do, and in the other cases they were just foolish consistency. (Branch.as_version): Renamed method. Replace by the "latest_version" method. (Branch.as_revision) : Renamed method. (Version.as_revision): Renamed method. Replace by the "latest_revision" method. (Version.as_version): Deprecated foolish consistency method. (Revision.as_version): Deprecated foolish consistency method. These methods only returned self. * Deprecated function usage with default argument Explicit is better than implicit, and in addition these methods are often used as part of input validation, so it's better to be explicit when the current directory is used. (in_source_tree): Made path argument mandatory. Replace "in_source_tree()" by "in_source_tree('.')". (tree_root) : Made path argument mandatory. Replace "tree_root()" by "tree_root('.')". * Deprecated redundant top-level functions (changeset): Deprecated redundant function. The functionality of "changeset(orig, mod, dest)" is provided by "arch.delta(orig, mod, dest)" where orig and mod are ArchSourceTree instances. (last_revision): Deprecated redundant function. Replace with ArchSourceTree.tree_revision. * Deprecated overbroad top-level functions Some functions were overbroad and reproduced convenience heuristics of the tla command line. They have been replaced by methods in the appropriate class. (make_continuation): Deprecated overbroad function. Replace with Revision.make_continuation(version). make_continuation(version1, version2) must now be expressed as version1.latest_revision.make_continuation(version2) But this idiom is unsafe. Instead, you probably want to use tree.tree_revision.make_continuation(VERSION). (get): Deprecated overbroad function. Replace with Revision.get(dirname). UPDATE: Version.get was introduced as a convenience shortcut for version.latest_revision().get, but you should be aware of the potential race conditions, since latest_revision() may return different values because of concurrent commits to the same version. (get_patch): Deprecated function. Replace with Revision.get_patch(dirname). * Removed functions without replacement These functions are trivial or do not belong in generic library bindings. I wrote them early in the development of pyarch for experimentation purposes. (filter_archive_logs): Trivial. (filter_revisions): Trivial. (grep_summary): Trivial. (grep_summary_interactive): Not generic. (suspected_move): Not generic. (revisions_merging): Trivial. (temphack): Well, that was a temporary hack... (revision_which_created): Trivial. (map_name_id): Trivial. 2004-01-13 ddaa@ddaa.net--2004/pybaz--devo--0--patch-26 * pybaz.backend: Removed the pybaz.backend.spawner attribute, and added several method to spawn commands in specific ways. Attention, several of those methods have a slighly different signature than the corresponding functions in pybaz.backends.baz.