Rev 3751: (vila) Fix python-2.6 various compatibility issues in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Tue Sep 30 00:20:40 BST 2008


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3751
revision-id: pqm at pqm.ubuntu.com-20080929084952-3d81d63rru8tt8mm
parent: pqm at pqm.ubuntu.com-20080929054234-s2ajcaxxm75errlz
parent: v.ladeuil+lp at free.fr-20080929081107-eyfv73oy7jgjio0m
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2008-09-29 09:49:52 +0100
message:
  (vila) Fix python-2.6 various compatibility issues
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/btree_index.py          index.py-20080624222253-p0x5f92uyh5hw734-7
  bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
  bzrlib/hashcache.py            hashcache.py-20050706091756-fe3a8cc1143ff24f
  bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
  bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
  bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
  bzrlib/testament.py            testament.py-20051011100429-6d319a18183b13c8
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
  bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
  bzrlib/tests/http_utils.py     HTTPTestUtil.py-20050914180604-247d3aafb7a43343
  bzrlib/tests/per_repository/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
  bzrlib/tests/test_hashcache.py testhashcache.py-20050706091800-0288ab2659338981
  bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
  bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
  bzrlib/tests/test_testament.py testtestament.py-20051011100429-5df1657310caa929
  bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
  bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
  bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
  bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
  bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
  bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
  bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
    ------------------------------------------------------------
    revno: 3741.2.1
    revision-id: v.ladeuil+lp at free.fr-20080929081107-eyfv73oy7jgjio0m
    parent: pqm at pqm.ubuntu.com-20080926054703-nxn5f1h7z7gvur96
    parent: v.ladeuil+lp at free.fr-20080929080859-pbtex6ozsk32a2au
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: trunk
    timestamp: Mon 2008-09-29 10:11:07 +0200
    message:
      Fix python-2.6 various compatibility issues
    added:
      doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
      bzrlib/btree_index.py          index.py-20080624222253-p0x5f92uyh5hw734-7
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/hashcache.py            hashcache.py-20050706091756-fe3a8cc1143ff24f
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
      bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
      bzrlib/testament.py            testament.py-20051011100429-6d319a18183b13c8
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
      bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
      bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
      bzrlib/tests/http_utils.py     HTTPTestUtil.py-20050914180604-247d3aafb7a43343
      bzrlib/tests/per_repository/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
      bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
      bzrlib/tests/test_hashcache.py testhashcache.py-20050706091800-0288ab2659338981
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
      bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
      bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
      bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
      bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
      bzrlib/tests/test_testament.py testtestament.py-20051011100429-5df1657310caa929
      bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
      bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
      bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
      bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
      bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
      bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
      bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
      bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
      bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
      doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
      doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
    ------------------------------------------------------------
    revno: 3734.2.12
    revision-id: v.ladeuil+lp at free.fr-20080929080859-pbtex6ozsk32a2au
    parent: v.ladeuil+lp at free.fr-20080929071237-fppx7gg44vasd8ta
    parent: v.ladeuil+lp at free.fr-20080929080848-3j0bmihhs92tox1v
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: py26-compat
    timestamp: Mon 2008-09-29 10:08:59 +0200
    message:
      merge down-thread
    modified:
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
        ------------------------------------------------------------
        revno: 3734.6.2
        revision-id: v.ladeuil+lp at free.fr-20080929080848-3j0bmihhs92tox1v
        parent: v.ladeuil+lp at free.fr-20080929071021-y67wj60j1hpx9dek
        parent: v.ladeuil+lp at free.fr-20080929080434-h3j35vswi87670cp
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: http-server-select-exception
        timestamp: Mon 2008-09-29 10:08:48 +0200
        message:
          merge down-thread
        modified:
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
        ------------------------------------------------------------
        revno: 3734.5.3
        revision-id: v.ladeuil+lp at free.fr-20080929080434-h3j35vswi87670cp
        parent: v.ladeuil+lp at free.fr-20080929070943-bw01lbtpek13rub2
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: deprecations
        timestamp: Mon 2008-09-29 10:04:34 +0200
        message:
          Martin's review feedback.
          
          * bzrlib/tests/__init__.py:
          (TestCase.callCatchWarnings): python-2.6 wants a 'line' keyword
          argument.
        modified:
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
    ------------------------------------------------------------
    revno: 3734.2.11
    revision-id: v.ladeuil+lp at free.fr-20080929071237-fppx7gg44vasd8ta
    parent: v.ladeuil+lp at free.fr-20080929071136-2m0d51ku9wj2hey2
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: py26-compat
    timestamp: Mon 2008-09-29 09:12:37 +0200
    message:
      Don't protect the gulty.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3734.2.10
    revision-id: v.ladeuil+lp at free.fr-20080929071136-2m0d51ku9wj2hey2
    parent: v.ladeuil+lp at free.fr-20080929065435-f2g0gu1lh2by5c6f
    parent: v.ladeuil+lp at free.fr-20080929071021-y67wj60j1hpx9dek
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: py26-compat
    timestamp: Mon 2008-09-29 09:11:36 +0200
    message:
      Merge down-thread (including bzr.dev)
    removed:
      bzrlib/_walkdirs_win32.h       _walkdirs_win32.h-20080716220454-kweh3tgxez5dvw2l-1
    added:
      bzrlib/tests/workingtree_implementations/test_get_file_with_stat.py test_get_file_with_s-20080922035909-lhdovrr36jpxmu0v-1
      doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
      bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
      bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
      bzrlib/_walkdirs_win32.pyx     _walkdirs_win32.pyx-20080716220454-kweh3tgxez5dvw2l-2
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
      bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
      bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
      bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/python-compat.h         pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
      bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
      bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
      bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
      bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
      bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
      bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
      bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
      bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
      bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
      bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
      bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
      bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
      bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
      bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
      bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
      bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
      doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
      doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
      setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
        ------------------------------------------------------------
        revno: 3734.6.1
        revision-id: v.ladeuil+lp at free.fr-20080929071021-y67wj60j1hpx9dek
        parent: v.ladeuil+lp at free.fr-20080926152829-ibdag0hw352qjcix
        parent: v.ladeuil+lp at free.fr-20080929070943-bw01lbtpek13rub2
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: http-server-select-exception
        timestamp: Mon 2008-09-29 09:10:21 +0200
        message:
          Merge down-thread (including bzr.dev)
        removed:
          bzrlib/_walkdirs_win32.h       _walkdirs_win32.h-20080716220454-kweh3tgxez5dvw2l-1
        added:
          bzrlib/tests/workingtree_implementations/test_get_file_with_stat.py test_get_file_with_s-20080922035909-lhdovrr36jpxmu0v-1
          doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/_walkdirs_win32.pyx     _walkdirs_win32.pyx-20080716220454-kweh3tgxez5dvw2l-2
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/python-compat.h         pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
          bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
          doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
        ------------------------------------------------------------
        revno: 3734.5.2
        revision-id: v.ladeuil+lp at free.fr-20080929070943-bw01lbtpek13rub2
        parent: v.ladeuil+lp at free.fr-20080929070355-mi1n0opzn3mxgg1q
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: deprecations
        timestamp: Mon 2008-09-29 09:09:43 +0200
        message:
          Martin's review feedback.
          
          * bzrlib/revisionspec.py:
          (RevisionSpec.__new__): Deleted. It has been deprecated last
          century (0.11).
          
          * bzrlib/osutils.py: 
          Use _mod prefixe when importing symbols.
        modified:
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
        ------------------------------------------------------------
        revno: 3734.5.1
        revision-id: v.ladeuil+lp at free.fr-20080929070355-mi1n0opzn3mxgg1q
        parent: v.ladeuil+lp at free.fr-20080926144520-nvwprjsbb927ff9t
        parent: v.ladeuil+lp at free.fr-20080929065809-2jac3doqkkhjznh4
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: deprecations
        timestamp: Mon 2008-09-29 09:03:55 +0200
        message:
          Merge bzr.dev, resolving conflicts
        removed:
          bzrlib/_walkdirs_win32.h       _walkdirs_win32.h-20080716220454-kweh3tgxez5dvw2l-1
        added:
          bzrlib/tests/workingtree_implementations/test_get_file_with_stat.py test_get_file_with_s-20080922035909-lhdovrr36jpxmu0v-1
          doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/_walkdirs_win32.pyx     _walkdirs_win32.pyx-20080716220454-kweh3tgxez5dvw2l-2
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/python-compat.h         pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
          bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
          doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
        ------------------------------------------------------------
        revno: 3734.3.3
        revision-id: v.ladeuil+lp at free.fr-20080929065809-2jac3doqkkhjznh4
        parent: v.ladeuil+lp at free.fr-20080926142856-svgss7gij4g077zw
        parent: v.ladeuil+lp at free.fr-20080929065733-399dbezpaxl6h2sv
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: no-params-for-new-init
        timestamp: Mon 2008-09-29 08:58:09 +0200
        message:
          Merge bzr.dev
        removed:
          bzrlib/_walkdirs_win32.h       _walkdirs_win32.h-20080716220454-kweh3tgxez5dvw2l-1
        added:
          bzrlib/tests/workingtree_implementations/test_get_file_with_stat.py test_get_file_with_s-20080922035909-lhdovrr36jpxmu0v-1
          doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/_walkdirs_win32.pyx     _walkdirs_win32.pyx-20080716220454-kweh3tgxez5dvw2l-2
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/python-compat.h         pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
          bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
          doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
        ------------------------------------------------------------
        revno: 3734.4.1
        revision-id: v.ladeuil+lp at free.fr-20080929065733-399dbezpaxl6h2sv
        parent: v.ladeuil+lp at free.fr-20080925151715-69kcjx7p2vcuuc5w
        parent: pqm at pqm.ubuntu.com-20080929054234-s2ajcaxxm75errlz
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: gzip-changes
        timestamp: Mon 2008-09-29 08:57:33 +0200
        message:
          Merge bzr.dev
        removed:
          bzrlib/_walkdirs_win32.h       _walkdirs_win32.h-20080716220454-kweh3tgxez5dvw2l-1
        added:
          bzrlib/tests/workingtree_implementations/test_get_file_with_stat.py test_get_file_with_s-20080922035909-lhdovrr36jpxmu0v-1
          doc/developers/lca_tree_merging.txt lca_merge_resolution-20080731173903-8ku77uz7o6smd3jj-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/_walkdirs_win32.pyx     _walkdirs_win32.pyx-20080716220454-kweh3tgxez5dvw2l-2
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/python-compat.h         pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
          bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
          doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
    ------------------------------------------------------------
    revno: 3734.2.9
    revision-id: v.ladeuil+lp at free.fr-20080929065435-f2g0gu1lh2by5c6f
    parent: v.ladeuil+lp at free.fr-20080926152829-ibdag0hw352qjcix
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: py26-compat
    timestamp: Mon 2008-09-29 08:54:35 +0200
    message:
      Update NEWS.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3734.2.8
    revision-id: v.ladeuil+lp at free.fr-20080926152829-ibdag0hw352qjcix
    parent: v.ladeuil+lp at free.fr-20080926144520-nvwprjsbb927ff9t
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: http-server-select-exception
    timestamp: Fri 2008-09-26 17:28:29 +0200
    message:
      Catch spurious exceptions (python-2.6) when SocketServer is shut down.
      
      * bzrlib/tests/test_http.py:
      (TestProxyHttpServer.proxied_in_env,
      TestProxyHttpServer.not_proxied_in_env): Revert expected and
      actual expressions to conform with bzr rules.
      
      * bzrlib/tests/http_server.py:
      (HttpServer.__repr__): Added for debug purposes.
      (HttpServer._http_start): Catch spurious exceptions when running
      with python-2.6.
    modified:
      bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
    ------------------------------------------------------------
    revno: 3734.2.7
    revision-id: v.ladeuil+lp at free.fr-20080926144520-nvwprjsbb927ff9t
    parent: v.ladeuil+lp at free.fr-20080926142913-jc6o8wy92nvbkxa1
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: deprecations
    timestamp: Fri 2008-09-26 16:45:20 +0200
    message:
      Fix python-2.6 BaseException 'message' attribute deprecation.
      
      * bzrlib/util/configobj/configobj.py:
      (ConfigObjError.__init__): 'message' attribute has been
      deprecated. Reported upstream with patch, hopefully next upgrade
      will include it. Watch for conflicts though.
      
      * bzrlib/errors.py:
      (BzrError._format): 'message' attribute has been deprecated.
    modified:
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
    ------------------------------------------------------------
    revno: 3734.2.6
    revision-id: v.ladeuil+lp at free.fr-20080926142913-jc6o8wy92nvbkxa1
    parent: v.ladeuil+lp at free.fr-20080926075800-b5nz0089gtfkxwiu
    parent: v.ladeuil+lp at free.fr-20080926142856-svgss7gij4g077zw
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: deprecations
    timestamp: Fri 2008-09-26 16:29:13 +0200
    message:
      Merge down-thread
    modified:
      bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
        ------------------------------------------------------------
        revno: 3734.3.2
        revision-id: v.ladeuil+lp at free.fr-20080926142856-svgss7gij4g077zw
        parent: v.ladeuil+lp at free.fr-20080926075608-caw6xsw0rznnly7c
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: no-params-for-new-init
        timestamp: Fri 2008-09-26 16:28:56 +0200
        message:
          Fix another SmartHTTPMedium refactoring bit.
          
          * bzrlib/transport/http/__init__.py:
          (HttpTransportBase.__init__): Initialize _medium attribute.
        modified:
          bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
    ------------------------------------------------------------
    revno: 3734.2.5
    revision-id: v.ladeuil+lp at free.fr-20080926075800-b5nz0089gtfkxwiu
    parent: v.ladeuil+lp at free.fr-20080926070950-ux9kpjwt403ctegs
    parent: v.ladeuil+lp at free.fr-20080926075608-caw6xsw0rznnly7c
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: deprecations
    timestamp: Fri 2008-09-26 09:58:00 +0200
    message:
      Merge down-thread
    modified:
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
        ------------------------------------------------------------
        revno: 3734.3.1
        revision-id: v.ladeuil+lp at free.fr-20080926075608-caw6xsw0rznnly7c
        parent: v.ladeuil+lp at free.fr-20080925160322-omrugnbgkcwp9eo2
        committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
        branch nick: no-params-for-new-init
        timestamp: Fri 2008-09-26 09:56:08 +0200
        message:
          Fix SmartHTTPMedium refactoring related test.
          
          * bzrlib/tests/test_http.py:
          (SmartClientAgainstNotSmartServer.test_probe_smart_server): Fix
          lost in the noise in the previous commit.
        modified:
          bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
    ------------------------------------------------------------
    revno: 3734.2.4
    revision-id: v.ladeuil+lp at free.fr-20080926070950-ux9kpjwt403ctegs
    parent: v.ladeuil+lp at free.fr-20080925160322-omrugnbgkcwp9eo2
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: deprecations
    timestamp: Fri 2008-09-26 09:09:50 +0200
    message:
      Fix python2.6 deprecation warnings related to hashlib.
      
      * bzrlib/osutils.py: 
      Wrap md5 and sha imports to be compatible with python 2.4, 2.5 and
      above.  Replace all sha.new() calls by sha() calls they are
      reputedly faster (not profiled).
      
      * bzrlib/weave.py: 
      Update sha import, fix use.	
      
      * bzrlib/transport/http/_urllib2_wrappers.py: 
      Update md5 and sha imports, fix use.	
      
      * bzrlib/tests/test_testament.py:
      Update sha import, fix use.	
      
      * bzrlib/tests/test_knit.py:
      Update sha import, fix use.	
      
      * bzrlib/tests/test_hashcache.py: 
      Update sha import, fix use.	
      
      * bzrlib/tests/per_repository/test_check_reconcile.py:
      Update sha import, fix use.	
      
      * bzrlib/tests/http_utils.py: 
      Update md5 and sha imports, fix use.	
      
      * bzrlib/testament.py: 
      Update sha import, fix use.	
      
      * bzrlib/repofmt/pack_repo.py: 
      Update md5 import, fix use.	
      
      * bzrlib/hashcache.py: 
      Update sha import, fix use.	
      
      * bzrlib/btree_index.py: 
      Delete useless sha import.
    modified:
      bzrlib/btree_index.py          index.py-20080624222253-p0x5f92uyh5hw734-7
      bzrlib/hashcache.py            hashcache.py-20050706091756-fe3a8cc1143ff24f
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/testament.py            testament.py-20051011100429-6d319a18183b13c8
      bzrlib/tests/http_utils.py     HTTPTestUtil.py-20050914180604-247d3aafb7a43343
      bzrlib/tests/per_repository/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
      bzrlib/tests/test_hashcache.py testhashcache.py-20050706091800-0288ab2659338981
      bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_testament.py testtestament.py-20051011100429-5df1657310caa929
      bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
      bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
    ------------------------------------------------------------
    revno: 3734.2.3
    revision-id: v.ladeuil+lp at free.fr-20080925160322-omrugnbgkcwp9eo2
    parent: v.ladeuil+lp at free.fr-20080925160234-7o5qhh48re61njn6
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: no-params-for-new-init
    timestamp: Thu 2008-09-25 18:03:22 +0200
    message:
      Don't use multiple inheritance for http smart medium since we
      can't pass parameters to object.__init__ (and bzr used that trick
      prior to python-2.6 to implement it).
      
      * bzrlib/tests/test_http.py:
      (TestHTTPConnections.test_get_smart_medium): Deleted.
      
      * bzrlib/transport/http/__init__.py:
      (HttpTransportBase): Get rid of multiple inheritance from
      medium.SmartClientMedium.
      (HttpTransportBase.get_smart_medium): Build the medium on demand
      but cache it to avoid probing for smart server repeatedly.
      (SmartClientHTTPMedium): New class. Transfer get_request,
      should_probe and send_http_smart_request from
      HttpTransportBase. Keep a weak reference on the http transport to
      avoid circular references.
      (SmartClientHTTPMedium.send_http_smart_request): Handle the weak
      reference.
      
      * bzrlib/transport/remote.py:
      (RemoteTransport): Doesn't inherit from SmartClientMedium anymore.
      
      * bzrlib/transport/__init__.py:
      (Transport.__init__): Don't pass parameters to object.__init__.
    modified:
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
      bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
      bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
      bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
    ------------------------------------------------------------
    revno: 3734.2.2
    revision-id: v.ladeuil+lp at free.fr-20080925160234-7o5qhh48re61njn6
    parent: v.ladeuil+lp at free.fr-20080925151715-69kcjx7p2vcuuc5w
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: no-params-for-new-init
    timestamp: Thu 2008-09-25 18:02:34 +0200
    message:
      Python-2.6 doesn't allow passing passing parameters to object methods __init__
      and __new__.	
      
      * bzrlib/weave.py:
      (Weave.__init__): Don't pass parameters to object.__init__.
      
      * bzrlib/revisionspec.py:
      (RevisionSpec.__new__): Don't pass parameters to object.__new__.
    modified:
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
      bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
    ------------------------------------------------------------
    revno: 3734.2.1
    revision-id: v.ladeuil+lp at free.fr-20080925151715-69kcjx7p2vcuuc5w
    parent: pqm at pqm.ubuntu.com-20080924081540-ecfvp6xq4x9gs81n
    committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
    branch nick: gzip-changes
    timestamp: Thu 2008-09-25 17:17:15 +0200
    message:
      Fix U32, LOWU32 disapearance in python-2.6.
      
      * bzrlib/tuned_gzip.py:
      (U32, LOWU32): These functions are gone in python-2.6, they are
      trivial enough to be copied as is.
    modified:
      bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
=== modified file 'NEWS'
--- a/NEWS	2008-09-27 22:58:34 +0000
+++ b/NEWS	2008-09-29 07:12:37 +0000
@@ -20,6 +20,12 @@
 
   FEATURES
 
+    * bzr is now compatible with python-2.6. python-2.6 is not yet officially
+      supported (nor released, tests were conducted with the dev version of
+      python-2.6rc2), but all known problems have been fixed . Feedback
+      welcome.
+      (Vincent Ladeuil, #269535)
+
   IMPROVEMENTS:
 
     * ``bzr annotate`` will now include uncommitted changes from the local
@@ -152,6 +158,12 @@
     * New win32utils.get_local_appdata_location() provides access to a local
       directory for storing data.  (Mark Hammond)
 
+    * To be compatible with python-2.6 a few new rules should be
+      observed. 'message' attribute can't be used anymore in exception
+      classes, 'sha' and 'md5' modules have been deprecated (use
+      osutils.[md5|sha]), object__init__ and object.__new__ don't accept
+      parameters anymore.
+      (Vincent Ladeuil)
 
 bzr 1.7.1rc1 2008-09-24
 -----------------------

=== modified file 'bzrlib/btree_index.py'
--- a/bzrlib/btree_index.py	2008-08-28 20:19:20 +0000
+++ b/bzrlib/btree_index.py	2008-09-26 07:09:50 +0000
@@ -22,7 +22,6 @@
 from bisect import bisect_right
 from copy import deepcopy
 import math
-import sha
 import struct
 import tempfile
 import zlib

=== modified file 'bzrlib/errors.py'
--- a/bzrlib/errors.py	2008-09-10 17:33:01 +0000
+++ b/bzrlib/errors.py	2008-09-26 14:45:20 +0000
@@ -81,7 +81,8 @@
         parameters.
 
         :param msg: If given, this is the literal complete text for the error,
-        not subject to expansion.
+           not subject to expansion. 'msg' is used instead of 'message' because
+           python evolved and, in 2.6, forbids the use of 'message'.
         """
         StandardError.__init__(self)
         if msg is not None:
@@ -102,9 +103,6 @@
             fmt = self._get_format_string()
             if fmt:
                 d = dict(self.__dict__)
-                # special case: python2.5 puts the 'message' attribute in a
-                # slot, so it isn't seen in __dict__
-                d['message'] = getattr(self, 'message', 'no message')
                 s = fmt % d
                 # __str__() should always return a 'str' object
                 # never a 'unicode' object.
@@ -126,7 +124,7 @@
             # return a unicode object.
             u = unicode(u)
         return u
-    
+
     def __str__(self):
         s = self._format()
         if isinstance(s, unicode):
@@ -204,7 +202,7 @@
 
 
 class AlreadyBuilding(BzrError):
-    
+
     _fmt = "The tree builder is already building a tree."
 
 
@@ -216,12 +214,12 @@
 
 
 class BzrCheckError(InternalBzrError):
-    
-    _fmt = "Internal check failed: %(message)s"
-
-    def __init__(self, message):
+
+    _fmt = "Internal check failed: %(msg)s"
+
+    def __init__(self, msg):
         BzrError.__init__(self)
-        self.message = message
+        self.msg = msg
 
 
 class DirstateCorrupt(BzrError):
@@ -1310,11 +1308,11 @@
 
 class WeaveError(BzrError):
 
-    _fmt = "Error in processing weave: %(message)s"
+    _fmt = "Error in processing weave: %(msg)s"
 
-    def __init__(self, message=None):
+    def __init__(self, msg=None):
         BzrError.__init__(self)
-        self.message = message
+        self.msg = msg
 
 
 class WeaveRevisionAlreadyPresent(WeaveError):
@@ -1673,7 +1671,7 @@
         if filename is None:
             filename = ""
         message = "Error(s) parsing config file %s:\n%s" % \
-            (filename, ('\n'.join(e.message for e in errors)))
+            (filename, ('\n'.join(e.msg for e in errors)))
         BzrError.__init__(self, message)
 
 

=== modified file 'bzrlib/hashcache.py'
--- a/bzrlib/hashcache.py	2008-04-24 07:22:53 +0000
+++ b/bzrlib/hashcache.py	2008-09-26 07:09:50 +0000
@@ -30,9 +30,8 @@
 CACHE_HEADER = "### bzr hashcache v5\n"
 
 import os, stat, time
-import sha
 
-from bzrlib.osutils import sha_file, pathjoin, safe_unicode
+from bzrlib.osutils import sha_file, sha_string, pathjoin, safe_unicode
 from bzrlib.trace import mutter, warning
 from bzrlib.atomicfile import AtomicFile
 from bzrlib.errors import BzrError
@@ -164,7 +163,7 @@
         if stat.S_ISREG(mode):
             digest = self._really_sha1_file(abspath)
         elif stat.S_ISLNK(mode):
-            digest = sha.new(os.readlink(abspath)).hexdigest()
+            digest = sha_string(os.readlink(abspath))
         else:
             raise BzrError("file %r: unknown file stat mode: %o"%(abspath,mode))
 

=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py	2008-09-24 02:04:33 +0000
+++ b/bzrlib/osutils.py	2008-09-29 07:09:43 +0000
@@ -35,7 +35,6 @@
                     splitdrive as _nt_splitdrive,
                     )
 import posixpath
-import sha
 import shutil
 from shutil import (
     rmtree,
@@ -53,6 +52,19 @@
     )
 """)
 
+# sha and md5 modules are deprecated in python2.6 but hashlib is available as
+# of 2.5
+if sys.version_info < (2, 5):
+    import md5 as _mod_md5
+    md5 = _mod_md5.new
+    import sha as _mod_sha
+    sha = _mod_sha.new
+else:
+    from hashlib import (
+        md5,
+        sha1 as sha,
+        )
+
 
 import bzrlib
 from bzrlib import symbol_versioning
@@ -569,7 +581,7 @@
 
     The file cursor should be already at the start.
     """
-    s = sha.new()
+    s = sha()
     BUFSIZE = 128<<10
     while True:
         b = f.read(BUFSIZE)
@@ -581,7 +593,7 @@
 
 def sha_file_by_name(fname):
     """Calculate the SHA1 of a file by reading the full text"""
-    s = sha.new()
+    s = sha()
     f = os.open(fname, os.O_RDONLY | O_BINARY)
     try:
         while True:
@@ -593,21 +605,21 @@
         os.close(f)
 
 
-def sha_strings(strings, _factory=sha.new):
+def sha_strings(strings, _factory=sha):
     """Return the sha-1 of concatenation of strings"""
     s = _factory()
     map(s.update, strings)
     return s.hexdigest()
 
 
-def sha_string(f, _factory=sha.new):
+def sha_string(f, _factory=sha):
     return _factory(f).hexdigest()
 
 
 def fingerprint_file(f):
     b = f.read()
     return {'size': len(b),
-            'sha1': sha.new(b).hexdigest()}
+            'sha1': sha(b).hexdigest()}
 
 
 def compare_files(a, b):

=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py	2008-09-27 22:58:34 +0000
+++ b/bzrlib/repofmt/pack_repo.py	2008-09-29 07:03:55 +0000
@@ -17,19 +17,22 @@
 from bzrlib.lazy_import import lazy_import
 lazy_import(globals(), """
 from itertools import izip
-import md5
 import time
 
 from bzrlib import (
     debug,
     graph,
+    osutils,
     pack,
     transactions,
     ui,
     )
 from bzrlib.index import (
     CombinedGraphIndex,
+    GraphIndex,
+    GraphIndexBuilder,
     GraphIndexPrefixAdapter,
+    InMemoryGraphIndex,
     )
 from bzrlib.knit import (
     KnitPlainFactory,
@@ -37,7 +40,6 @@
     _KnitGraphIndex,
     _DirectPackAccess,
     )
-from bzrlib.osutils import rand_chars, split_lines
 from bzrlib import tsort
 """)
 from bzrlib import (
@@ -268,7 +270,7 @@
         # What file mode to upload the pack and indices with.
         self._file_mode = file_mode
         # tracks the content written to the .pack file.
-        self._hash = md5.new()
+        self._hash = osutils.md5()
         # a four-tuple with the length in bytes of the indices, once the pack
         # is finalised. (rev, inv, text, sigs)
         self.index_sizes = None
@@ -278,7 +280,7 @@
         # under creation.
         self._cache_limit = 0
         # the temporary pack file name.
-        self.random_name = rand_chars(20) + upload_suffix
+        self.random_name = osutils.rand_chars(20) + upload_suffix
         # when was this pack started ?
         self.start_time = time.time()
         # open an output stream for the data added to the pack.
@@ -1086,7 +1088,7 @@
                     raise errors.BzrError('Mismatched key parent %r:%r' %
                         (key, parent_keys))
                 parents.append(parent_key[1])
-            text_lines = split_lines(repo.texts.get_record_stream(
+            text_lines = osutils.split_lines(repo.texts.get_record_stream(
                 [key], 'unordered', True).next().get_bytes_as('fulltext'))
             output_texts.add_lines(key, parent_keys, text_lines,
                 random_id=True, check_content=False)

=== modified file 'bzrlib/revisionspec.py'
--- a/bzrlib/revisionspec.py	2008-09-24 06:52:03 +0000
+++ b/bzrlib/revisionspec.py	2008-09-29 07:09:43 +0000
@@ -137,17 +137,6 @@
     prefix = None
     wants_revision_history = True
 
-    def __new__(cls, spec, _internal=False):
-        if _internal:
-            return object.__new__(cls, spec, _internal=_internal)
-
-        symbol_versioning.warn('Creating a RevisionSpec directly has'
-                               ' been deprecated in version 0.11. Use'
-                               ' RevisionSpec.from_string()'
-                               ' instead.',
-                               DeprecationWarning, stacklevel=2)
-        return RevisionSpec.from_string(spec)
-
     @staticmethod
     def from_string(spec):
         """Parse a revision spec string into a RevisionSpec object.

=== modified file 'bzrlib/testament.py'
--- a/bzrlib/testament.py	2008-04-24 07:22:53 +0000
+++ b/bzrlib/testament.py	2008-09-26 07:09:50 +0000
@@ -70,9 +70,12 @@
 # revisions can be serialized.
 
 from copy import copy
-from sha import sha
 
-from bzrlib.osutils import contains_whitespace, contains_linebreaks
+from bzrlib.osutils import (
+    contains_whitespace,
+    contains_linebreaks,
+    sha,
+    )
 
 
 class Testament(object):

=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2008-09-25 01:11:30 +0000
+++ b/bzrlib/tests/__init__.py	2008-09-29 08:04:34 +0000
@@ -1149,7 +1149,7 @@
         # warnings.  It's the easiest way to insulate ourselves from -Werror,
         # though.  -- Andrew, 20071062
         wlist = []
-        def _catcher(message, category, filename, lineno, file=None):
+        def _catcher(message, category, filename, lineno, file=None, line=None):
             # despite the name, 'message' is normally(?) a Warning subclass
             # instance
             wlist.append(message)

=== modified file 'bzrlib/tests/http_server.py'
--- a/bzrlib/tests/http_server.py	2008-06-10 05:55:15 +0000
+++ b/bzrlib/tests/http_server.py	2008-09-26 15:28:29 +0000
@@ -20,6 +20,7 @@
 import posixpath
 import random
 import re
+import select
 import SimpleHTTPServer
 import socket
 import SocketServer
@@ -418,6 +419,10 @@
         # Allows tests to verify number of GET requests issued
         self.GET_request_nb = 0
 
+    def __repr__(self):
+        return "%s(%s:%s)" % \
+            (self.__class__.__name__, self.host, self.port)
+
     def _get_httpd(self):
         if self._httpd is None:
             rhandler = self.request_handler
@@ -467,6 +472,14 @@
                 httpd.handle_request()
             except socket.timeout:
                 pass
+            except (socket.error, select.error), e:
+               if e[0] == errno.EBADF:
+                   # Starting with python-2.6, handle_request may raise socket
+                   # or select exceptions when the server is shut down (as we
+                   # do).
+                   pass
+               else:
+                   raise
 
     def _get_remote_url(self, path):
         path_parts = path.split(os.path.sep)

=== modified file 'bzrlib/tests/http_utils.py'
--- a/bzrlib/tests/http_utils.py	2008-08-14 02:15:31 +0000
+++ b/bzrlib/tests/http_utils.py	2008-09-26 07:09:50 +0000
@@ -16,17 +16,17 @@
 
 from cStringIO import StringIO
 import errno
-import md5
 import re
-import sha
 import socket
 import threading
 import time
 import urllib2
 import urlparse
 
+
 from bzrlib import (
     errors,
+    osutils,
     tests,
     )
 from bzrlib.smart import medium, protocol
@@ -397,7 +397,7 @@
         A1 = '%s:%s:%s' % (user, realm, password)
         A2 = '%s:%s' % (command, auth['uri'])
 
-        H = lambda x: md5.new(x).hexdigest()
+        H = lambda x: osutils.md5(x).hexdigest()
         KD = lambda secret, data: H("%s:%s" % (secret, data))
 
         nonce_count = int(auth['nc'], 16)

=== modified file 'bzrlib/tests/per_repository/test_check_reconcile.py'
--- a/bzrlib/tests/per_repository/test_check_reconcile.py	2008-09-04 20:32:04 +0000
+++ b/bzrlib/tests/per_repository/test_check_reconcile.py	2008-09-26 07:09:50 +0000
@@ -19,8 +19,7 @@
 That is, tests for reconcile and check.
 """
 
-
-import sha
+from bzrlib import osutils
 
 from bzrlib.inventory import Inventory, InventoryFile
 from bzrlib.revision import Revision
@@ -98,7 +97,7 @@
         entry.text_size = 0
         if file_contents is None:
             file_contents = '%sline\n' % entry.revision
-        entry.text_sha1 = sha.sha(file_contents).hexdigest()
+        entry.text_sha1 = osutils.sha(file_contents).hexdigest()
         inv.add(entry)
         if make_file_version:
             repo.texts.add_lines((file_id, revision),

=== modified file 'bzrlib/tests/test_hashcache.py'
--- a/bzrlib/tests/test_hashcache.py	2007-11-02 05:12:17 +0000
+++ b/bzrlib/tests/test_hashcache.py	2008-09-26 07:09:50 +0000
@@ -15,18 +15,18 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 import os
-import sha
 import stat
 import sys
 import time
 
+from bzrlib import osutils
 from bzrlib.errors import BzrError
 from bzrlib.hashcache import HashCache
 from bzrlib.tests import OsFifoFeature, TestCaseInTempDir, TestCase
 
 
 def sha1(t):
-    return sha.new(t).hexdigest()
+    return osutils.sha(t).hexdigest()
 
 
 def pause():

=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py	2008-08-14 02:15:31 +0000
+++ b/bzrlib/tests/test_http.py	2008-09-26 15:28:29 +0000
@@ -449,13 +449,6 @@
             '"GET /foo/bar HTTP/1.1" 200 - "-" "bzr/%s'
             % bzrlib.__version__) > -1)
 
-    def test_get_smart_medium(self):
-        # For HTTP, get_smart_medium should return the transport object.
-        server = self.get_readonly_server()
-        http_transport = self._transport(server.get_url())
-        medium = http_transport.get_smart_medium()
-        self.assertIs(medium, http_transport)
-
     def test_has_on_bogus_host(self):
         # Get a free address and don't 'accept' on it, so that we
         # can be sure there is no http handler there, but set a
@@ -1145,7 +1138,7 @@
         url = self.server.get_url()
         t = self._transport(url)
         try:
-            self.assertEqual(t.get('foo').read(), 'proxied contents of foo\n')
+            self.assertEqual('proxied contents of foo\n', t.get('foo').read())
         finally:
             self._restore_env()
 
@@ -1154,7 +1147,7 @@
         url = self.server.get_url()
         t = self._transport(url)
         try:
-            self.assertEqual(t.get('foo').read(), 'contents of foo\n')
+            self.assertEqual('contents of foo\n', t.get('foo').read())
         finally:
             self._restore_env()
 
@@ -1747,5 +1740,6 @@
         # No need to build a valid smart request here, the server will not even
         # try to interpret it.
         self.assertRaises(errors.SmartProtocolError,
-                          t.send_http_smart_request, 'whatever')
+                          t.get_smart_medium().send_http_smart_request,
+                          'whatever')
 

=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py	2008-07-14 07:39:30 +0000
+++ b/bzrlib/tests/test_knit.py	2008-09-26 07:09:50 +0000
@@ -19,7 +19,6 @@
 from cStringIO import StringIO
 import difflib
 import gzip
-import sha
 import sys
 
 from bzrlib import (
@@ -27,6 +26,7 @@
     generate_ids,
     knit,
     multiparent,
+    osutils,
     pack,
     )
 from bzrlib.errors import (
@@ -48,8 +48,6 @@
     _KnitKeyAccess,
     make_file_factory,
     )
-from bzrlib.osutils import split_lines
-from bzrlib.symbol_versioning import one_four
 from bzrlib.tests import (
     Feature,
     KnownFailure,
@@ -375,7 +373,7 @@
         return sio.getvalue()
 
     def test_valid_knit_data(self):
-        sha1sum = sha.new('foo\nbar\n').hexdigest()
+        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
                                         'foo\n'
                                         'bar\n'
@@ -394,7 +392,7 @@
         self.assertEqual([(('rev-id-1',), gz_txt, sha1sum)], raw_contents)
 
     def test_not_enough_lines(self):
-        sha1sum = sha.new('foo\n').hexdigest()
+        sha1sum = osutils.sha('foo\n').hexdigest()
         # record says 2 lines data says 1
         gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
                                         'foo\n'
@@ -412,7 +410,7 @@
         self.assertEqual([(('rev-id-1',),  gz_txt, sha1sum)], raw_contents)
 
     def test_too_many_lines(self):
-        sha1sum = sha.new('foo\nbar\n').hexdigest()
+        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         # record says 1 lines data says 2
         gz_txt = self.create_gz_content('version rev-id-1 1 %s\n'
                                         'foo\n'
@@ -431,7 +429,7 @@
         self.assertEqual([(('rev-id-1',), gz_txt, sha1sum)], raw_contents)
 
     def test_mismatched_version_id(self):
-        sha1sum = sha.new('foo\nbar\n').hexdigest()
+        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
                                         'foo\n'
                                         'bar\n'
@@ -450,7 +448,7 @@
             knit._read_records_iter_raw(records))
 
     def test_uncompressed_data(self):
-        sha1sum = sha.new('foo\nbar\n').hexdigest()
+        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         txt = ('version rev-id-1 2 %s\n'
                'foo\n'
                'bar\n'
@@ -470,7 +468,7 @@
             knit._read_records_iter_raw(records))
 
     def test_corrupted_data(self):
-        sha1sum = sha.new('foo\nbar\n').hexdigest()
+        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
                                         'foo\n'
                                         'bar\n'
@@ -1641,7 +1639,7 @@
         key_basis = ('bar',)
         key_missing = ('missing',)
         test.add_lines(key, (), ['foo\n'])
-        key_sha1sum = sha.new('foo\n').hexdigest()
+        key_sha1sum = osutils.sha('foo\n').hexdigest()
         sha1s = test.get_sha1s([key])
         self.assertEqual({key: key_sha1sum}, sha1s)
         self.assertEqual([], basis.calls)
@@ -1649,7 +1647,7 @@
         # directly (rather than via text reconstruction) so that remote servers
         # etc don't have to answer with full content.
         basis.add_lines(key_basis, (), ['foo\n', 'bar\n'])
-        basis_sha1sum = sha.new('foo\nbar\n').hexdigest()
+        basis_sha1sum = osutils.sha('foo\nbar\n').hexdigest()
         basis.calls = []
         sha1s = test.get_sha1s([key, key_missing, key_basis])
         self.assertEqual({key: key_sha1sum,

=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py	2008-09-27 22:58:34 +0000
+++ b/bzrlib/tests/test_repository.py	2008-09-29 07:03:55 +0000
@@ -22,7 +22,6 @@
 also see this file.
 """
 
-import md5
 from stat import S_ISDIR
 from StringIO import StringIO
 
@@ -53,6 +52,7 @@
     bzrdir,
     errors,
     inventory,
+    osutils,
     progress,
     repository,
     revision as _mod_revision,
@@ -981,7 +981,7 @@
             index_class=BTreeGraphIndex)
         self.assertIsInstance(pack.revision_index, BTreeBuilder)
         self.assertIsInstance(pack.inventory_index, BTreeBuilder)
-        self.assertIsInstance(pack._hash, type(md5.new()))
+        self.assertIsInstance(pack._hash, type(osutils.md5()))
         self.assertTrue(pack.upload_transport is upload_transport)
         self.assertTrue(pack.index_transport is index_transport)
         self.assertTrue(pack.pack_transport is pack_transport)

=== modified file 'bzrlib/tests/test_testament.py'
--- a/bzrlib/tests/test_testament.py	2007-11-01 09:52:45 +0000
+++ b/bzrlib/tests/test_testament.py	2008-09-26 07:09:50 +0000
@@ -19,8 +19,8 @@
 # TODO: Testaments with x-bits
 
 import os
-from sha import sha
 
+from bzrlib import osutils
 from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
 from bzrlib.testament import Testament, StrictTestament, StrictTestament3
 from bzrlib.transform import TreeTransform
@@ -211,21 +211,21 @@
 bazaar-ng testament short form 1
 revision-id: test at user-1
 sha1: %s
-""" % sha(REV_1_TESTAMENT).hexdigest()
+""" % osutils.sha(REV_1_TESTAMENT).hexdigest()
 
 
 REV_1_SHORT_STRICT = """\
 bazaar-ng testament short form 2.1
 revision-id: test at user-1
 sha1: %s
-""" % sha(REV_1_STRICT_TESTAMENT).hexdigest()
+""" % osutils.sha(REV_1_STRICT_TESTAMENT).hexdigest()
 
 
 REV_1_SHORT_STRICT3 = """\
 bazaar testament short form 3 strict
 revision-id: test at user-1
 sha1: %s
-""" % sha(REV_1_STRICT_TESTAMENT3).hexdigest()
+""" % osutils.sha(REV_1_STRICT_TESTAMENT3).hexdigest()
 
 
 REV_2_TESTAMENT = """\
@@ -293,21 +293,21 @@
 bazaar-ng testament short form 1
 revision-id: test at user-2
 sha1: %s
-""" % sha(REV_2_TESTAMENT).hexdigest()
+""" % osutils.sha(REV_2_TESTAMENT).hexdigest()
 
 
 REV_2_SHORT_STRICT = """\
 bazaar-ng testament short form 2.1
 revision-id: test at user-2
 sha1: %s
-""" % sha(REV_2_STRICT_TESTAMENT).hexdigest()
+""" % osutils.sha(REV_2_STRICT_TESTAMENT).hexdigest()
 
 
 REV_2_SHORT_STRICT3 = """\
 bazaar testament short form 3 strict
 revision-id: test at user-2
 sha1: %s
-""" % sha(REV_2_STRICT_TESTAMENT3).hexdigest()
+""" % osutils.sha(REV_2_STRICT_TESTAMENT3).hexdigest()
 
 
 REV_PROPS_TESTAMENT = """\

=== modified file 'bzrlib/transport/__init__.py'
--- a/bzrlib/transport/__init__.py	2008-09-10 19:14:43 +0000
+++ b/bzrlib/transport/__init__.py	2008-09-25 16:03:22 +0000
@@ -293,7 +293,7 @@
     _bytes_to_read_before_seek = 0
 
     def __init__(self, base):
-        super(Transport, self).__init__(base=base)
+        super(Transport, self).__init__()
         self.base = base
 
     def _translate_error(self, e, path, raise_generic=True):

=== modified file 'bzrlib/transport/http/__init__.py'
--- a/bzrlib/transport/http/__init__.py	2008-09-02 04:34:23 +0000
+++ b/bzrlib/transport/http/__init__.py	2008-09-26 14:28:56 +0000
@@ -25,6 +25,7 @@
 import urlparse
 import urllib
 import sys
+import weakref
 
 from bzrlib import (
     debug,
@@ -79,7 +80,7 @@
     return url
 
 
-class HttpTransportBase(ConnectedTransport, medium.SmartClientMedium):
+class HttpTransportBase(ConnectedTransport):
     """Base class for http implementations.
 
     Does URL parsing, etc, but not any network IO.
@@ -103,6 +104,7 @@
         self._impl_name = impl_name
         super(HttpTransportBase, self).__init__(base,
                                                 _from_transport=_from_transport)
+        self._medium = None
         # range hint is handled dynamically throughout the life
         # of the transport object. We start by trying multi-range
         # requests and if the server returns bogus results, we
@@ -161,16 +163,16 @@
                     path=self._path)
         return auth
 
-    def get_request(self):
-        return SmartClientHTTPMediumRequest(self)
-
     def get_smart_medium(self):
-        """See Transport.get_smart_medium.
+        """See Transport.get_smart_medium."""
+        if self._medium is None:
+            # Since medium holds some state (smart server probing at least), we
+            # need to keep it around. Note that this is needed because medium
+            # has the same 'base' attribute as the transport so it can't be
+            # shared between transports having different bases.
+            self._medium = SmartClientHTTPMedium(self)
+        return self._medium
 
-        HttpTransportBase directly implements the minimal interface of
-        SmartMediumClient, so this returns self.
-        """
-        return self
 
     def _degrade_range_hint(self, relpath, ranges, exc_info):
         if self._range_hint == 'multi':
@@ -515,16 +517,21 @@
 
         return ','.join(strings)
 
-    def send_http_smart_request(self, bytes):
-        try:
-            code, body_filelike = self._post(bytes)
-            if code != 200:
-                raise InvalidHttpResponse(
-                    self._remote_path('.bzr/smart'),
-                    'Expected 200 response code, got %r' % (code,))
-        except errors.InvalidHttpResponse, e:
-            raise errors.SmartProtocolError(str(e))
-        return body_filelike
+
+# TODO: May be better located in smart/medium.py with the other
+# SmartMedium classes
+class SmartClientHTTPMedium(medium.SmartClientMedium):
+
+    def __init__(self, http_transport):
+        super(SmartClientHTTPMedium, self).__init__(http_transport.base)
+        # We don't want to create a circular reference between the http
+        # transport and its associated medium. Since the transport will live
+        # longer than the medium, the medium keep only a weak reference to its
+        # transport.
+        self._http_transport_ref = weakref.ref(http_transport)
+
+    def get_request(self):
+        return SmartClientHTTPMediumRequest(self)
 
     def should_probe(self):
         return True
@@ -538,7 +545,22 @@
         rel_url = urlutils.relative_url(self.base, transport_base)
         return urllib.unquote(rel_url)
 
-
+    def send_http_smart_request(self, bytes):
+        try:
+            # Get back the http_transport hold by the weak reference
+            t = self._http_transport_ref()
+            code, body_filelike = t._post(bytes)
+            if code != 200:
+                raise InvalidHttpResponse(
+                    t._remote_path('.bzr/smart'),
+                    'Expected 200 response code, got %r' % (code,))
+        except errors.InvalidHttpResponse, e:
+            raise errors.SmartProtocolError(str(e))
+        return body_filelike
+
+
+# TODO: May be better located in smart/medium.py with the other
+# SmartMediumRequest classes
 class SmartClientHTTPMediumRequest(medium.SmartClientMediumRequest):
     """A SmartClientMediumRequest that works with an HTTP medium."""
 

=== modified file 'bzrlib/transport/http/_urllib2_wrappers.py'
--- a/bzrlib/transport/http/_urllib2_wrappers.py	2008-05-19 10:30:37 +0000
+++ b/bzrlib/transport/http/_urllib2_wrappers.py	2008-09-26 07:09:50 +0000
@@ -47,8 +47,6 @@
 # ensure that.
 
 import httplib
-import md5
-import sha
 import socket
 import urllib
 import urllib2
@@ -62,6 +60,7 @@
     config,
     debug,
     errors,
+    osutils,
     trace,
     transport,
     ui,
@@ -1123,9 +1122,9 @@
     H = None
     KD = None
     if algorithm == 'MD5':
-        H = lambda x: md5.new(x).hexdigest()
+        H = lambda x: osutils.md5(x).hexdigest()
     elif algorithm == 'SHA':
-        H = lambda x: sha.new(x).hexdigest()
+        H = lambda x: osutils.sha(x).hexdigest()
     if H is not None:
         KD = lambda secret, data: H("%s:%s" % (secret, data))
     return H, KD
@@ -1134,7 +1133,7 @@
 def get_new_cnonce(nonce, nonce_count):
     raw = '%s:%d:%s:%s' % (nonce, nonce_count, time.ctime(),
                            urllib2.randombytes(8))
-    return sha.new(raw).hexdigest()[:16]
+    return osutils.sha(raw).hexdigest()[:16]
 
 
 class DigestAuthHandler(AbstractAuthHandler):

=== modified file 'bzrlib/transport/remote.py'
--- a/bzrlib/transport/remote.py	2008-08-29 19:33:35 +0000
+++ b/bzrlib/transport/remote.py	2008-09-25 16:03:22 +0000
@@ -43,7 +43,7 @@
         self.st_mode = mode
 
 
-class RemoteTransport(transport.ConnectedTransport, medium.SmartClientMedium):
+class RemoteTransport(transport.ConnectedTransport):
     """Connection to a smart server.
 
     The connection holds references to the medium that can be used to send

=== modified file 'bzrlib/tuned_gzip.py'
--- a/bzrlib/tuned_gzip.py	2008-04-24 07:22:53 +0000
+++ b/bzrlib/tuned_gzip.py	2008-09-25 15:17:15 +0000
@@ -21,7 +21,7 @@
 
 # make GzipFile faster:
 import gzip
-from gzip import U32, LOWU32, FEXTRA, FCOMMENT, FNAME, FHCRC
+from gzip import FEXTRA, FCOMMENT, FNAME, FHCRC
 import sys
 import struct
 import zlib
@@ -32,6 +32,21 @@
 __all__ = ["GzipFile", "bytes_to_gzip"]
 
 
+def U32(i):
+    """Return i as an unsigned integer, assuming it fits in 32 bits.
+
+    If it's >= 2GB when viewed as a 32-bit unsigned int, return a long.
+    """
+    if i < 0:
+        i += 1L << 32
+    return i
+
+
+def LOWU32(i):
+    """Return the low-order 32 bits of an int, as a non-negative int."""
+    return i & 0xFFFFFFFFL
+
+
 def bytes_to_gzip(bytes, factory=zlib.compressobj,
     level=zlib.Z_DEFAULT_COMPRESSION, method=zlib.DEFLATED,
     width=-zlib.MAX_WBITS, mem=zlib.DEF_MEM_LEVEL,

=== modified file 'bzrlib/util/configobj/configobj.py'
--- a/bzrlib/util/configobj/configobj.py	2008-02-27 21:36:16 +0000
+++ b/bzrlib/util/configobj/configobj.py	2008-09-26 14:45:20 +0000
@@ -250,11 +250,11 @@
     This is the base class for all errors that ConfigObj raises.
     It is a subclass of SyntaxError.
     """
-    def __init__(self, message='', line_number=None, line=''):
+    def __init__(self, msg='', line_number=None, line=''):
         self.line = line
         self.line_number = line_number
-        self.message = message
-        SyntaxError.__init__(self, message)
+        self.msg = msg
+        SyntaxError.__init__(self, msg)
 
 
 class NestingError(ConfigObjError):

=== modified file 'bzrlib/weave.py'
--- a/bzrlib/weave.py	2008-07-16 18:14:23 +0000
+++ b/bzrlib/weave.py	2008-09-26 07:09:50 +0000
@@ -71,7 +71,6 @@
 from copy import copy
 from cStringIO import StringIO
 import os
-import sha
 import time
 import warnings
 
@@ -86,7 +85,7 @@
         WeaveRevisionNotPresent,
         )
 import bzrlib.errors as errors
-from bzrlib.osutils import dirname, sha_strings, split_lines
+from bzrlib.osutils import dirname, sha, sha_strings, split_lines
 import bzrlib.patiencediff
 from bzrlib.revision import NULL_REVISION
 from bzrlib.symbol_versioning import *
@@ -215,7 +214,7 @@
 
     __slots__ = ['_weave', '_parents', '_sha1s', '_names', '_name_map',
                  '_weave_name', '_matcher', '_allow_reserved']
-    
+
     def __init__(self, weave_name=None, access_mode='w', matcher=None,
                  get_scope=None, allow_reserved=False):
         """Create a weave.
@@ -224,7 +223,7 @@
             for detecting when this weave goes out of scope (should stop
             answering requests or allowing mutation).
         """
-        super(Weave, self).__init__(access_mode)
+        super(Weave, self).__init__()
         self._weave = []
         self._parents = []
         self._sha1s = []
@@ -799,7 +798,7 @@
             # For creating the ancestry, IntSet is much faster (3.7s vs 0.17s)
             # The problem is that set membership is much more expensive
             name = self._idx_to_name(i)
-            sha1s[name] = sha.new()
+            sha1s[name] = sha()
             texts[name] = []
             new_inc = set([name])
             for p in self._parents[i]:




More information about the bazaar-commits mailing list