diff -Nru x-kit-0.4.2.3build1/.bzr/branch/branch.conf x-kit-0.5.0/.bzr/branch/branch.conf --- x-kit-0.4.2.3build1/.bzr/branch/branch.conf 2011-06-28 13:58:15.000000000 +0000 +++ x-kit-0.5.0/.bzr/branch/branch.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -parent_location = bzr+ssh://bazaar.launchpad.net/%2Bbranch/xorgparser/ -submit_branch = bzr+ssh://bazaar.launchpad.net/~cjwatson/xorgparser/dh-python2/ -gtk_global_commit_message = """Convert to dh_python2 - -Thanks to Colin Watson for the patch""" -gtk_file_commit_messages = de diff -Nru x-kit-0.4.2.3build1/.bzr/branch/format x-kit-0.5.0/.bzr/branch/format --- x-kit-0.4.2.3build1/.bzr/branch/format 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/branch/format 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Bazaar Branch Format 6 (bzr 0.15) diff -Nru x-kit-0.4.2.3build1/.bzr/branch/last-revision x-kit-0.5.0/.bzr/branch/last-revision --- x-kit-0.4.2.3build1/.bzr/branch/last-revision 2011-06-28 14:15:44.000000000 +0000 +++ x-kit-0.5.0/.bzr/branch/last-revision 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -45 alberto.milone@canonical.com-20110628141544-9l4yizwjg043mrrj diff -Nru x-kit-0.4.2.3build1/.bzr/branch/tags x-kit-0.5.0/.bzr/branch/tags --- x-kit-0.4.2.3build1/.bzr/branch/tags 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/branch/tags 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d5:0.3.457:martin.pitt@canonical.com-20080814163659-t8reiejr6gb1d4v75:0.3.654:albertomilone@alice.it-20080910153712-af7zdha1v4382oep7:0.4.2.160:alberto.milone@canonical.com-20100326135306-r59fhcae46cb95jd7:0.4.2.260:alberto.milone@canonical.com-20100420094129-k242bip0t8z7xc6xe \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.bzr/branch-format x-kit-0.5.0/.bzr/branch-format --- x-kit-0.4.2.3build1/.bzr/branch-format 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/branch-format 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Bazaar-NG meta directory, format 1 diff -Nru x-kit-0.4.2.3build1/.bzr/checkout/conflicts x-kit-0.5.0/.bzr/checkout/conflicts --- x-kit-0.4.2.3build1/.bzr/checkout/conflicts 2011-06-28 13:55:10.000000000 +0000 +++ x-kit-0.5.0/.bzr/checkout/conflicts 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -BZR conflict list format 1 Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/checkout/dirstate and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/checkout/dirstate differ diff -Nru x-kit-0.4.2.3build1/.bzr/checkout/format x-kit-0.5.0/.bzr/checkout/format --- x-kit-0.4.2.3build1/.bzr/checkout/format 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/checkout/format 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Bazaar Working Tree Format 6 (bzr 1.14) diff -Nru x-kit-0.4.2.3build1/.bzr/checkout/merge-hashes x-kit-0.5.0/.bzr/checkout/merge-hashes --- x-kit-0.4.2.3build1/.bzr/checkout/merge-hashes 2011-06-28 13:55:10.000000000 +0000 +++ x-kit-0.5.0/.bzr/checkout/merge-hashes 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -BZR merge-modified list format 1 -file_id: rules-20080724151700-jhbdsvse4p84uljh-13 -hash: 34892fa66e05db0ad123c140a2b6d08d7c3ce2ab - -file_id: control-20080724151700-jhbdsvse4p84uljh-10 -hash: c3423d70a276d228d08f82dfe67c37b97c8b238c diff -Nru x-kit-0.4.2.3build1/.bzr/README x-kit-0.5.0/.bzr/README --- x-kit-0.4.2.3build1/.bzr/README 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -This is a Bazaar control directory. -Do not change any files in this directory. -See http://bazaar.canonical.com/ for more information about Bazaar. diff -Nru x-kit-0.4.2.3build1/.bzr/repository/format x-kit-0.5.0/.bzr/repository/format --- x-kit-0.4.2.3build1/.bzr/repository/format 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/format 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Bazaar pack repository format 1 (needs bzr 0.92) Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.six x-kit-0.5.0/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.six 2011-06-28 13:52:36.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/573ef3c80485f915b004e203967d1550.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.six x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.six 2011-06-28 14:00:46.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.tix x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.tix --- x-kit-0.4.2.3build1/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.tix 2011-06-28 14:00:46.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/595a037600b34d1c6f3f7f1cfec6ca5c.tix 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=2 -key_elements=2 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.six x-kit-0.5.0/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.six 2011-06-28 14:15:44.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/6650df9e14fe55005bf71ab191361e3c.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.six x-kit-0.5.0/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.six 2011-06-28 11:56:29.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/731afa5095556f4d0588ab70e9efbe3c.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/7422550e979976da96e742abd204ac57.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/7422550e979976da96e742abd204ac57.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/7422550e979976da96e742abd204ac57.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/7422550e979976da96e742abd204ac57.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/7422550e979976da96e742abd204ac57.six x-kit-0.5.0/.bzr/repository/indices/7422550e979976da96e742abd204ac57.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/7422550e979976da96e742abd204ac57.six 2011-06-28 13:54:12.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/7422550e979976da96e742abd204ac57.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/7422550e979976da96e742abd204ac57.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/7422550e979976da96e742abd204ac57.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.six x-kit-0.5.0/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.six 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/c87813366a416e500831a0e0ce620743.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.rix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.six and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.six differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.tix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e12fc7c307c34707f58963a41bf03d2b.tix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.iix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.iix differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.rix and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.rix differ diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.six x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.six --- x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.six 2011-06-28 13:57:52.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.six 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=0 -key_elements=1 -len=0 - diff -Nru x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.tix x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.tix --- x-kit-0.4.2.3build1/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.tix 2011-06-28 13:57:52.000000000 +0000 +++ x-kit-0.5.0/.bzr/repository/indices/e916c0b424f5ba2cd51230e5b46057d5.tix 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Bazaar Graph Index 1 -node_ref_lists=2 -key_elements=2 -len=0 - Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/pack-names and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/pack-names differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/573ef3c80485f915b004e203967d1550.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/573ef3c80485f915b004e203967d1550.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/595a037600b34d1c6f3f7f1cfec6ca5c.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/595a037600b34d1c6f3f7f1cfec6ca5c.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/6650df9e14fe55005bf71ab191361e3c.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/6650df9e14fe55005bf71ab191361e3c.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/731afa5095556f4d0588ab70e9efbe3c.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/731afa5095556f4d0588ab70e9efbe3c.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/7422550e979976da96e742abd204ac57.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/7422550e979976da96e742abd204ac57.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/c87813366a416e500831a0e0ce620743.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/c87813366a416e500831a0e0ce620743.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/e12fc7c307c34707f58963a41bf03d2b.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/e12fc7c307c34707f58963a41bf03d2b.pack differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.bzr/repository/packs/e916c0b424f5ba2cd51230e5b46057d5.pack and /tmp/SzKNAyDWa9/x-kit-0.5.0/.bzr/repository/packs/e916c0b424f5ba2cd51230e5b46057d5.pack differ diff -Nru x-kit-0.4.2.3build1/debian/changelog x-kit-0.5.0/debian/changelog --- x-kit-0.4.2.3build1/debian/changelog 2011-12-31 02:15:46.000000000 +0000 +++ x-kit-0.5.0/debian/changelog 2012-06-05 11:01:04.000000000 +0000 @@ -1,3 +1,13 @@ +x-kit (0.5.0) quantal; urgency=low + + * New upstream release: 0.5.0: + - Support for Python 3. + - API cleanup. + * Packaging changes to allow shipping both the Python 2 + and the Python 3 libraries. + + -- Alberto Milone Tue, 05 Jun 2012 12:59:16 +0200 + x-kit (0.4.2.3build1) precise; urgency=low * Rebuild to drop python2.6 dependencies. diff -Nru x-kit-0.4.2.3build1/debian/control x-kit-0.5.0/debian/control --- x-kit-0.4.2.3build1/debian/control 2011-06-28 13:55:10.000000000 +0000 +++ x-kit-0.5.0/debian/control 2012-06-05 10:58:56.000000000 +0000 @@ -1,15 +1,25 @@ Source: x-kit Section: python Priority: optional -Build-Depends: cdbs (>= 0.4.90~), debhelper (>= 5.0.38), python-dev (>= 2.4), intltool +Build-Depends: debhelper (>= 5.0.38), python-dev (>= 2.6), python3-dev, intltool Maintainer: Alberto Milone (tseliot) Standards-Version: 3.8.0 -X-Python-Version: >= 2.4 +X-Python-Version: >= 2.6 +X-Python3-Version: >= 3.2 Vcs-Bzr: https://code.launchpad.net/~albertomilone/xorgparser/main/ Package: python-xkit Architecture: all -Depends: ${python:Depends} -Breaks: ${python:Breaks} -Description: library for the manipulation of the xorg.conf - X-Kit is library for the manipulation of the xorg.conf. +Depends: ${python:Depends}, ${misc:Depends} +Description: library for the manipulation of xorg.conf files (Python 2) + X-Kit is library for the manipulation of xorg.conf files. + . + This is the Python 2 version of the package. + +Package: python3-xkit +Architecture: all +Depends: ${python3:Depends}, ${misc:Depends} +Description: library for the manipulation of xorg.conf files (Python 3) + X-Kit is library for the manipulation of xorg.conf files. + . + This is the Python 3 version of the package. diff -Nru x-kit-0.4.2.3build1/debian/python3-xkit.install x-kit-0.5.0/debian/python3-xkit.install --- x-kit-0.4.2.3build1/debian/python3-xkit.install 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/debian/python3-xkit.install 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/usr/lib/python3* usr/lib/ diff -Nru x-kit-0.4.2.3build1/debian/python-xkit.install x-kit-0.5.0/debian/python-xkit.install --- x-kit-0.4.2.3build1/debian/python-xkit.install 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/debian/python-xkit.install 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1 @@ +debian/tmp/usr/lib/python2* usr/lib/ diff -Nru x-kit-0.4.2.3build1/debian/rules x-kit-0.5.0/debian/rules --- x-kit-0.4.2.3build1/debian/rules 2011-06-28 13:55:10.000000000 +0000 +++ x-kit-0.5.0/debian/rules 2012-06-05 10:58:56.000000000 +0000 @@ -1,12 +1,43 @@ #!/usr/bin/make -f -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk +#DH_VERBOSE=1 -DEB_PYTHON_INSTALL_ARGS_ALL := --no-compile +PYTHON2=$(shell pyversions -vr) +PYTHON3=$(shell py3versions -vr) +PYTHON2MJ=$(shell pyversions -vr | cut -c1-1) +PYTHON3MJ=$(shell py3versions -vr | cut -c1-1) -common-post-build-indep:: - (cd tests; PYTHONPATH=.. ./run) +%: + dh $@ --with python2,python3 -clean:: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) +test-python%: + (cd tests; PYTHONPATH=.. ./run$*) +override_dh_auto_test: $(PYTHON2MJ:%=test-python%) $(PYTHON3MJ:%=test-python%) +endif + +build-python%: + python$* setup.py build + +override_dh_auto_build: $(PYTHON3:%=build-python%) + dh_auto_build + +install-python%: + python$* setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb + +override_dh_auto_install: $(PYTHON3:%=install-python%) + dh_auto_install + +#override_dh_installchangelogs: +# dh_installchangelogs -k foo/NEWS.rst + +#override_dh_installdocs: +# python setup.py build_sphinx +# dh_installdocs build/sphinx/html + +override_dh_auto_clean: + dh_auto_clean + rm -rf build + rm -rf *.egg-info rm -f settings.py tests/xkittest-*.txt + diff -Nru x-kit-0.4.2.3build1/examples/0-example.py x-kit-0.5.0/examples/0-example.py --- x-kit-0.4.2.3build1/examples/0-example.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/examples/0-example.py 2012-06-05 10:03:55.000000000 +0000 @@ -17,8 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -from XKit import xorgparser -from XKit.xorgparser import * +from xkit import xorgparser +from xkit.xorgparser import * import sys import os @@ -34,135 +34,135 @@ ''' Remove the Defaultdepth from all the Screen sections ''' - a.removeOption('Screen', 'DefaultDepth') + a.remove_option('Screen', 'DefaultDepth') ''' Remove the Defaultdepth from the 1st Screen section ''' - a.removeOption('Screen', 'DefaultDepth', position=0) + a.remove_option('Screen', 'DefaultDepth', position=0) ''' Set the Defaultdepth to 24 bit in all sections ''' - a.addOption('Screen', 'Defaultdepth', '24') + a.add_option('Screen', 'Defaultdepth', '24') ''' Set the Defaultdepth to 24 bit in the 1st Screen section ''' - a.addOption('Screen', 'Defaultdepth', '24', position=0, prefix='') + a.add_option('Screen', 'Defaultdepth', '24', position=0, prefix='') ''' Get the value assigned to the AddARGBGLXVisuals option in the 1st Screen section ''' try: - print 'AddARGBGLXVisuals', a.getValue('Screen', 'AddARGBGLXVisuals', position=1, identifier='Display') - except OptionException, e: - print 'Error:', e + print('AddARGBGLXVisuals', a.get_value('Screen', 'AddARGBGLXVisuals', position=1, identifier='Display')) + except OptionException as e: + print('Error:', e) ''' Add an Option (with the Option prefix) to the 1st Screen section ''' - a.addOption('Screen', 'AddARGBGLXVisuals', 'True', optiontype='Option', position=0) + a.add_option('Screen', 'AddARGBGLXVisuals', 'True', option_type='Option', position=0) ''' Print the global dict i.e. the dict which contains all sections ''' - print '\nGlobal dict is the dict which contains all sections\n', a.globaldict + print('\nGlobal dict is the dict which contains all sections\n', a.globaldict) #print '\nGlobal iters is\n', a.globaliters ''' Make a new Device and a Screen section with an identifier ''' - a.makeSection('Device', identifier='Name of this new Device Section') - a.makeSection('Screen', identifier='Default Screen') + a.make_section('Device', identifier='Name of this new Device Section') + a.make_section('Screen', identifier='Default Screen') ''' Add a reference to the Screen section identified as "New Default Screen" to the 1st ServerLayout section ''' - print '\nNew Default Screen in progress' - a.addReference('ServerLayout', 'Screen', 'New Default Screen', position=0) - a.addReference('ServerLayout', 'InputDevice', 'New Device', position=0) - a.removeReference('ServerLayout', 'InputDevice', 'New Device', position=0) + print('\nNew Default Screen in progress') + a.add_reference('ServerLayout', 'Screen', 'New Default Screen', position=0) + a.add_reference('ServerLayout', 'InputDevice', 'New Device', position=0) + a.remove_reference('ServerLayout', 'InputDevice', 'New Device', position=0) ''' Add a reference to the Screen section identified as "New Default Screen" to all the ServerLayout sections ''' - #a.addReference('ServerLayout', 'Screen', 'New Default Screen', position=0) + #a.add_reference('ServerLayout', 'Screen', 'New Default Screen', position=0) ''' Remove a reference to the Screen section identified as "New Default Screen" from all the ServerLayout sections ''' - #a.removeReference('ServerLayout', 'Screen', 'New Default Screen')#, position=0) + #a.remove_reference('ServerLayout', 'Screen', 'New Default Screen')#, position=0) ''' Create a new "Display" SubSection inside all the Screen sections ''' - a.makeSubSection('Screen', 'Display')#, position=0) + a.make_subsection('Screen', 'Display')#, position=0) ''' Remove a "Display" SubSection inside all the Screen sections ''' - #a.removeSubSection('Screen', 'Display')#, position=0) + #a.remove_subsection('Screen', 'Display')#, position=0) ''' Add an option to the Display subsection of the 1st Screen section ''' - a.addSubOption('Screen', 'Display', 'Depth', value='24', position=0) - a.addSubOption('Screen', 'Display', 'Virtual', value='1600 1200', position=0) - a.addSubOption('Screen', 'Display', 'Name', value='Whatever', optiontype='Option', position=None) + a.add_suboption('Screen', 'Display', 'Depth', value='24', position=0) + a.add_suboption('Screen', 'Display', 'Virtual', value='1600 1200', position=0) + a.add_suboption('Screen', 'Display', 'Name', value='Whatever', option_type='Option', position=None) ''' Remove options from the Display subsection of all or of the 1st Screen section ''' - a.removeSubOption('Screen', 'Display', 'Depth') - a.removeSubOption('Screen', 'Martin', 'Virtual', position=0) + a.remove_suboption('Screen', 'Display', 'Depth') + a.remove_suboption('Screen', 'Martin', 'Virtual', position=0) ''' Get the identifier of the 1st Device section ''' - print a.getValue('Device', 'Identifier', 0) - #print a.getValue('SubSection', 'Name', position=0, identifier='Display', sect='Screen') + print(a.get_value('Device', 'Identifier', 0)) + #print a.get_value('SubSection', 'Name', position=0, identifier='Display', sect='Screen') - a.makeSection('Screen', 'New Screen') - a.makeSection('Screen', 'New Screen')#this new section won't be created + a.make_section('Screen', 'New Screen') + a.make_section('Screen', 'New Screen')#this new section won't be created ''' Create a new device section add a new option to it and make a reference to it in the Screen section ''' - dev = a.makeSection('Device', 'My Device') - a.addOption('Device', 'BusID', 'PCI:1:0:0', position=dev) - a.addReference('Screen', 'Device', 'My Device', position=0) + dev = a.make_section('Device', 'My Device') + a.add_option('Device', 'BusID', 'PCI:1:0:0', position=dev) + a.add_reference('Screen', 'Device', 'My Device', position=0) - a.addReference('Device', 'Screen', 4, position=0) - print a.getReferences('Screen', 0, reflist=['Device']) + a.add_reference('Device', 'Screen', 4, position=0) + print(a.get_references('Screen', 0, reflist=['Device'])) - print 'Virtual', a.getValue('SubSection', 'Virtual', position=0, identifier='Display', sect='Screen') - print 'Modes', a.getValue('SubSection', 'Modes', position=0, identifier='Display', sect='Screen') + print('Virtual', a.get_value('SubSection', 'Virtual', position=0, identifier='Display', sect='Screen')) + print('Modes', a.get_value('SubSection', 'Modes', position=0, identifier='Display', sect='Screen')) ''' Create a new Device section and print the list of identifiers so as to see that the new identifier and position are included in identifiers ''' - a.makeSection('Device', identifier='New Graphics Card') + a.make_section('Device', identifier='New Graphics Card') - print '\nCreate Broken Screen section' - pos = a.makeSection('Screen', identifier='Broken Screen Section') - print '\nAdding References' - a.addReference('Screen', 'Monitor', 'Broken Monitor Section', position=pos) - a.addReference('Screen', 'Device', 'Broken Device Section', position=pos) + print('\nCreate Broken Screen section') + pos = a.make_section('Screen', identifier='Broken Screen Section') + print('\nAdding References') + a.add_reference('Screen', 'Monitor', 'Broken Monitor Section', position=pos) + a.add_reference('Screen', 'Device', 'Broken Device Section', position=pos) try: - print 'Horizsync value is', a.getValue('Monitor', 'Horizsync', 0) - except OptionException, e: - print 'Error:', e + print('Horizsync value is', a.get_value('Monitor', 'Horizsync', 0)) + except OptionException as e: + print('Error:', e) ''' Write the changes to the destination file ''' - a.writeFile(destination) + a.write(destination) if __name__ == '__main__': main() diff -Nru x-kit-0.4.2.3build1/examples/1-example.py x-kit-0.5.0/examples/1-example.py --- x-kit-0.4.2.3build1/examples/1-example.py 2011-06-28 13:52:47.000000000 +0000 +++ x-kit-0.5.0/examples/1-example.py 2012-06-05 10:03:55.000000000 +0000 @@ -18,7 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -from accessories import * +from .accessories import * import os def main(): @@ -32,33 +32,33 @@ ''' Remove the Defaultdepth from all the Screen sections ''' - a.removeOption('Screen', 'DefaultDepth') + a.remove_option('Screen', 'DefaultDepth') ''' Remove the Defaultdepth from the 1st Screen section ''' - a.removeOption('Screen', 'DefaultDepth', position=0) + a.remove_option('Screen', 'DefaultDepth', position=0) ''' Set the Defaultdepth to 24 bit in all sections ''' - a.addOption('Screen', 'Defaultdepth', '24', prefix='') + a.add_option('Screen', 'Defaultdepth', '24', prefix='') ''' Set the Defaultdepth to 24 bit in the 1st Screen section ''' - a.addOption('Screen', 'Defaultdepth', '24', position=0, prefix='') + a.add_option('Screen', 'Defaultdepth', '24', position=0, prefix='') ''' Get the value assigned to the AddARGBGLXVisuals option in the 1st Screen section ''' try: - print 'AddARGBGLXVisuals', a.getValue('Screen', 'AddARGBGLXVisuals', position=1, identifier='Display') - except OptionNotAvailableException, e: - print 'Error:', e + print('AddARGBGLXVisuals', a.get_value('Screen', 'AddARGBGLXVisuals', position=1, identifier='Display')) + except OptionNotAvailableException as e: + print('Error:', e) ''' Add an Option (with the Option prefix) to the 1st Screen section ''' - a.addOption('Screen', 'AddARGBGLXVisuals', 'True', optiontype='Option', position=0) + a.add_option('Screen', 'AddARGBGLXVisuals', 'True', option_type='Option', position=0) ''' Print the contents of all the Device sections @@ -68,133 +68,133 @@ ''' Print the global dict i.e. the dict which contains all sections ''' - print '\nGlobal dict is the dict which contains all sections\n', a.globaldict + print('\nGlobal dict is the dict which contains all sections\n', a.globaldict) #print '\nGlobal iters is\n', a.globaliters ''' Make a new Device and a Screen section with an identifier ''' - a.makeSection('Device', identifier='Name of this new Device Section') - a.makeSection('Screen', identifier='Default Screen') + a.make_section('Device', identifier='Name of this new Device Section') + a.make_section('Screen', identifier='Default Screen') ''' Add a reference to the Screen section identified as "New Default Screen" to the 1st ServerLayout section ''' - a.addReference('ServerLayout', 'Screen', 'New Default Screen') + a.add_reference('ServerLayout', 'Screen', 'New Default Screen') ''' Add a reference to the Screen section identified as "New Default Screen" to all the ServerLayout sections ''' - a.addReference('ServerLayout', 'Screen', 'New Default Screen', position=0) + a.add_reference('ServerLayout', 'Screen', 'New Default Screen', position=0) ''' Remove a reference to the Screen section identified as "New Default Screen" from all the ServerLayout sections ''' - a.removeReference('ServerLayout', 'Screen', 'New Default Screen')#, position=0) + a.remove_reference('ServerLayout', 'Screen', 'New Default Screen')#, position=0) ''' Create a new "Display" SubSection inside all the Screen sections ''' - a.makeSubSection('Screen', 'Display')#, position=0) + a.make_subsection('Screen', 'Display')#, position=0) ''' Remove a "Display" SubSection inside all the Screen sections ''' - #a.removeSubSection('Screen', 'Display')#, position=0) + #a.remove_subsection('Screen', 'Display')#, position=0) ''' Add an option to the Display subsection of the 1st Screen section ''' - a.addSubOption('Screen', 'Display', 'Depth', value='24', position=0, prefix='') - a.addSubOption('Screen', 'Display', 'Virtual', value='1600 1200', position=0) - a.addSubOption('Screen', 'Display', 'Name', value='Whatever', optiontype='Option', position=None) + a.add_suboption('Screen', 'Display', 'Depth', value='24', position=0, prefix='') + a.add_suboption('Screen', 'Display', 'Virtual', value='1600 1200', position=0) + a.add_suboption('Screen', 'Display', 'Name', value='Whatever', option_type='Option', position=None) ''' Remove options from the Display subsection of all or of the 1st Screen section ''' - a.removeSubOption('Screen', 'Display', 'Depth') - a.removeSubOption('Screen', 'Martin', 'Virtual', position=0) + a.remove_suboption('Screen', 'Display', 'Depth') + a.remove_suboption('Screen', 'Martin', 'Virtual', position=0) ''' Get the identifier of the 1st Device section ''' - print a.getValue('Device', 'Identifier', 0) - #print a.getValue('SubSection', 'Name', position=0, identifier='Display', sect='Screen') + print(a.get_value('Device', 'Identifier', 0)) + #print a.get_value('SubSection', 'Name', position=0, identifier='Display', sect='Screen') ''' Set the driver of the 1st Device section ''' - a.setDriver('Device', 'fbdev', 0) + a.set_driver('Device', 'fbdev', 0) ''' Get the driver of the 1st Device section ''' - print a.getDriver('Device', 0) + print(a.get_driver('Device', 0)) - a.makeSection('Screen', 'New Screen') - a.makeSection('Screen', 'New Screen')#this new section won't be created + a.make_section('Screen', 'New Screen') + a.make_section('Screen', 'New Screen')#this new section won't be created a.setDefaultDepth(24, 0) - print a.getDefaultDepth(0) + print(a.getDefaultDepth(0)) ''' Create a new device section add a new option to it and make a reference to it in the Screen section ''' - dev = a.makeSection('Device', 'My Device') - a.addOption('Device', 'BusID', 'PCI:1:0:0', position=dev) - a.addReference('Screen', 'Device', 'My Device', position=0) + dev = a.make_section('Device', 'My Device') + a.add_option('Device', 'BusID', 'PCI:1:0:0', position=dev) + a.add_reference('Screen', 'Device', 'My Device', position=0) - a.addReference('Device', 'Screen', 4, position=0) - print a.getReferences('Screen', 0, reflist=['Device']) + a.add_reference('Device', 'Screen', 4, position=0) + print(a.get_references('Screen', 0, reflist=['Device'])) a.enableComposite() a.addArgbGlxVisuals(0) - print 'Virtual', a.getValue('SubSection', 'Virtual', position=0, identifier='Display', sect='Screen') - print 'Modes', a.getValue('SubSection', 'Modes', position=0, identifier='Display', sect='Screen') + print('Virtual', a.get_value('SubSection', 'Virtual', position=0, identifier='Display', sect='Screen')) + print('Modes', a.get_value('SubSection', 'Modes', position=0, identifier='Display', sect='Screen')) ''' Get the identifier of the first Device section ''' - print 'ID of the 1st Device Section =', a.getIdentifier('Device', 0) + print('ID of the 1st Device Section =', a.get_identifier('Device', 0)) ''' Get the position of the Device section identified as 'Configured Video Device' ''' try: - print 'Position of "Configured Video Device" =', a.getPosition('Device', 'Configured Video Device') - except IdentifierException, e: - print e + print('Position of "Configured Video Device" =', a.get_position('Device', 'Configured Video Device')) + except IdentifierException as e: + print(e) ''' See if a section exists ''' - print 'Section Device "Configured Video Device" exists =', a.isSection('Device', 'Configured Video Device') - print 'Section Device "Whatever" exists =', a.isSection('Device', 'Whatever') + print('Section Device "Configured Video Device" exists =', a.is_section('Device', 'Configured Video Device')) + print('Section Device "Whatever" exists =', a.is_section('Device', 'Whatever')) ''' Create a new Device section and print the list of identifiers so as to see that the new identifier and position are included in identifiers ''' - a.makeSection('Device', identifier='New Graphics Card') - a.makeSection('Screen', identifier='New Screeeeeeeeeen') - print '\nIdentifiers after creating a new device section', a.identifiers - - print '\nCreate Broken Screen section' - pos = a.makeSection('Screen', identifier='Broken Screen Section') - print '\nAdding References' - a.addReference('Screen', 'Monitor', 'Broken Monitor Section', position=pos) - a.addReference('Screen', 'Device', 'Broken Device Section', position=pos) + a.make_section('Device', identifier='New Graphics Card') + a.make_section('Screen', identifier='New Screeeeeeeeeen') + print('\nIdentifiers after creating a new device section', a.identifiers) + + print('\nCreate Broken Screen section') + pos = a.make_section('Screen', identifier='Broken Screen Section') + print('\nAdding References') + a.add_reference('Screen', 'Monitor', 'Broken Monitor Section', position=pos) + a.add_reference('Screen', 'Device', 'Broken Device Section', position=pos) ''' Try to fix section with broken references ''' - a.checkNFixSection('Screen', identifier='Broken Screen Section') + a.fix_broken_references() ''' Write the changes to the destination file ''' - a.writeFile(destination) + a.write(destination) if __name__ == '__main__': main() diff -Nru x-kit-0.4.2.3build1/examples/accessories.py x-kit-0.5.0/examples/accessories.py --- x-kit-0.4.2.3build1/examples/accessories.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/examples/accessories.py 2012-06-05 10:03:55.000000000 +0000 @@ -17,8 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -from XKit import xutils -from XKit.xutils import * +from xkit import xutils +from xkit.xutils import * class Accessories(XUtils): def __init__(self, source=None): @@ -26,68 +26,68 @@ def printReferences(self): self.referencesTree = {} - for section in ['Screen', 'ServerLayout']:#self.requireid: + for section in ['Screen', 'ServerLayout']: self.referencesTree[section] = {} for sect in self.globaldict[section]: - self.referencesTree[section][sect] = self.getReferences(section, sect) - print sect, 'Section - references:', self.getReferences(section, sect) + self.referencesTree[section][sect] = self.get_references(section, sect) + print(sect, 'Section - references:', self.get_references(section, sect)) for section in self.referencesTree: for elem in self.referencesTree[section]: #print 'ELEMENT', elem for refsect in self.referencesTree[section][elem]: if len(self.referencesTree[section][elem][refsect]) > 0: - print '\n', section, 'Section', '"' + self.getIdentifier(section, elem) + '"', 'depends on', \ + print('\n', section, 'Section', '"' + self.get_identifier(section, elem) + '"', 'depends on', \ 'Section', refsect, ':\n', \ - self.referencesTree[section][elem][refsect] + self.referencesTree[section][elem][refsect]) for ref in self.referencesTree[section][elem][refsect]: for sect in self.sections: if sect.lower() == refsect.strip().lower(): refsect = sect - if not self.isSection(refsect, ref): - print '*****WARNING:', refsect, 'Section', ref, 'does not exist!*****' + if not self.is_section(refsect, ref): + print('*****WARNING:', refsect, 'Section', ref, 'does not exist!*****') def printDuplicateOptions(self): ''' Print the duplicate options ''' - a = self.checkDuplicateOptions() + a = self.check_duplicate_options() if len(a) > 0: - print '\nDuplicate Options:' + print('\nDuplicate Options:') for section in a: - print 'Duplicate Options in', section, 'Section:' + print('Duplicate Options in', section, 'Section:') for elem in a[section]: - print '\tSection No:', elem + print('\tSection No:', elem) for option in a[section][elem]: - print '\t\t', option + print('\t\t', option) else: - print 'No Duplicate Options Found' + print('No Duplicate Options Found') def printDuplicateSections(self): a = self.getDuplicateSections() - print '\nDuplicate Sections:' + print('\nDuplicate Sections:') for section in a: - print 'Duplicate', section, 'Sections:' + print('Duplicate', section, 'Sections:') for elem in a[section]: - print '\t', elem + print('\t', elem) def printSection(self, section): ''' Print the content of all the sections of a certain type ''' for elem in self.globaldict[section]: - print 'Section' + '"' + section + '"' - print ''.join(self.globaldict[section][elem]) + 'EndSection\n' + print('Section' + '"' + section + '"') + print(''.join(self.globaldict[section][elem]) + 'EndSection\n') def getDefaultDepth(self, position): ''' Get the Defaultdepth in an instance of the Screen section. If none is found, return False. - For further information see getValue + For further information see get_value ''' option = 'DefaultDepth' section = 'Screen' - return self.getValue(section, option, position) + return self.get_value(section, option, position) def setDefaultDepth(self, depth, position): ''' @@ -95,7 +95,7 @@ ''' section = 'Screen' option = 'DefaultDepth' - self.addOption(section, option, depth, position=position, prefix='') + self.add_option(section, option, depth, position=position, prefix='') ''' It would make a lot sense to move the following methods to another file @@ -104,23 +104,23 @@ def addArgbGlxVisuals(self, position): section = 'Screen' option = 'AddARGBGLXVisuals' - self.addOption(section, option, 'True', optiontype='Option', position=position) + self.add_option(section, option, 'True', option_type='Option', position=position) def removeArgbGlxVisuals(self, position): section = 'Screen' option = 'AddARGBGLXVisuals' - self.addOption(section, option, position=position) + self.add_option(section, option, position=position) def enableComposite(self, position=0): section = 'Extensions' option = 'Composite' if len(self.globaldict[section]) == 0: - position = self.makeSection(section) - self.addOption(section, option, 'Enable', optiontype='Option', position=position) + position = self.make_section(section) + self.add_option(section, option, 'Enable', option_type='Option', position=position) def disableComposite(self, position=0): section = 'Extensions' option = 'Composite' if len(self.globaldict[section]) == 0: - position = self.makeSection(section) - self.addOption(section, option, 'Disable', optiontype='Option', position=position) + position = self.make_section(section) + self.add_option(section, option, 'Disable', option_type='Option', position=position) diff -Nru x-kit-0.4.2.3build1/.git/COMMIT_EDITMSG x-kit-0.5.0/.git/COMMIT_EDITMSG --- x-kit-0.4.2.3build1/.git/COMMIT_EDITMSG 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/COMMIT_EDITMSG 2012-06-05 11:01:04.000000000 +0000 @@ -0,0 +1 @@ +Release 0.5.0 diff -Nru x-kit-0.4.2.3build1/.git/config x-kit-0.5.0/.git/config --- x-kit-0.4.2.3build1/.git/config 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/config 2011-05-15 15:34:14.000000000 +0000 @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = git@github.com:tseliot/XKit.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff -Nru x-kit-0.4.2.3build1/.git/description x-kit-0.5.0/.git/description --- x-kit-0.4.2.3build1/.git/description 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/description 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff -Nru x-kit-0.4.2.3build1/.git/FETCH_HEAD x-kit-0.5.0/.git/FETCH_HEAD --- x-kit-0.4.2.3build1/.git/FETCH_HEAD 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/FETCH_HEAD 2012-06-05 10:16:38.000000000 +0000 @@ -0,0 +1 @@ +dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 branch 'debian-pep8' of github.com:tseliot/XKit diff -Nru x-kit-0.4.2.3build1/.git/HEAD x-kit-0.5.0/.git/HEAD --- x-kit-0.4.2.3build1/.git/HEAD 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/HEAD 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1 @@ +ref: refs/heads/debian-pep8 diff -Nru x-kit-0.4.2.3build1/.git/hooks/applypatch-msg.sample x-kit-0.5.0/.git/hooks/applypatch-msg.sample --- x-kit-0.4.2.3build1/.git/hooks/applypatch-msg.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/applypatch-msg.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +test -x "$GIT_DIR/hooks/commit-msg" && + exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} +: diff -Nru x-kit-0.4.2.3build1/.git/hooks/commit-msg.sample x-kit-0.5.0/.git/hooks/commit-msg.sample --- x-kit-0.4.2.3build1/.git/hooks/commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/commit-msg.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff -Nru x-kit-0.4.2.3build1/.git/hooks/post-commit.sample x-kit-0.5.0/.git/hooks/post-commit.sample --- x-kit-0.4.2.3build1/.git/hooks/post-commit.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/post-commit.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script that is called after a successful +# commit is made. +# +# To enable this hook, rename this file to "post-commit". + +: Nothing diff -Nru x-kit-0.4.2.3build1/.git/hooks/post-receive.sample x-kit-0.5.0/.git/hooks/post-receive.sample --- x-kit-0.4.2.3build1/.git/hooks/post-receive.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/post-receive.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script for the "post-receive" event. +# +# The "post-receive" script is run after receive-pack has accepted a pack +# and the repository has been updated. It is passed arguments in through +# stdin in the form +# +# For example: +# aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master +# +# see contrib/hooks/ for a sample, or uncomment the next line and +# rename the file to "post-receive". + +#. /usr/share/doc/git-core/contrib/hooks/post-receive-email diff -Nru x-kit-0.4.2.3build1/.git/hooks/post-update.sample x-kit-0.5.0/.git/hooks/post-update.sample --- x-kit-0.4.2.3build1/.git/hooks/post-update.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/post-update.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff -Nru x-kit-0.4.2.3build1/.git/hooks/pre-applypatch.sample x-kit-0.5.0/.git/hooks/pre-applypatch.sample --- x-kit-0.4.2.3build1/.git/hooks/pre-applypatch.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/pre-applypatch.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} +: diff -Nru x-kit-0.4.2.3build1/.git/hooks/pre-commit.sample x-kit-0.5.0/.git/hooks/pre-commit.sample --- x-kit-0.4.2.3build1/.git/hooks/pre-commit.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/pre-commit.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,46 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + +# If you want to allow non-ascii filenames set this variable to true. +allownonascii=$(git config hooks.allownonascii) + +# Cross platform projects tend to avoid non-ascii filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test "$(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0')" +then + echo "Error: Attempt to add a non-ascii file name." + echo + echo "This can cause problems if you want to work" + echo "with people on other platforms." + echo + echo "To be portable it is advisable to rename the file ..." + echo + echo "If you know what you are doing you can disable this" + echo "check using:" + echo + echo " git config hooks.allownonascii true" + echo + exit 1 +fi + +exec git diff-index --check --cached $against -- diff -Nru x-kit-0.4.2.3build1/.git/hooks/prepare-commit-msg.sample x-kit-0.5.0/.git/hooks/prepare-commit-msg.sample --- x-kit-0.4.2.3build1/.git/hooks/prepare-commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/prepare-commit-msg.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,36 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first comments out the +# "Conflicts:" part of a merge commit. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +case "$2,$3" in + merge,) + /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; + +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$1" ;; + + *) ;; +esac + +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" diff -Nru x-kit-0.4.2.3build1/.git/hooks/pre-rebase.sample x-kit-0.5.0/.git/hooks/pre-rebase.sample --- x-kit-0.4.2.3build1/.git/hooks/pre-rebase.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/pre-rebase.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,172 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up-to-date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +exit 0 + +<<\DOC_END +################################################################ + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff -Nru x-kit-0.4.2.3build1/.git/hooks/update.sample x-kit-0.5.0/.git/hooks/update.sample --- x-kit-0.4.2.3build1/.git/hooks/update.sample 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/hooks/update.sample 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,128 @@ +#!/bin/sh +# +# An example hook script to blocks unannotated tags from entering. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --bool hooks.allowunannotated) +allowdeletebranch=$(git config --bool hooks.allowdeletebranch) +denycreatebranch=$(git config --bool hooks.denycreatebranch) +allowdeletetag=$(git config --bool hooks.allowdeletetag) +allowmodifytag=$(git config --bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero="0000000000000000000000000000000000000000" +if [ "$newrev" = "$zero" ]; then + newrev_type=delete +else + newrev_type=$(git cat-file -t $newrev) +fi + +case "$refname","$newrev_type" in + refs/tags/*,commit) + # un-annotated tag + short_refname=${refname##refs/tags/} + if [ "$allowunannotated" != "true" ]; then + echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/index and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/index differ diff -Nru x-kit-0.4.2.3build1/.git/info/exclude x-kit-0.5.0/.git/info/exclude --- x-kit-0.4.2.3build1/.git/info/exclude 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/info/exclude 2011-05-15 14:54:02.000000000 +0000 @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff -Nru x-kit-0.4.2.3build1/.git/logs/HEAD x-kit-0.5.0/.git/logs/HEAD --- x-kit-0.4.2.3build1/.git/logs/HEAD 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/HEAD 2012-06-05 11:01:04.000000000 +0000 @@ -0,0 +1,150 @@ +0000000000000000000000000000000000000000 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305471340 +0200 commit (initial): Initial commit +4a7550be20ebec834e66937cf817ec4f6ca62676 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305471359 +0200 checkout: moving from master to debian +4a7550be20ebec834e66937cf817ec4f6ca62676 d2d12679a4fa91edf724d2af1e81d654cb2eb331 Alberto Milone 1305471382 +0200 commit: Add debian directory +d2d12679a4fa91edf724d2af1e81d654cb2eb331 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305473614 +0200 checkout: moving from debian to master +4a7550be20ebec834e66937cf817ec4f6ca62676 2b1850063f9f0473df62194bc2872cedc360ac40 Alberto Milone 1305627081 +0200 commit: Port xorgparser.py to py3 with 2to3 +2b1850063f9f0473df62194bc2872cedc360ac40 ece2cda6ad4a39827073e19d0d25e7c55937f194 Alberto Milone 1305627714 +0200 commit: Port xutils.py to py3 with 2to3 +ece2cda6ad4a39827073e19d0d25e7c55937f194 5b68f579255ee939c84d78cb565225590b71da30 Alberto Milone 1305627958 +0200 commit: Port 0-test.py to py3 with 2to3 +5b68f579255ee939c84d78cb565225590b71da30 b255f508d52537a8916d70e9e83deba4fb2d3994 Alberto Milone 1305627981 +0200 commit: Port 1-test.py to py3 with 2to3 +b255f508d52537a8916d70e9e83deba4fb2d3994 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628014 +0200 commit: Port run to py3 with 2to3 +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628503 +0200 checkout: moving from master to raw +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628520 +0200 checkout: moving from raw to master +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 2b1850063f9f0473df62194bc2872cedc360ac40 Alberto Milone 1305628543 +0200 2b1850063f9f0473df62194bc2872cedc360ac40: updating HEAD +2b1850063f9f0473df62194bc2872cedc360ac40 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628751 +0200 merge raw: Fast-forward +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 a2b4d3f760014160d7a49abd6daa76f38fcf4ec8 Alberto Milone 1305629357 +0200 commit: Port 0-example.py to py3 with 2to3 +a2b4d3f760014160d7a49abd6daa76f38fcf4ec8 72973368ace4b27b3f22073e5a4d34c0b317970c Alberto Milone 1305629404 +0200 commit: Port 1-example.py to py3 with 2to3 +72973368ace4b27b3f22073e5a4d34c0b317970c 6d61c4e02c6c6432010b39e73ec045d55301ba1b Alberto Milone 1305629462 +0200 commit: Port accessories.py to py3 with 2to3 +6d61c4e02c6c6432010b39e73ec045d55301ba1b d2d12679a4fa91edf724d2af1e81d654cb2eb331 Alberto Milone 1305629622 +0200 checkout: moving from master to debian +d2d12679a4fa91edf724d2af1e81d654cb2eb331 6d61c4e02c6c6432010b39e73ec045d55301ba1b Alberto Milone 1305629658 +0200 checkout: moving from debian to master +6d61c4e02c6c6432010b39e73ec045d55301ba1b 819698adaeb0a8a2593cd4fb57e6a672158c0684 Alberto Milone 1305630255 +0200 commit: Do not attempt relative import in non-package scripts +819698adaeb0a8a2593cd4fb57e6a672158c0684 0b9591b3367510278936eb1c212e120f609f729b Alberto Milone 1305630619 +0200 commit: Encode the string when writing to a buffer +0b9591b3367510278936eb1c212e120f609f729b 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631281 +0200 commit: Set run to use python 3 +6182f65e1a32ea826366eaaa20517b400c4a4889 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631301 +0200 checkout: moving from master to py3 +6182f65e1a32ea826366eaaa20517b400c4a4889 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631307 +0200 checkout: moving from py3 to master +6182f65e1a32ea826366eaaa20517b400c4a4889 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631320 +0200 checkout: moving from master to py3 +6182f65e1a32ea826366eaaa20517b400c4a4889 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631329 +0200 checkout: moving from py3 to master +6182f65e1a32ea826366eaaa20517b400c4a4889 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305631347 +0200 4a7550be20ebec834e66937cf817ec4f6ca62676: updating HEAD +4a7550be20ebec834e66937cf817ec4f6ca62676 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631356 +0200 checkout: moving from master to py3 +6182f65e1a32ea826366eaaa20517b400c4a4889 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305647100 +0200 checkout: moving from py3 to pep8 +6182f65e1a32ea826366eaaa20517b400c4a4889 06c2eb3e890c31116a0184eabe125e139fea384c Alberto Milone 1305650239 +0200 commit: Rename private methods of Parser +06c2eb3e890c31116a0184eabe125e139fea384c 53918adc90d147375d062c61b389e327fc6c84ea Alberto Milone 1306150099 +0200 commit: Rename module so that is lowercase +53918adc90d147375d062c61b389e327fc6c84ea 42505b0f1bf2db79b6cea0abbaad28bb6f03042f Alberto Milone 1306150170 +0200 commit (amend): Rename module so that is lowercase +42505b0f1bf2db79b6cea0abbaad28bb6f03042f 417cc37d33e4daf5397a5387ec386a199682e95c Alberto Milone 1306156431 +0200 commit: Adapt test suite and examples to module name change +417cc37d33e4daf5397a5387ec386a199682e95c c5b27aa7532bc046258bda75c124389e5d05ca70 Alberto Milone 1306159609 +0200 commit: Make xkit.Parser a new-style class +c5b27aa7532bc046258bda75c124389e5d05ca70 3e7d3a8f2c870d60da48e0886ca5a9e4d6a46a51 Alberto Milone 1306160548 +0200 commit: Make getIds() private and rename it as __fill_identifiers() +3e7d3a8f2c870d60da48e0886ca5a9e4d6a46a51 4a3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 Alberto Milone 1306161003 +0200 commit (amend): Make getIds() private and rename it as __fill_identifiers() +4a3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 fc52853c00884dce4aec2968ce39a5edde3674fe Alberto Milone 1306166897 +0200 commit: Add "InputClass" to self.requireid +fc52853c00884dce4aec2968ce39a5edde3674fe 98c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 Alberto Milone 1306172342 +0200 commit: Clean up Parser.__check_sanity +98c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 5396927cda5ee5453d36ea9dfcd53970408e9b59 Alberto Milone 1306241826 +0200 commit (amend): Clean up Parser.__check_sanity +5396927cda5ee5453d36ea9dfcd53970408e9b59 321feb42211a49d6c4f0af80c305907cee0b9745 Alberto Milone 1306243624 +0200 commit (amend): Clean up Parser.__check_sanity +321feb42211a49d6c4f0af80c305907cee0b9745 cab6e4d0622b5f4c415970782bf617ff95d1b5a1 Alberto Milone 1306243717 +0200 commit: Add and expose self.valid_sections +cab6e4d0622b5f4c415970782bf617ff95d1b5a1 52b36da89f2f0d5946f7ff5586844e7537fe7166 Alberto Milone 1306248838 +0200 commit: Reorganise the docstrings of the ctor of Parser +52b36da89f2f0d5946f7ff5586844e7537fe7166 3faee68867799fff2f6584093274cb0ae21a09ef Alberto Milone 1306249067 +0200 commit (amend): Reorganise the docstrings of the ctor of Parser +3faee68867799fff2f6584093274cb0ae21a09ef fedd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 Alberto Milone 1306249509 +0200 commit: No need to duplicate subsection and commentsection +fedd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 17ee0170dcb985c80a4f2ae4163c92f2016cd3a7 Alberto Milone 1306250650 +0200 commit: Rename requireid as require_id +17ee0170dcb985c80a4f2ae4163c92f2016cd3a7 96a302a0b82749b39d69d5681597c7e799dccdec Alberto Milone 1306752912 +0200 commit: Make sure that internal functions use _ instead of __ +96a302a0b82749b39d69d5681597c7e799dccdec 37966446adf77bf5b4a1a26671a8a4655e2ec065 Alberto Milone 1306753673 +0200 commit: Rename validateOptions method and make it internal +37966446adf77bf5b4a1a26671a8a4655e2ec065 c7d3537338dd6f83826cbe1a920643fa6c3df1cc Alberto Milone 1306753919 +0200 commit: Rename getDuplicateSections +c7d3537338dd6f83826cbe1a920643fa6c3df1cc a502fd10144e2c8cce2f3940ac5c1ef48882b67c Alberto Milone 1306762878 +0200 commit: Rename checkDuplicateOptions method +a502fd10144e2c8cce2f3940ac5c1ef48882b67c d1423136fb983d5c5923d9f9bd642afb100607f7 Alberto Milone 1306763115 +0200 commit: Clean up names in _validate_options +d1423136fb983d5c5923d9f9bd642afb100607f7 b0d782d02275f6f5cda85acfe153013d2b3659cb Alberto Milone 1306763969 +0200 commit: Rename addOption and its optiontype argument +b0d782d02275f6f5cda85acfe153013d2b3659cb 5d6753fb1c3da6d1122e2a2215baa0205911f4df Alberto Milone 1306764630 +0200 commit: Stylistic fixes to add_option +5d6753fb1c3da6d1122e2a2215baa0205911f4df 1e3c9bf9550d690cd42d4277adcb5d400dfb810f Alberto Milone 1306764707 +0200 commit (amend): Stylistic fixes to add_option +1e3c9bf9550d690cd42d4277adcb5d400dfb810f e32643cc4b5929db412518a1078b56bb469df287 Alberto Milone 1306766474 +0200 commit: Rename removeOption +e32643cc4b5929db412518a1078b56bb469df287 e5ff7baea339eba7fcd3ab2a7f2c1533541c87fe Alberto Milone 1306766634 +0200 commit: Further name cleanup +e5ff7baea339eba7fcd3ab2a7f2c1533541c87fe 03f7944e2a31c8bc6af922ffe1dc0e49693be42e Alberto Milone 1306768220 +0200 commit: Rename makeSection +03f7944e2a31c8bc6af922ffe1dc0e49693be42e b0c491af4f92227ad4a99d487b4e80604f8a7c00 Alberto Milone 1306771309 +0200 commit: Clean up make_section +b0c491af4f92227ad4a99d487b4e80604f8a7c00 17c0aafafcc6c363065cabc96b32550ab3986ed0 Alberto Milone 1306840328 +0200 commit: Use _gdict internally and expose globaldict +17c0aafafcc6c363065cabc96b32550ab3986ed0 9117c4339a41d26e7811780e7eeb600b07945f75 Alberto Milone 1306840570 +0200 commit: Rename removeSection +9117c4339a41d26e7811780e7eeb600b07945f75 e599e52dae6472112314f729a2492facadd6ef91 Alberto Milone 1306845291 +0200 commit: Rename addReference +e599e52dae6472112314f729a2492facadd6ef91 d175d3bffece3a0c4202e98bf7dbcfaa82d84ec7 Alberto Milone 1306845440 +0200 commit: Rename removeReference +d175d3bffece3a0c4202e98bf7dbcfaa82d84ec7 0b294413f603210f22365373ed57d9e0990107d8 Alberto Milone 1306845646 +0200 commit: Rename getReferences +0b294413f603210f22365373ed57d9e0990107d8 47948a6e66556c6eb268528820f5de8cf23385f0 Alberto Milone 1306845716 +0200 commit: Further name cleanup in _check_syntax +47948a6e66556c6eb268528820f5de8cf23385f0 2feb8007f7bda155d5ea69e7f14748ad10075040 Alberto Milone 1306846060 +0200 commit (amend): Further name cleanup in _check_syntax +2feb8007f7bda155d5ea69e7f14748ad10075040 a620995aa179de2d650fe5c8ebc852b9cfc90db3 Alberto Milone 1306846311 +0200 commit: Names cleanup in get_references +a620995aa179de2d650fe5c8ebc852b9cfc90db3 3490e1db9582640ab11776211011c53661154078 Alberto Milone 1306847277 +0200 commit: Clean up remove_reference +3490e1db9582640ab11776211011c53661154078 99426547e31384fc76ddbecc8a727a418c963251 Alberto Milone 1306847415 +0200 commit: Clean up get_references +99426547e31384fc76ddbecc8a727a418c963251 18d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 Alberto Milone 1306848332 +0200 commit: Rename makeSubSection +18d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 c88aee3ab06002f725fd5ffea1114b7721b170eb Alberto Milone 1306849619 +0200 commit: Clean up make_subsection +c88aee3ab06002f725fd5ffea1114b7721b170eb 4585c9ed3ca1e5d84c72483fece8386dd7d3e1d2 Alberto Milone 1306849720 +0200 commit: Rename removeSubSection +4585c9ed3ca1e5d84c72483fece8386dd7d3e1d2 984c5c0a389a5c2581d76298d804c56c0447f36a Alberto Milone 1306850298 +0200 commit: Clean up make_subsection +984c5c0a389a5c2581d76298d804c56c0447f36a f25eff463b8f1bff113f38e17bb3f3517b94635f Alberto Milone 1306850417 +0200 commit: Clean up remove_subsection +f25eff463b8f1bff113f38e17bb3f3517b94635f 2178c46343f971a7531fe6dc3bbffb1aebd1cfc2 Alberto Milone 1306850579 +0200 commit: Rename addSubOption +2178c46343f971a7531fe6dc3bbffb1aebd1cfc2 ed4464a65e49ac8797dbbc454df46cd285351324 Alberto Milone 1306851169 +0200 commit: Clean up add_suboption +ed4464a65e49ac8797dbbc454df46cd285351324 b500621101593659206a358b80a121e13cd8daf8 Alberto Milone 1306851373 +0200 commit (amend): Clean up add_suboption +b500621101593659206a358b80a121e13cd8daf8 b76a902c6cd4e30e046dfd9676794bc36fdfe43a Alberto Milone 1306851718 +0200 commit: Clean up _get_suboptions_to_blacklist +b76a902c6cd4e30e046dfd9676794bc36fdfe43a acf14b63bf0547995fc9d11471d7aa972738d695 Alberto Milone 1306851853 +0200 commit: Rename removeSubOption +acf14b63bf0547995fc9d11471d7aa972738d695 ff8e6a43ad1293e4ce0594001f455e09ae10133f Alberto Milone 1306851925 +0200 commit: Clean up remove_suboption +ff8e6a43ad1293e4ce0594001f455e09ae10133f 290ced36b22fc7a27593311bcf88f0d02618ff25 Alberto Milone 1306852132 +0200 commit: Rename getIdentifier +290ced36b22fc7a27593311bcf88f0d02618ff25 15fb2a2860683a2ccbccca73949898402df6b359 Alberto Milone 1306852251 +0200 commit: Clean up get_identifier +15fb2a2860683a2ccbccca73949898402df6b359 9ca3ce6e8602875c95069fb65c0fa02fcf8ee10e Alberto Milone 1306852593 +0200 commit: Clean up _clean_option +9ca3ce6e8602875c95069fb65c0fa02fcf8ee10e 44bd7a28c7e4fb3cadf387b08738b1365b7eef01 Alberto Milone 1306853061 +0200 commit: Rename getValue +44bd7a28c7e4fb3cadf387b08738b1365b7eef01 a00055e3fe2f3a1ccc092f90f56155c9d7e9984e Alberto Milone 1306853987 +0200 commit: Clean up get_value +a00055e3fe2f3a1ccc092f90f56155c9d7e9984e 59f2b879ecca4d7493d5af778e0eca46b8771ace Alberto Milone 1306856271 +0200 commit: Rename isSection +59f2b879ecca4d7493d5af778e0eca46b8771ace 54fc34ea18c5fc1a9e28d1a62230a6665f82b327 Alberto Milone 1306856409 +0200 commit: Rename getPosition +54fc34ea18c5fc1a9e28d1a62230a6665f82b327 4b4198d9779aa3855cd9b684ad5d4ef111a9526b Alberto Milone 1306856468 +0200 commit: Clean up get_position +4b4198d9779aa3855cd9b684ad5d4ef111a9526b e9d8ea08b84879e69b7a357ff6be7723973455f3 Alberto Milone 1306856594 +0200 commit: Rename getBrokenReferences +e9d8ea08b84879e69b7a357ff6be7723973455f3 3e00916e5a698671bc74f6b45b666b98e45aeb8f Alberto Milone 1306856884 +0200 commit: Clean up get_broken_references +3e00916e5a698671bc74f6b45b666b98e45aeb8f 804973b299758b2afe707b90ff5c0bba63b4a6c6 Alberto Milone 1306857001 +0200 commit: Rename getDefaultServerLayout +804973b299758b2afe707b90ff5c0bba63b4a6c6 80d8c7e137cfc024d687f0e81c0ce8b358117cef Alberto Milone 1306925918 +0200 commit: Add full stop to error message +80d8c7e137cfc024d687f0e81c0ce8b358117cef 321f964efc333c6d47909fd390072e1a6c50ec32 Alberto Milone 1306926029 +0200 commit: Minor formatting fix in _clean_option +321f964efc333c6d47909fd390072e1a6c50ec32 c8cc841b0633273e4d4d3634ccf0695296b40c9b Alberto Milone 1306926107 +0200 commit: Clean up get_value +c8cc841b0633273e4d4d3634ccf0695296b40c9b 7add2fb9cb163f173a11bde48716b53cef1e72ee Alberto Milone 1306926367 +0200 commit: Clean up get_default_serverlayout +7add2fb9cb163f173a11bde48716b53cef1e72ee 71ff2f60a02c48f35d8e9349d299105a29db1b83 Alberto Milone 1306928025 +0200 commit: Clean up _merge_subsections +71ff2f60a02c48f35d8e9349d299105a29db1b83 64a1a1f646c33506302cbc848a2f701b5bfef7d7 Alberto Milone 1306936147 +0200 commit: Rename writeFile as write +64a1a1f646c33506302cbc848a2f701b5bfef7d7 3e98bbe331f52a5dccffee6842fd8c21ae9df2f6 Alberto Milone 1306938434 +0200 commit: Clean up _merge_subsections, _merge_commented_options, write +3e98bbe331f52a5dccffee6842fd8c21ae9df2f6 75b4dc27f42b3d77fa71d9b9b046a604d53e308a Alberto Milone 1306940200 +0200 commit: Add test_write4 and make sure that more tests actually write the log +75b4dc27f42b3d77fa71d9b9b046a604d53e308a 09c39551a785d3c5bab7bb3c02b596ac710dbd00 Alberto Milone 1306941509 +0200 commit: Rename getSubSections +09c39551a785d3c5bab7bb3c02b596ac710dbd00 6ede6e13c91378a0de9ed97db2b35c144a338357 Alberto Milone 1306942043 +0200 commit: Clean up get_subsections +6ede6e13c91378a0de9ed97db2b35c144a338357 77fa22ba4621feb623ea923f3f9f9a3592bc03d9 Alberto Milone 1306942178 +0200 commit: Clean up _permanent_merge_subsections +77fa22ba4621feb623ea923f3f9f9a3592bc03d9 3d1833f63ff027b5e996c073f157376fe379ef78 Alberto Milone 1306942401 +0200 commit: Clean up _get_comments +3d1833f63ff027b5e996c073f157376fe379ef78 9789a6c300ab6805d7a5c18132288e3ad0353437 Alberto Milone 1306945701 +0200 commit: _merge_subsections_with_comments +9789a6c300ab6805d7a5c18132288e3ad0353437 3f9fd43cfcfa63ce5b0ea2520e59df7fda4487bc Alberto Milone 1307366104 +0200 commit: Clean up _remove_comment_entries +3f9fd43cfcfa63ce5b0ea2520e59df7fda4487bc e895fb65a751e43ebedc2e405bbbcfcc58365cbe Alberto Milone 1307366374 +0200 commit: Rename commentOutSection +e895fb65a751e43ebedc2e405bbbcfcc58365cbe bff377fcc50fa86151910bf501e4b97339bdee0d Alberto Milone 1307366693 +0200 commit: Clean up comment_out_section +bff377fcc50fa86151910bf501e4b97339bdee0d 433b6c4763ddb2db4f172b65317277c0bda60694 Alberto Milone 1307366732 +0200 commit (amend): Clean up comment_out_section +433b6c4763ddb2db4f172b65317277c0bda60694 6223882466340b05761f9a24019b33ae3c1d4605 Alberto Milone 1307369195 +0200 commit: Rename commentOutSubSection +6223882466340b05761f9a24019b33ae3c1d4605 ff4323a0ac20587e6c04106a33cae0655aa5721f Alberto Milone 1307369907 +0200 commit: Clean up comment_out_subsection +ff4323a0ac20587e6c04106a33cae0655aa5721f 65802f44d304918fd91622f471b937443e9692da Alberto Milone 1307370250 +0200 commit: Rename commentOutOption +65802f44d304918fd91622f471b937443e9692da 1154ff2f85257c94c98ae21549178867abc31cc8 Alberto Milone 1307371451 +0200 commit: Clean up comment_out_option +1154ff2f85257c94c98ae21549178867abc31cc8 09295b285489fdc5600fc774d653431a529b1dc6 Alberto Milone 1307371629 +0200 commit: Rename commentOutSubOption +09295b285489fdc5600fc774d653431a529b1dc6 d47e7700cd6afd53cbd9710aa633fd03847dbb76 Alberto Milone 1307372381 +0200 commit: Clean up comment_out_suboption +d47e7700cd6afd53cbd9710aa633fd03847dbb76 684e328111549aa77f59a73b1b60c2ca58b2f722 Alberto Milone 1307372703 +0200 commit: Clean up _merge_commented_options +684e328111549aa77f59a73b1b60c2ca58b2f722 c49ff5936d904c2e69523956a7cbaeede2d3f60a Alberto Milone 1307372879 +0200 commit (amend): Clean up _merge_commented_options +c49ff5936d904c2e69523956a7cbaeede2d3f60a ace5eee7670594cbe40845dbb663c1ff074fbfe2 Alberto Milone 1307373972 +0200 commit: Minor stylistic changes +ace5eee7670594cbe40845dbb663c1ff074fbfe2 dd71e8d31d2d30d047e719a7e7995c3d52bd6e22 Alberto Milone 1307441627 +0200 commit: Rename checkNFixSection +dd71e8d31d2d30d047e719a7e7995c3d52bd6e22 472773b597c749e7a949079264f3d9d5afba2888 Alberto Milone 1307444088 +0200 commit: Clean up fix_broken_references +472773b597c749e7a949079264f3d9d5afba2888 2a4cf6ba747373c0c41a0b0474fd4d89d1ec1bda Alberto Milone 1307444285 +0200 commit: Rename getDriver +2a4cf6ba747373c0c41a0b0474fd4d89d1ec1bda 496513561405569cd1d5f0a1c988b3c4b65a128f Alberto Milone 1307444388 +0200 commit: Clean up get_driver +496513561405569cd1d5f0a1c988b3c4b65a128f 746cc2ab88af4fa75631a701f3c297473960dfd4 Alberto Milone 1307444487 +0200 commit: Rename setDriver +746cc2ab88af4fa75631a701f3c297473960dfd4 d7c9e99b73ddea68a6c8a2121caad56d2b6f101c Alberto Milone 1307444523 +0200 commit: Remove blank line +d7c9e99b73ddea68a6c8a2121caad56d2b6f101c 0d92e1f31035a144d85a72dc578ef2e47982bdaa Alberto Milone 1307444661 +0200 commit: Clean up set_driver +0d92e1f31035a144d85a72dc578ef2e47982bdaa 94a0b45ff37a93e32abd18856d7cafa711efb704 Alberto Milone 1307445011 +0200 commit: Rename isDriverInSection +94a0b45ff37a93e32abd18856d7cafa711efb704 35cb141250b4b021cbcf5e4c98ea47889b23c867 Alberto Milone 1307445259 +0200 commit: Clean up section_has_driver and rename sectionsList +35cb141250b4b021cbcf5e4c98ea47889b23c867 f1e4cda6a1073ac4fb8e908f249583c6d046f382 Alberto Milone 1307445296 +0200 commit: Minor docstring change in get_driver +f1e4cda6a1073ac4fb8e908f249583c6d046f382 ded6be0b0eaf46aad2f5edee5565b7c988fda860 Alberto Milone 1307445892 +0200 commit: Rename getDevicesFromServerLayout +ded6be0b0eaf46aad2f5edee5565b7c988fda860 400cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 Alberto Milone 1307446010 +0200 commit (amend): Rename getDevicesFromServerLayout +400cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 1736fd6c3a7d38554c51e2bf11e97a0526eb83ec Alberto Milone 1307446650 +0200 commit: Clean up get_devices_in_serverlayout +1736fd6c3a7d38554c51e2bf11e97a0526eb83ec ac3ba9d770eff0e86ec1698b23266a9ff273ac7f Alberto Milone 1307446858 +0200 commit (amend): Clean up get_devices_in_serverlayout +ac3ba9d770eff0e86ec1698b23266a9ff273ac7f 762660125fb7d49a9b12bf50368ebad7b7538e11 Alberto Milone 1307451552 +0200 commit: Rename getDevicesInUse +762660125fb7d49a9b12bf50368ebad7b7538e11 b0a4a998ba2a82a4ea5bbb2d33464ad861863140 Alberto Milone 1307452152 +0200 commit: Clean up get_devices_in_use +b0a4a998ba2a82a4ea5bbb2d33464ad861863140 99d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 Alberto Milone 1307452590 +0200 commit: Rename isDriverEnabled +99d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 a4860b471a0d2937683972323008d6316d4d0188 Alberto Milone 1307452805 +0200 commit: Clean up is_driver_enabled +a4860b471a0d2937683972323008d6316d4d0188 8bcc3c73910ffd0c3f7d0c6b622586bec215eb29 Alberto Milone 1307453242 +0200 commit (amend): Clean up is_driver_enabled +8bcc3c73910ffd0c3f7d0c6b622586bec215eb29 6bacbed517ea5840de0cb82f0d58a7d10df18273 Alberto Milone 1307453475 +0200 commit: Rename getScreenDeviceRelationships +6bacbed517ea5840de0cb82f0d58a7d10df18273 5abf03f745d2a21f3705f12547a13957c697177b Alberto Milone 1307453534 +0200 commit: Clean up get_screen_device_relationships +5abf03f745d2a21f3705f12547a13957c697177b 6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca Alberto Milone 1307459346 +0200 commit: Temp tests/0-test.py clean up +6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1331204100 +0100 checkout: moving from pep8 to master +4a7550be20ebec834e66937cf817ec4f6ca62676 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1337601875 +0200 checkout: moving from master to py3 +6182f65e1a32ea826366eaaa20517b400c4a4889 6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca Alberto Milone 1337601898 +0200 checkout: moving from py3 to pep8 +6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca e885230b3b2978259770215fc25f5a3555ba60f0 Alberto Milone 1337602286 +0200 commit: 0-test.py: Avoid leaking temporary file handles +e885230b3b2978259770215fc25f5a3555ba60f0 fb991f4773676b9f0e4b22cca5a76f9b29aa0701 Alberto Milone 1337773218 +0200 commit: xkit/xorgparser.py: convert bytes to string before writing +fb991f4773676b9f0e4b22cca5a76f9b29aa0701 b3a059685a2e0c95a55b0cbe8be981affe134173 Alberto Milone 1337778622 +0200 commit: tests/0-test.py: improve the use of unittest +b3a059685a2e0c95a55b0cbe8be981affe134173 53d2fbd94d630309104e33f3dcd6d84d292265e5 Alberto Milone 1337778691 +0200 commit (amend): tests/0-test.py: Modernise use of unittest methods +53d2fbd94d630309104e33f3dcd6d84d292265e5 d2d12679a4fa91edf724d2af1e81d654cb2eb331 Alberto Milone 1338890603 +0200 checkout: moving from pep8 to debian +d2d12679a4fa91edf724d2af1e81d654cb2eb331 dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 Alberto Milone 1338890635 +0200 pull origin debian-pep8: Fast-forward +dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 Alberto Milone 1338891392 +0200 checkout: moving from debian to debian-pep8 +dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 Alberto Milone 1338893710 +0200 commit: Minor changes to the control file an cleanup of rules +50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 53d2fbd94d630309104e33f3dcd6d84d292265e5 Alberto Milone 1338893876 +0200 checkout: moving from debian-pep8 to pep8 +53d2fbd94d630309104e33f3dcd6d84d292265e5 50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 Alberto Milone 1338893936 +0200 checkout: moving from pep8 to debian-pep8 +50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 dcd1c6975cfea10668ff589650d77d212106495e Alberto Milone 1338894064 +0200 commit: Release 0.5.0 diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/debian x-kit-0.5.0/.git/logs/refs/heads/debian --- x-kit-0.4.2.3build1/.git/logs/refs/heads/debian 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/debian 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305471359 +0200 branch: Created from HEAD +4a7550be20ebec834e66937cf817ec4f6ca62676 d2d12679a4fa91edf724d2af1e81d654cb2eb331 Alberto Milone 1305471382 +0200 commit: Add debian directory +d2d12679a4fa91edf724d2af1e81d654cb2eb331 dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 Alberto Milone 1338890635 +0200 pull origin debian-pep8: Fast-forward diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/debian-pep8 x-kit-0.5.0/.git/logs/refs/heads/debian-pep8 --- x-kit-0.4.2.3build1/.git/logs/refs/heads/debian-pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/debian-pep8 2012-06-05 11:01:04.000000000 +0000 @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 Alberto Milone 1338891392 +0200 branch: Created from HEAD +dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 Alberto Milone 1338893710 +0200 commit: Minor changes to the control file an cleanup of rules +50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 dcd1c6975cfea10668ff589650d77d212106495e Alberto Milone 1338894064 +0200 commit: Release 0.5.0 diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/master x-kit-0.5.0/.git/logs/refs/heads/master --- x-kit-0.4.2.3build1/.git/logs/refs/heads/master 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/master 2011-05-17 11:22:27.000000000 +0000 @@ -0,0 +1,15 @@ +0000000000000000000000000000000000000000 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305471340 +0200 commit (initial): Initial commit +4a7550be20ebec834e66937cf817ec4f6ca62676 2b1850063f9f0473df62194bc2872cedc360ac40 Alberto Milone 1305627081 +0200 commit: Port xorgparser.py to py3 with 2to3 +2b1850063f9f0473df62194bc2872cedc360ac40 ece2cda6ad4a39827073e19d0d25e7c55937f194 Alberto Milone 1305627714 +0200 commit: Port xutils.py to py3 with 2to3 +ece2cda6ad4a39827073e19d0d25e7c55937f194 5b68f579255ee939c84d78cb565225590b71da30 Alberto Milone 1305627958 +0200 commit: Port 0-test.py to py3 with 2to3 +5b68f579255ee939c84d78cb565225590b71da30 b255f508d52537a8916d70e9e83deba4fb2d3994 Alberto Milone 1305627981 +0200 commit: Port 1-test.py to py3 with 2to3 +b255f508d52537a8916d70e9e83deba4fb2d3994 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628014 +0200 commit: Port run to py3 with 2to3 +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 2b1850063f9f0473df62194bc2872cedc360ac40 Alberto Milone 1305628543 +0200 2b1850063f9f0473df62194bc2872cedc360ac40: updating HEAD +2b1850063f9f0473df62194bc2872cedc360ac40 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628751 +0200 merge raw: Fast-forward +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 a2b4d3f760014160d7a49abd6daa76f38fcf4ec8 Alberto Milone 1305629357 +0200 commit: Port 0-example.py to py3 with 2to3 +a2b4d3f760014160d7a49abd6daa76f38fcf4ec8 72973368ace4b27b3f22073e5a4d34c0b317970c Alberto Milone 1305629404 +0200 commit: Port 1-example.py to py3 with 2to3 +72973368ace4b27b3f22073e5a4d34c0b317970c 6d61c4e02c6c6432010b39e73ec045d55301ba1b Alberto Milone 1305629462 +0200 commit: Port accessories.py to py3 with 2to3 +6d61c4e02c6c6432010b39e73ec045d55301ba1b 819698adaeb0a8a2593cd4fb57e6a672158c0684 Alberto Milone 1305630255 +0200 commit: Do not attempt relative import in non-package scripts +819698adaeb0a8a2593cd4fb57e6a672158c0684 0b9591b3367510278936eb1c212e120f609f729b Alberto Milone 1305630619 +0200 commit: Encode the string when writing to a buffer +0b9591b3367510278936eb1c212e120f609f729b 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631281 +0200 commit: Set run to use python 3 +6182f65e1a32ea826366eaaa20517b400c4a4889 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305631347 +0200 4a7550be20ebec834e66937cf817ec4f6ca62676: updating HEAD diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/pep8 x-kit-0.5.0/.git/logs/refs/heads/pep8 --- x-kit-0.4.2.3build1/.git/logs/refs/heads/pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/pep8 2012-05-23 13:11:51.000000000 +0000 @@ -0,0 +1,113 @@ +0000000000000000000000000000000000000000 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305647100 +0200 branch: Created from HEAD +6182f65e1a32ea826366eaaa20517b400c4a4889 06c2eb3e890c31116a0184eabe125e139fea384c Alberto Milone 1305650239 +0200 commit: Rename private methods of Parser +06c2eb3e890c31116a0184eabe125e139fea384c 53918adc90d147375d062c61b389e327fc6c84ea Alberto Milone 1306150099 +0200 commit: Rename module so that is lowercase +53918adc90d147375d062c61b389e327fc6c84ea 42505b0f1bf2db79b6cea0abbaad28bb6f03042f Alberto Milone 1306150170 +0200 commit (amend): Rename module so that is lowercase +42505b0f1bf2db79b6cea0abbaad28bb6f03042f 417cc37d33e4daf5397a5387ec386a199682e95c Alberto Milone 1306156431 +0200 commit: Adapt test suite and examples to module name change +417cc37d33e4daf5397a5387ec386a199682e95c c5b27aa7532bc046258bda75c124389e5d05ca70 Alberto Milone 1306159609 +0200 commit: Make xkit.Parser a new-style class +c5b27aa7532bc046258bda75c124389e5d05ca70 3e7d3a8f2c870d60da48e0886ca5a9e4d6a46a51 Alberto Milone 1306160548 +0200 commit: Make getIds() private and rename it as __fill_identifiers() +3e7d3a8f2c870d60da48e0886ca5a9e4d6a46a51 4a3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 Alberto Milone 1306161003 +0200 commit (amend): Make getIds() private and rename it as __fill_identifiers() +4a3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 fc52853c00884dce4aec2968ce39a5edde3674fe Alberto Milone 1306166897 +0200 commit: Add "InputClass" to self.requireid +fc52853c00884dce4aec2968ce39a5edde3674fe 98c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 Alberto Milone 1306172342 +0200 commit: Clean up Parser.__check_sanity +98c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 5396927cda5ee5453d36ea9dfcd53970408e9b59 Alberto Milone 1306241826 +0200 commit (amend): Clean up Parser.__check_sanity +5396927cda5ee5453d36ea9dfcd53970408e9b59 321feb42211a49d6c4f0af80c305907cee0b9745 Alberto Milone 1306243624 +0200 commit (amend): Clean up Parser.__check_sanity +321feb42211a49d6c4f0af80c305907cee0b9745 cab6e4d0622b5f4c415970782bf617ff95d1b5a1 Alberto Milone 1306243717 +0200 commit: Add and expose self.valid_sections +cab6e4d0622b5f4c415970782bf617ff95d1b5a1 52b36da89f2f0d5946f7ff5586844e7537fe7166 Alberto Milone 1306248838 +0200 commit: Reorganise the docstrings of the ctor of Parser +52b36da89f2f0d5946f7ff5586844e7537fe7166 3faee68867799fff2f6584093274cb0ae21a09ef Alberto Milone 1306249067 +0200 commit (amend): Reorganise the docstrings of the ctor of Parser +3faee68867799fff2f6584093274cb0ae21a09ef fedd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 Alberto Milone 1306249509 +0200 commit: No need to duplicate subsection and commentsection +fedd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 17ee0170dcb985c80a4f2ae4163c92f2016cd3a7 Alberto Milone 1306250650 +0200 commit: Rename requireid as require_id +17ee0170dcb985c80a4f2ae4163c92f2016cd3a7 96a302a0b82749b39d69d5681597c7e799dccdec Alberto Milone 1306752912 +0200 commit: Make sure that internal functions use _ instead of __ +96a302a0b82749b39d69d5681597c7e799dccdec 37966446adf77bf5b4a1a26671a8a4655e2ec065 Alberto Milone 1306753673 +0200 commit: Rename validateOptions method and make it internal +37966446adf77bf5b4a1a26671a8a4655e2ec065 c7d3537338dd6f83826cbe1a920643fa6c3df1cc Alberto Milone 1306753919 +0200 commit: Rename getDuplicateSections +c7d3537338dd6f83826cbe1a920643fa6c3df1cc a502fd10144e2c8cce2f3940ac5c1ef48882b67c Alberto Milone 1306762878 +0200 commit: Rename checkDuplicateOptions method +a502fd10144e2c8cce2f3940ac5c1ef48882b67c d1423136fb983d5c5923d9f9bd642afb100607f7 Alberto Milone 1306763115 +0200 commit: Clean up names in _validate_options +d1423136fb983d5c5923d9f9bd642afb100607f7 b0d782d02275f6f5cda85acfe153013d2b3659cb Alberto Milone 1306763969 +0200 commit: Rename addOption and its optiontype argument +b0d782d02275f6f5cda85acfe153013d2b3659cb 5d6753fb1c3da6d1122e2a2215baa0205911f4df Alberto Milone 1306764630 +0200 commit: Stylistic fixes to add_option +5d6753fb1c3da6d1122e2a2215baa0205911f4df 1e3c9bf9550d690cd42d4277adcb5d400dfb810f Alberto Milone 1306764707 +0200 commit (amend): Stylistic fixes to add_option +1e3c9bf9550d690cd42d4277adcb5d400dfb810f e32643cc4b5929db412518a1078b56bb469df287 Alberto Milone 1306766474 +0200 commit: Rename removeOption +e32643cc4b5929db412518a1078b56bb469df287 e5ff7baea339eba7fcd3ab2a7f2c1533541c87fe Alberto Milone 1306766634 +0200 commit: Further name cleanup +e5ff7baea339eba7fcd3ab2a7f2c1533541c87fe 03f7944e2a31c8bc6af922ffe1dc0e49693be42e Alberto Milone 1306768220 +0200 commit: Rename makeSection +03f7944e2a31c8bc6af922ffe1dc0e49693be42e b0c491af4f92227ad4a99d487b4e80604f8a7c00 Alberto Milone 1306771309 +0200 commit: Clean up make_section +b0c491af4f92227ad4a99d487b4e80604f8a7c00 17c0aafafcc6c363065cabc96b32550ab3986ed0 Alberto Milone 1306840328 +0200 commit: Use _gdict internally and expose globaldict +17c0aafafcc6c363065cabc96b32550ab3986ed0 9117c4339a41d26e7811780e7eeb600b07945f75 Alberto Milone 1306840570 +0200 commit: Rename removeSection +9117c4339a41d26e7811780e7eeb600b07945f75 e599e52dae6472112314f729a2492facadd6ef91 Alberto Milone 1306845291 +0200 commit: Rename addReference +e599e52dae6472112314f729a2492facadd6ef91 d175d3bffece3a0c4202e98bf7dbcfaa82d84ec7 Alberto Milone 1306845440 +0200 commit: Rename removeReference +d175d3bffece3a0c4202e98bf7dbcfaa82d84ec7 0b294413f603210f22365373ed57d9e0990107d8 Alberto Milone 1306845646 +0200 commit: Rename getReferences +0b294413f603210f22365373ed57d9e0990107d8 47948a6e66556c6eb268528820f5de8cf23385f0 Alberto Milone 1306845716 +0200 commit: Further name cleanup in _check_syntax +47948a6e66556c6eb268528820f5de8cf23385f0 2feb8007f7bda155d5ea69e7f14748ad10075040 Alberto Milone 1306846060 +0200 commit (amend): Further name cleanup in _check_syntax +2feb8007f7bda155d5ea69e7f14748ad10075040 a620995aa179de2d650fe5c8ebc852b9cfc90db3 Alberto Milone 1306846311 +0200 commit: Names cleanup in get_references +a620995aa179de2d650fe5c8ebc852b9cfc90db3 3490e1db9582640ab11776211011c53661154078 Alberto Milone 1306847277 +0200 commit: Clean up remove_reference +3490e1db9582640ab11776211011c53661154078 99426547e31384fc76ddbecc8a727a418c963251 Alberto Milone 1306847415 +0200 commit: Clean up get_references +99426547e31384fc76ddbecc8a727a418c963251 18d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 Alberto Milone 1306848332 +0200 commit: Rename makeSubSection +18d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 c88aee3ab06002f725fd5ffea1114b7721b170eb Alberto Milone 1306849619 +0200 commit: Clean up make_subsection +c88aee3ab06002f725fd5ffea1114b7721b170eb 4585c9ed3ca1e5d84c72483fece8386dd7d3e1d2 Alberto Milone 1306849720 +0200 commit: Rename removeSubSection +4585c9ed3ca1e5d84c72483fece8386dd7d3e1d2 984c5c0a389a5c2581d76298d804c56c0447f36a Alberto Milone 1306850298 +0200 commit: Clean up make_subsection +984c5c0a389a5c2581d76298d804c56c0447f36a f25eff463b8f1bff113f38e17bb3f3517b94635f Alberto Milone 1306850417 +0200 commit: Clean up remove_subsection +f25eff463b8f1bff113f38e17bb3f3517b94635f 2178c46343f971a7531fe6dc3bbffb1aebd1cfc2 Alberto Milone 1306850579 +0200 commit: Rename addSubOption +2178c46343f971a7531fe6dc3bbffb1aebd1cfc2 ed4464a65e49ac8797dbbc454df46cd285351324 Alberto Milone 1306851169 +0200 commit: Clean up add_suboption +ed4464a65e49ac8797dbbc454df46cd285351324 b500621101593659206a358b80a121e13cd8daf8 Alberto Milone 1306851373 +0200 commit (amend): Clean up add_suboption +b500621101593659206a358b80a121e13cd8daf8 b76a902c6cd4e30e046dfd9676794bc36fdfe43a Alberto Milone 1306851718 +0200 commit: Clean up _get_suboptions_to_blacklist +b76a902c6cd4e30e046dfd9676794bc36fdfe43a acf14b63bf0547995fc9d11471d7aa972738d695 Alberto Milone 1306851853 +0200 commit: Rename removeSubOption +acf14b63bf0547995fc9d11471d7aa972738d695 ff8e6a43ad1293e4ce0594001f455e09ae10133f Alberto Milone 1306851925 +0200 commit: Clean up remove_suboption +ff8e6a43ad1293e4ce0594001f455e09ae10133f 290ced36b22fc7a27593311bcf88f0d02618ff25 Alberto Milone 1306852132 +0200 commit: Rename getIdentifier +290ced36b22fc7a27593311bcf88f0d02618ff25 15fb2a2860683a2ccbccca73949898402df6b359 Alberto Milone 1306852251 +0200 commit: Clean up get_identifier +15fb2a2860683a2ccbccca73949898402df6b359 9ca3ce6e8602875c95069fb65c0fa02fcf8ee10e Alberto Milone 1306852593 +0200 commit: Clean up _clean_option +9ca3ce6e8602875c95069fb65c0fa02fcf8ee10e 44bd7a28c7e4fb3cadf387b08738b1365b7eef01 Alberto Milone 1306853061 +0200 commit: Rename getValue +44bd7a28c7e4fb3cadf387b08738b1365b7eef01 a00055e3fe2f3a1ccc092f90f56155c9d7e9984e Alberto Milone 1306853987 +0200 commit: Clean up get_value +a00055e3fe2f3a1ccc092f90f56155c9d7e9984e 59f2b879ecca4d7493d5af778e0eca46b8771ace Alberto Milone 1306856271 +0200 commit: Rename isSection +59f2b879ecca4d7493d5af778e0eca46b8771ace 54fc34ea18c5fc1a9e28d1a62230a6665f82b327 Alberto Milone 1306856409 +0200 commit: Rename getPosition +54fc34ea18c5fc1a9e28d1a62230a6665f82b327 4b4198d9779aa3855cd9b684ad5d4ef111a9526b Alberto Milone 1306856468 +0200 commit: Clean up get_position +4b4198d9779aa3855cd9b684ad5d4ef111a9526b e9d8ea08b84879e69b7a357ff6be7723973455f3 Alberto Milone 1306856594 +0200 commit: Rename getBrokenReferences +e9d8ea08b84879e69b7a357ff6be7723973455f3 3e00916e5a698671bc74f6b45b666b98e45aeb8f Alberto Milone 1306856884 +0200 commit: Clean up get_broken_references +3e00916e5a698671bc74f6b45b666b98e45aeb8f 804973b299758b2afe707b90ff5c0bba63b4a6c6 Alberto Milone 1306857001 +0200 commit: Rename getDefaultServerLayout +804973b299758b2afe707b90ff5c0bba63b4a6c6 80d8c7e137cfc024d687f0e81c0ce8b358117cef Alberto Milone 1306925918 +0200 commit: Add full stop to error message +80d8c7e137cfc024d687f0e81c0ce8b358117cef 321f964efc333c6d47909fd390072e1a6c50ec32 Alberto Milone 1306926029 +0200 commit: Minor formatting fix in _clean_option +321f964efc333c6d47909fd390072e1a6c50ec32 c8cc841b0633273e4d4d3634ccf0695296b40c9b Alberto Milone 1306926107 +0200 commit: Clean up get_value +c8cc841b0633273e4d4d3634ccf0695296b40c9b 7add2fb9cb163f173a11bde48716b53cef1e72ee Alberto Milone 1306926367 +0200 commit: Clean up get_default_serverlayout +7add2fb9cb163f173a11bde48716b53cef1e72ee 71ff2f60a02c48f35d8e9349d299105a29db1b83 Alberto Milone 1306928025 +0200 commit: Clean up _merge_subsections +71ff2f60a02c48f35d8e9349d299105a29db1b83 64a1a1f646c33506302cbc848a2f701b5bfef7d7 Alberto Milone 1306936147 +0200 commit: Rename writeFile as write +64a1a1f646c33506302cbc848a2f701b5bfef7d7 3e98bbe331f52a5dccffee6842fd8c21ae9df2f6 Alberto Milone 1306938434 +0200 commit: Clean up _merge_subsections, _merge_commented_options, write +3e98bbe331f52a5dccffee6842fd8c21ae9df2f6 75b4dc27f42b3d77fa71d9b9b046a604d53e308a Alberto Milone 1306940200 +0200 commit: Add test_write4 and make sure that more tests actually write the log +75b4dc27f42b3d77fa71d9b9b046a604d53e308a 09c39551a785d3c5bab7bb3c02b596ac710dbd00 Alberto Milone 1306941509 +0200 commit: Rename getSubSections +09c39551a785d3c5bab7bb3c02b596ac710dbd00 6ede6e13c91378a0de9ed97db2b35c144a338357 Alberto Milone 1306942043 +0200 commit: Clean up get_subsections +6ede6e13c91378a0de9ed97db2b35c144a338357 77fa22ba4621feb623ea923f3f9f9a3592bc03d9 Alberto Milone 1306942178 +0200 commit: Clean up _permanent_merge_subsections +77fa22ba4621feb623ea923f3f9f9a3592bc03d9 3d1833f63ff027b5e996c073f157376fe379ef78 Alberto Milone 1306942401 +0200 commit: Clean up _get_comments +3d1833f63ff027b5e996c073f157376fe379ef78 9789a6c300ab6805d7a5c18132288e3ad0353437 Alberto Milone 1306945701 +0200 commit: _merge_subsections_with_comments +9789a6c300ab6805d7a5c18132288e3ad0353437 3f9fd43cfcfa63ce5b0ea2520e59df7fda4487bc Alberto Milone 1307366104 +0200 commit: Clean up _remove_comment_entries +3f9fd43cfcfa63ce5b0ea2520e59df7fda4487bc e895fb65a751e43ebedc2e405bbbcfcc58365cbe Alberto Milone 1307366374 +0200 commit: Rename commentOutSection +e895fb65a751e43ebedc2e405bbbcfcc58365cbe bff377fcc50fa86151910bf501e4b97339bdee0d Alberto Milone 1307366693 +0200 commit: Clean up comment_out_section +bff377fcc50fa86151910bf501e4b97339bdee0d 433b6c4763ddb2db4f172b65317277c0bda60694 Alberto Milone 1307366732 +0200 commit (amend): Clean up comment_out_section +433b6c4763ddb2db4f172b65317277c0bda60694 6223882466340b05761f9a24019b33ae3c1d4605 Alberto Milone 1307369195 +0200 commit: Rename commentOutSubSection +6223882466340b05761f9a24019b33ae3c1d4605 ff4323a0ac20587e6c04106a33cae0655aa5721f Alberto Milone 1307369907 +0200 commit: Clean up comment_out_subsection +ff4323a0ac20587e6c04106a33cae0655aa5721f 65802f44d304918fd91622f471b937443e9692da Alberto Milone 1307370250 +0200 commit: Rename commentOutOption +65802f44d304918fd91622f471b937443e9692da 1154ff2f85257c94c98ae21549178867abc31cc8 Alberto Milone 1307371451 +0200 commit: Clean up comment_out_option +1154ff2f85257c94c98ae21549178867abc31cc8 09295b285489fdc5600fc774d653431a529b1dc6 Alberto Milone 1307371629 +0200 commit: Rename commentOutSubOption +09295b285489fdc5600fc774d653431a529b1dc6 d47e7700cd6afd53cbd9710aa633fd03847dbb76 Alberto Milone 1307372381 +0200 commit: Clean up comment_out_suboption +d47e7700cd6afd53cbd9710aa633fd03847dbb76 684e328111549aa77f59a73b1b60c2ca58b2f722 Alberto Milone 1307372703 +0200 commit: Clean up _merge_commented_options +684e328111549aa77f59a73b1b60c2ca58b2f722 c49ff5936d904c2e69523956a7cbaeede2d3f60a Alberto Milone 1307372879 +0200 commit (amend): Clean up _merge_commented_options +c49ff5936d904c2e69523956a7cbaeede2d3f60a ace5eee7670594cbe40845dbb663c1ff074fbfe2 Alberto Milone 1307373972 +0200 commit: Minor stylistic changes +ace5eee7670594cbe40845dbb663c1ff074fbfe2 dd71e8d31d2d30d047e719a7e7995c3d52bd6e22 Alberto Milone 1307441627 +0200 commit: Rename checkNFixSection +dd71e8d31d2d30d047e719a7e7995c3d52bd6e22 472773b597c749e7a949079264f3d9d5afba2888 Alberto Milone 1307444088 +0200 commit: Clean up fix_broken_references +472773b597c749e7a949079264f3d9d5afba2888 2a4cf6ba747373c0c41a0b0474fd4d89d1ec1bda Alberto Milone 1307444285 +0200 commit: Rename getDriver +2a4cf6ba747373c0c41a0b0474fd4d89d1ec1bda 496513561405569cd1d5f0a1c988b3c4b65a128f Alberto Milone 1307444388 +0200 commit: Clean up get_driver +496513561405569cd1d5f0a1c988b3c4b65a128f 746cc2ab88af4fa75631a701f3c297473960dfd4 Alberto Milone 1307444487 +0200 commit: Rename setDriver +746cc2ab88af4fa75631a701f3c297473960dfd4 d7c9e99b73ddea68a6c8a2121caad56d2b6f101c Alberto Milone 1307444523 +0200 commit: Remove blank line +d7c9e99b73ddea68a6c8a2121caad56d2b6f101c 0d92e1f31035a144d85a72dc578ef2e47982bdaa Alberto Milone 1307444661 +0200 commit: Clean up set_driver +0d92e1f31035a144d85a72dc578ef2e47982bdaa 94a0b45ff37a93e32abd18856d7cafa711efb704 Alberto Milone 1307445011 +0200 commit: Rename isDriverInSection +94a0b45ff37a93e32abd18856d7cafa711efb704 35cb141250b4b021cbcf5e4c98ea47889b23c867 Alberto Milone 1307445259 +0200 commit: Clean up section_has_driver and rename sectionsList +35cb141250b4b021cbcf5e4c98ea47889b23c867 f1e4cda6a1073ac4fb8e908f249583c6d046f382 Alberto Milone 1307445296 +0200 commit: Minor docstring change in get_driver +f1e4cda6a1073ac4fb8e908f249583c6d046f382 ded6be0b0eaf46aad2f5edee5565b7c988fda860 Alberto Milone 1307445892 +0200 commit: Rename getDevicesFromServerLayout +ded6be0b0eaf46aad2f5edee5565b7c988fda860 400cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 Alberto Milone 1307446010 +0200 commit (amend): Rename getDevicesFromServerLayout +400cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 1736fd6c3a7d38554c51e2bf11e97a0526eb83ec Alberto Milone 1307446650 +0200 commit: Clean up get_devices_in_serverlayout +1736fd6c3a7d38554c51e2bf11e97a0526eb83ec ac3ba9d770eff0e86ec1698b23266a9ff273ac7f Alberto Milone 1307446858 +0200 commit (amend): Clean up get_devices_in_serverlayout +ac3ba9d770eff0e86ec1698b23266a9ff273ac7f 762660125fb7d49a9b12bf50368ebad7b7538e11 Alberto Milone 1307451552 +0200 commit: Rename getDevicesInUse +762660125fb7d49a9b12bf50368ebad7b7538e11 b0a4a998ba2a82a4ea5bbb2d33464ad861863140 Alberto Milone 1307452152 +0200 commit: Clean up get_devices_in_use +b0a4a998ba2a82a4ea5bbb2d33464ad861863140 99d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 Alberto Milone 1307452590 +0200 commit: Rename isDriverEnabled +99d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 a4860b471a0d2937683972323008d6316d4d0188 Alberto Milone 1307452805 +0200 commit: Clean up is_driver_enabled +a4860b471a0d2937683972323008d6316d4d0188 8bcc3c73910ffd0c3f7d0c6b622586bec215eb29 Alberto Milone 1307453242 +0200 commit (amend): Clean up is_driver_enabled +8bcc3c73910ffd0c3f7d0c6b622586bec215eb29 6bacbed517ea5840de0cb82f0d58a7d10df18273 Alberto Milone 1307453475 +0200 commit: Rename getScreenDeviceRelationships +6bacbed517ea5840de0cb82f0d58a7d10df18273 5abf03f745d2a21f3705f12547a13957c697177b Alberto Milone 1307453534 +0200 commit: Clean up get_screen_device_relationships +5abf03f745d2a21f3705f12547a13957c697177b 6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca Alberto Milone 1307459346 +0200 commit: Temp tests/0-test.py clean up +6acd6a8f2ef5044e659a2a4f8165053ce6fe4cca e885230b3b2978259770215fc25f5a3555ba60f0 Alberto Milone 1337602286 +0200 commit: 0-test.py: Avoid leaking temporary file handles +e885230b3b2978259770215fc25f5a3555ba60f0 fb991f4773676b9f0e4b22cca5a76f9b29aa0701 Alberto Milone 1337773218 +0200 commit: xkit/xorgparser.py: convert bytes to string before writing +fb991f4773676b9f0e4b22cca5a76f9b29aa0701 b3a059685a2e0c95a55b0cbe8be981affe134173 Alberto Milone 1337778622 +0200 commit: tests/0-test.py: improve the use of unittest +b3a059685a2e0c95a55b0cbe8be981affe134173 53d2fbd94d630309104e33f3dcd6d84d292265e5 Alberto Milone 1337778691 +0200 commit (amend): tests/0-test.py: Modernise use of unittest methods diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/py3 x-kit-0.5.0/.git/logs/refs/heads/py3 --- x-kit-0.4.2.3build1/.git/logs/refs/heads/py3 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/py3 2011-05-17 11:21:41.000000000 +0000 @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6182f65e1a32ea826366eaaa20517b400c4a4889 Alberto Milone 1305631301 +0200 branch: Created from HEAD diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/heads/raw x-kit-0.5.0/.git/logs/refs/heads/raw --- x-kit-0.4.2.3build1/.git/logs/refs/heads/raw 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/heads/raw 2011-05-17 10:35:03.000000000 +0000 @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 Alberto Milone 1305628503 +0200 branch: Created from HEAD diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/remotes/origin/master x-kit-0.5.0/.git/logs/refs/remotes/origin/master --- x-kit-0.4.2.3build1/.git/logs/refs/remotes/origin/master 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/remotes/origin/master 2011-05-15 15:34:14.000000000 +0000 @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 4a7550be20ebec834e66937cf817ec4f6ca62676 Alberto Milone 1305473654 +0200 update by push diff -Nru x-kit-0.4.2.3build1/.git/logs/refs/remotes/origin/pep8 x-kit-0.5.0/.git/logs/refs/remotes/origin/pep8 --- x-kit-0.4.2.3build1/.git/logs/refs/remotes/origin/pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/logs/refs/remotes/origin/pep8 2012-05-28 10:24:01.000000000 +0000 @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 53d2fbd94d630309104e33f3dcd6d84d292265e5 Alberto Milone 1338200641 +0200 update by push Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/3e46b38ecf62e396ed03ab7bcac0ffba25ee03 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/3e46b38ecf62e396ed03ab7bcac0ffba25ee03 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/4090fc016c790acf2fbbdc758315e9822c16fa and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/4090fc016c790acf2fbbdc758315e9822c16fa differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/48aa1f872a0df6813459fa5bf250eba31ae57c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/48aa1f872a0df6813459fa5bf250eba31ae57c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/616d7f469a8d48d38fff0f0a38bc58c3a072a8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/616d7f469a8d48d38fff0f0a38bc58c3a072a8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/bf86a28dc5c8b62f77ae1e2e551964016220f2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/bf86a28dc5c8b62f77ae1e2e551964016220f2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/00/e8780c549d0202621b6fc6b50e616cb333ef89 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/00/e8780c549d0202621b6fc6b50e616cb333ef89 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/01/e1d524ee65c2b5cde54380be956db0089c730b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/01/e1d524ee65c2b5cde54380be956db0089c730b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/01/e200683ed8af7b14be3a6bc62f995fddef1f38 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/01/e200683ed8af7b14be3a6bc62f995fddef1f38 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/01/f6aead2917963e55eec775767e0a2879a8d161 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/01/f6aead2917963e55eec775767e0a2879a8d161 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/02/a5f702ee843262f9ab2ea6df0de59ee751451b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/02/a5f702ee843262f9ab2ea6df0de59ee751451b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/02/ce65aada0eb491e88c27cffbc5fd10e1cc046b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/02/ce65aada0eb491e88c27cffbc5fd10e1cc046b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/03/93c396a331c372c41747f604185119147a5ae9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/03/93c396a331c372c41747f604185119147a5ae9 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/03/a6c93c423b856ea8294767dff33e280bff24e5 x-kit-0.5.0/.git/objects/03/a6c93c423b856ea8294767dff33e280bff24e5 --- x-kit-0.4.2.3build1/.git/objects/03/a6c93c423b856ea8294767dff33e280bff24e5 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/03/a6c93c423b856ea8294767dff33e280bff24e5 2011-05-31 12:34:51.000000000 +0000 @@ -0,0 +1 @@ +x+)JMU043d040075U0ÐM­HÌ-ÈIÕ+¨dXf×°î±d÷mÛëÁµY^Üá¯Ugˆ¬nG@þ…sš7*Ud »Ž7¤ÞìLt«ª331QˆÏÌË,‰÷lî£Ù›.^söîÖ\WuãГžà‰Pe‰ÉÉ©ÅÅùE™©Å •n+/Q]ʤ«úàgä©IÇLsâ¢d}’C  \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/03/f4cbbeba7ab803c560691f8be5b0ec7bc56f58 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/03/f4cbbeba7ab803c560691f8be5b0ec7bc56f58 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/03/f7944e2a31c8bc6af922ffe1dc0e49693be42e x-kit-0.5.0/.git/objects/03/f7944e2a31c8bc6af922ffe1dc0e49693be42e --- x-kit-0.4.2.3build1/.git/objects/03/f7944e2a31c8bc6af922ffe1dc0e49693be42e 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/03/f7944e2a31c8bc6af922ffe1dc0e49693be42e 2011-05-30 15:10:27.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽKj1 ³ö)´ j¹ýƒ!L0›ä²,“&m;4žûO“!»ªZ<žŒÖ¶ äÂ˺•ÿüÒ~ý&ÜGß„÷‹Œö‹E|$BxEB4g=ïNý÷ùÐÎM¡ñ·~ªÌmtó"ÜTÓ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/04/574e58bec7c93ac312f4d3097e4bf00174d942 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/04/574e58bec7c93ac312f4d3097e4bf00174d942 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/04/b0d355a3da7997cd1f303b0bce425e4dd38df2 x-kit-0.5.0/.git/objects/04/b0d355a3da7997cd1f303b0bce425e4dd38df2 --- x-kit-0.4.2.3build1/.git/objects/04/b0d355a3da7997cd1f303b0bce425e4dd38df2 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/04/b0d355a3da7997cd1f303b0bce425e4dd38df2 2011-05-30 14:41:14.000000000 +0000 @@ -0,0 +1,2 @@ +x+)JMU044g040075UˆÏÌË,‰×+¨dx6÷ÑìM¯9{wk®+ºqèIOðD¨²Šü¢ô‚Ä¢âÔ"ª_¶¹õ|oý}×ìS±Êú_ßSem +ÍLL*JK2sŠAŠ¿­[«)>Í.ôÝñÒ²:.Êšâ4ú \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/04/e075fa5d595ade335d433d8b5eea9dfe3c6cfd and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/04/e075fa5d595ade335d433d8b5eea9dfe3c6cfd differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/05/52635d59e5ce164dd55a413c8b655ae5614e9a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/05/52635d59e5ce164dd55a413c8b655ae5614e9a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/05/9ed7edb68468fc52d05a0d1779e64b9f78475a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/05/9ed7edb68468fc52d05a0d1779e64b9f78475a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/05/cbd6eaad18be8ff44cb06b2de38c1da3c5ddeb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/05/cbd6eaad18be8ff44cb06b2de38c1da3c5ddeb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/06/137ebf403164812c75e7ee89e618380f2ff0cd and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/06/137ebf403164812c75e7ee89e618380f2ff0cd differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/06/359421f4134225e49250804f819c0c98dad3cf and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/06/359421f4134225e49250804f819c0c98dad3cf differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/06/8a2a2efe6f0c07affa83e368cf9a8287f8753c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/06/8a2a2efe6f0c07affa83e368cf9a8287f8753c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/06/c2eb3e890c31116a0184eabe125e139fea384c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/06/c2eb3e890c31116a0184eabe125e139fea384c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/07/18863c7ae912f8172bc0c4bc5e190ef5cacaca and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/07/18863c7ae912f8172bc0c4bc5e190ef5cacaca differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/08/ea39497ca4536f237bdcbbb54bdace308b2d4a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/08/ea39497ca4536f237bdcbbb54bdace308b2d4a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/09/0646035119c00d620113a9bf8162cd21f55082 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/09/0646035119c00d620113a9bf8162cd21f55082 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/09/295b285489fdc5600fc774d653431a529b1dc6 x-kit-0.5.0/.git/objects/09/295b285489fdc5600fc774d653431a529b1dc6 --- x-kit-0.4.2.3build1/.git/objects/09/295b285489fdc5600fc774d653431a529b1dc6 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/09/295b285489fdc5600fc774d653431a529b1dc6 2011-06-06 14:47:14.000000000 +0000 @@ -0,0 +1,3 @@ +x¥M +Â0F]ç³$™4 ¢‚ž N°Ð$¥¤÷·ê\¾·x|Õœ§hÍ¡­ÌБ¦­O*1‡1x¤@2xBÃnLÎ*Ô’K\¹4PÊt)aò£ÐQð‘q—A9ï­‹iEäEÜÚ«®p›^[…û4×ÂpŽ?>å/_)–Z&Šó‰j¾€ÒÒi§,8J”RìvŸÛøïxp‰™áÜô[{nC¿´©ñx +Vz \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/09/7594c4a26c8bebadcc7e4bec467378de18a49f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/09/7594c4a26c8bebadcc7e4bec467378de18a49f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/09/9c1df1da24e52c0df1f56763ad98c03df3e5e0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/09/9c1df1da24e52c0df1f56763ad98c03df3e5e0 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/09/c39551a785d3c5bab7bb3c02b596ac710dbd00 x-kit-0.5.0/.git/objects/09/c39551a785d3c5bab7bb3c02b596ac710dbd00 --- x-kit-0.4.2.3build1/.git/objects/09/c39551a785d3c5bab7bb3c02b596ac710dbd00 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/09/c39551a785d3c5bab7bb3c02b596ac710dbd00 2011-06-01 15:18:39.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽKj1D³Ö)zo0­ÿBˆàç­ž–30’ÂX¾¿íä^¯xŽÖu€ ø1v LšËd½—ˆ_a,ê¨sqž‚Xœ¢ú¥]Ú€è³[ØÄâL¶KŒ…¢^RN] €nñöå“¢ûøé;œ¶,ûèp^·Þ>éŸõ¿™Zo+Óvä^¿@[ Éi hÕ³}ÞòöºH£*p•1ßó,<ÖÞnêÏÚU \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/09/d9b6b01e66c8eddebc56ecfd75d7a3577f4a05 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/09/d9b6b01e66c8eddebc56ecfd75d7a3577f4a05 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0a/c0bb985a0be532e5a398747409018536fbd04d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0a/c0bb985a0be532e5a398747409018536fbd04d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0b/294413f603210f22365373ed57d9e0990107d8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0b/294413f603210f22365373ed57d9e0990107d8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0b/3f8d2b66707bcca05f8b6866d60cd4353c355e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0b/3f8d2b66707bcca05f8b6866d60cd4353c355e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/0b/9591b3367510278936eb1c212e120f609f729b x-kit-0.5.0/.git/objects/0b/9591b3367510278936eb1c212e120f609f729b --- x-kit-0.4.2.3build1/.git/objects/0b/9591b3367510278936eb1c212e120f609f729b 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/0b/9591b3367510278936eb1c212e120f609f729b 2011-05-17 11:11:05.000000000 +0000 @@ -0,0 +1 @@ +x¥ÎMN!†aל¢ö&~šcf.=DQTÛ$Ý`É\ßVàòù_^îÇQ'Øhžæt)‡ÖΜxñ¶˜‚…¬Y£Á¨>iH›M©dM‘¬OŽË²f ƒ5>²Æ¸(ºÏ­¸íYÆìð^÷Þ^èÏ—ã×W¦Ö[eÚ/ÜW0N{tM‚gmµVçzæNù÷‘zkÜ‹Àܾæ¨í›4xŒ:p&äûºÊPßKž[ú \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0b/c1aab1dfe4354a79e44455c354684031d2690e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0b/c1aab1dfe4354a79e44455c354684031d2690e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/150d705c820d827eb98d4314e5ad09b7d1ff25 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/150d705c820d827eb98d4314e5ad09b7d1ff25 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/41e0165216c95553ae693affdff1a1d5850775 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/41e0165216c95553ae693affdff1a1d5850775 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/a2e5512de8e4c18946cca5903cedba88397210 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/a2e5512de8e4c18946cca5903cedba88397210 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/aa15443d5a39c776fe9c5a0ae87a7816951a66 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/aa15443d5a39c776fe9c5a0ae87a7816951a66 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/cd6e438a14bf0a561d4223d0d6a40453c407fe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/cd6e438a14bf0a561d4223d0d6a40453c407fe differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0d/92e1f31035a144d85a72dc578ef2e47982bdaa and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0d/92e1f31035a144d85a72dc578ef2e47982bdaa differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0e/1a2dbeb733e1143bb005554cbe561411409bc9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0e/1a2dbeb733e1143bb005554cbe561411409bc9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0e/4ad565ee15be6aab78e64f0fcc46a5a8d0a75a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0e/4ad565ee15be6aab78e64f0fcc46a5a8d0a75a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0f/182c3d1d5e1ca8cdfdb7babe06a73a414f3ce5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0f/182c3d1d5e1ca8cdfdb7babe06a73a414f3ce5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0f/74a0b51f9cfa4d132d9e45f77190c83dc8d96f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0f/74a0b51f9cfa4d132d9e45f77190c83dc8d96f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/0f/f9437e7d1521eca10fe4ccfb5278eb41cc841e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/0f/f9437e7d1521eca10fe4ccfb5278eb41cc841e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/11/54ff2f85257c94c98ae21549178867abc31cc8 x-kit-0.5.0/.git/objects/11/54ff2f85257c94c98ae21549178867abc31cc8 --- x-kit-0.4.2.3build1/.git/objects/11/54ff2f85257c94c98ae21549178867abc31cc8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/11/54ff2f85257c94c98ae21549178867abc31cc8 2011-06-06 14:44:19.000000000 +0000 @@ -0,0 +1,2 @@ +x¥AjÃ0E»Ö)fš‘,y ”†¬{†2–ÆÔ`KÆÈ÷’¡‹¿xñø?Õm[PíP3‘›Y 3ÖGld”G—Åû€H㔜ÙåÐÒ £¥Ùûì¬gç̨'vÑ{§˜²9Ûo=à¾Nz´ +ßËZ‹ÂMþøº½ù+I©eI²^SÝ>.¢.–¬5½ís›þ[d«Js‡—²?ù©gÏÞ–ZÌmUG \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/11/9fdb6be62fe70ef67d5e31e2980d2f5e16ab42 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/11/9fdb6be62fe70ef67d5e31e2980d2f5e16ab42 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/11/c6ebf7bc39f486b549d3bc3a901f3e1d37d7db and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/11/c6ebf7bc39f486b549d3bc3a901f3e1d37d7db differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/11/ca59405b34fb12b72b9a0339f6873d3a63dfaa and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/11/ca59405b34fb12b72b9a0339f6873d3a63dfaa differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/11/eee89d1aa43cd729acd80107435f20379b4cfe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/11/eee89d1aa43cd729acd80107435f20379b4cfe differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/1e49f4a240bc0e2676ec63a978d999450b4264 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/1e49f4a240bc0e2676ec63a978d999450b4264 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/6523745e4e06de16083d679e299fca5e75c008 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/6523745e4e06de16083d679e299fca5e75c008 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/76e4078cc1ba9c3149d54c55385f7027afe925 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/76e4078cc1ba9c3149d54c55385f7027afe925 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/90a6dee488f38ba35ff7aae02e24106529d389 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/90a6dee488f38ba35ff7aae02e24106529d389 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/90eb40a9e43ee4c23de35cab194a88be6e8b0f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/90eb40a9e43ee4c23de35cab194a88be6e8b0f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/c7dc612fbc3fcd3991d3f43a123fa009e9a4c9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/c7dc612fbc3fcd3991d3f43a123fa009e9a4c9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/13/f18e369b7c262980fa551acd35383a8558a1e9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/13/f18e369b7c262980fa551acd35383a8558a1e9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/14/10c047cc4c6a7bbbb3c5b03f40a0fce638ad92 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/14/10c047cc4c6a7bbbb3c5b03f40a0fce638ad92 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/14/ed522df2e45699d9363e2f26a406888d2a28a6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/14/ed522df2e45699d9363e2f26a406888d2a28a6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/15/0afeaeaa427d4164668ed8fe846f1bc72ad1ff and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/15/0afeaeaa427d4164668ed8fe846f1bc72ad1ff differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/15/aef0af71f77f6e600ee856e780f28659176116 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/15/aef0af71f77f6e600ee856e780f28659176116 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/15/fb2a2860683a2ccbccca73949898402df6b359 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/15/fb2a2860683a2ccbccca73949898402df6b359 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/17/36fd6c3a7d38554c51e2bf11e97a0526eb83ec and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/17/36fd6c3a7d38554c51e2bf11e97a0526eb83ec differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/17/9412399809a5f9edf2dd03847a76cab92fef38 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/17/9412399809a5f9edf2dd03847a76cab92fef38 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/17/c0aafafcc6c363065cabc96b32550ab3986ed0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/17/c0aafafcc6c363065cabc96b32550ab3986ed0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/17/c10e609183d50ed6e92f8d99b930b6ae40a937 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/17/c10e609183d50ed6e92f8d99b930b6ae40a937 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/17/ee0170dcb985c80a4f2ae4163c92f2016cd3a7 x-kit-0.5.0/.git/objects/17/ee0170dcb985c80a4f2ae4163c92f2016cd3a7 --- x-kit-0.4.2.3build1/.git/objects/17/ee0170dcb985c80a4f2ae4163c92f2016cd3a7 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/17/ee0170dcb985c80a4f2ae4163c92f2016cd3a7 2011-05-24 15:24:30.000000000 +0000 @@ -0,0 +1 @@ +x¥ÎKJD1…aÇYEÍ…¦òº¹itNÜ@SIU0p“Ø1½Åôðû‡“GkuÙâÓš"ÀŒewZoÚj¡`ŒqXCÊh£Iœ¢Ï¢¾hJ_P„Ù³Ù)f‹i©Ã9øb“Ë\ˆ%¸äÝÖç˜ðv$™kÀ{=Fx¡?ŸÚ¯_3õÑk¦ã”G;ƒ¶¸›GxFƒ¨îõ~wÉÃCêC:5)×[Rèû—Êê YR \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/18/26c211fe8f40e4d1c07c6d13b0b48823126c9b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/18/26c211fe8f40e4d1c07c6d13b0b48823126c9b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/18/39cfb51f35a02c7ee3b24ba0c55faecea337fa and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/18/39cfb51f35a02c7ee3b24ba0c55faecea337fa differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/18/735619db5c4246facb624580a2633e6002c546 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/18/735619db5c4246facb624580a2633e6002c546 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/18/d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/18/d4acb4daf9b5b1a3cd171fc2b9c7bcc4465b44 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/19/226ff66debbda5188b7c3a066fd6fc6bdc1c6d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/19/226ff66debbda5188b7c3a066fd6fc6bdc1c6d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/19/6389d362f9cbc86a16ab338608a00f7de76eba and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/19/6389d362f9cbc86a16ab338608a00f7de76eba differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/19/a35d5c53a3d80ba349028d8d46e5361289b4d9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/19/a35d5c53a3d80ba349028d8d46e5361289b4d9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/19/bcdd6b6f6ba41b36b6c90c485b34c106a60f34 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/19/bcdd6b6f6ba41b36b6c90c485b34c106a60f34 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1a/a25e671516b50b1b149ea6ea6c0b888e7adcf8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1a/a25e671516b50b1b149ea6ea6c0b888e7adcf8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1b/a6273d9cef908cdcc4aad3b78cdec77fd0869f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1b/a6273d9cef908cdcc4aad3b78cdec77fd0869f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1c/6e0daea91edb19cc69e51178ba691c71319a9c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1c/6e0daea91edb19cc69e51178ba691c71319a9c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1c/cacb1bb6dc88b5b7b8370edfa8dbb679924bb1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1c/cacb1bb6dc88b5b7b8370edfa8dbb679924bb1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1d/f00f0eac6da6f2de189416e784dd71e11170e1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1d/f00f0eac6da6f2de189416e784dd71e11170e1 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/1e/3c9bf9550d690cd42d4277adcb5d400dfb810f x-kit-0.5.0/.git/objects/1e/3c9bf9550d690cd42d4277adcb5d400dfb810f --- x-kit-0.4.2.3build1/.git/objects/1e/3c9bf9550d690cd42d4277adcb5d400dfb810f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/1e/3c9bf9550d690cd42d4277adcb5d400dfb810f 2011-05-30 14:11:49.000000000 +0000 @@ -0,0 +1 @@ +xŽKJ1Eg5•¤óiÑ8rR©T0Ð<ú• »·QWàðÜ ‡Ãsß»‚‹ùNp¸$^]¨ ×f›ÏìKÎâ+†ÑJ;¿µQ2W:d(¬)»ŠÎ¥Ðb \)â&6x´¾ºâcX¹úÐ÷yÀóVäÐ /}›Cà~ù²ÿðÓ˜£3mžû#X1Å%z„{tˆæ\Ï\•Ц?‘yÕ¯­ß´3´þ)78›¨Ö·yÕ>‡ùɼWí \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1e/60d9c2d613f395342f471b5a41e16c90c441e2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1e/60d9c2d613f395342f471b5a41e16c90c441e2 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/1e/9adc37eb49bd4c09a92dad880adae52a6a591d x-kit-0.5.0/.git/objects/1e/9adc37eb49bd4c09a92dad880adae52a6a591d --- x-kit-0.4.2.3build1/.git/objects/1e/9adc37eb49bd4c09a92dad880adae52a6a591d 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/1e/9adc37eb49bd4c09a92dad880adae52a6a591d 2011-05-31 14:12:49.000000000 +0000 @@ -0,0 +1,2 @@ +x+)JMU044g040075UˆÏÌË,‰×+¨dx6÷ÑìM¯9{wk®+ºqèIOðD¨²Šü¢ô‚Ä¢âÔ"¬gÂ.Î +?¬ôè«8Ûkƒ¬šúI B3…ŠÒ’Ìœb¢Y/—Im_¤Rc'-7áë»’Ãù÷¥Kú3¢ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/1e/bfd90d87935538c65fc1e47dd169b2c3d35cf0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/1e/bfd90d87935538c65fc1e47dd169b2c3d35cf0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/20/09815c89faa97c9560980f381e5db298deea80 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/20/09815c89faa97c9560980f381e5db298deea80 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/20/27722af9c01545f7862400e1e232e41e99a522 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/20/27722af9c01545f7862400e1e232e41e99a522 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/20/47c925d4cdf1f38c3b88e3d056601ef9259fa7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/20/47c925d4cdf1f38c3b88e3d056601ef9259fa7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/21/1b9afac9c2152b8f89aba17ee93c16a877c31b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/21/1b9afac9c2152b8f89aba17ee93c16a877c31b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/21/37d536f4733313202ea11f21b5c5518868867d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/21/37d536f4733313202ea11f21b5c5518868867d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/21/78c46343f971a7531fe6dc3bbffb1aebd1cfc2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/21/78c46343f971a7531fe6dc3bbffb1aebd1cfc2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/21/9a6a2ccbd8e04e6fb5ca952d4866908009dda8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/21/9a6a2ccbd8e04e6fb5ca952d4866908009dda8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/21/d00de5a2e7be6e156c9745a8cb822ab7680aad and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/21/d00de5a2e7be6e156c9745a8cb822ab7680aad differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/22/95eeff97a6b3a69919982f696f9f5711e2f2b9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/22/95eeff97a6b3a69919982f696f9f5711e2f2b9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/22/a37b4491e9ad5eda00625c8081c45d1817e267 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/22/a37b4491e9ad5eda00625c8081c45d1817e267 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/22/e34367a724be1eca562d1f299c3763fd5bfd5c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/22/e34367a724be1eca562d1f299c3763fd5bfd5c differ diff -Nru x-kit-0.4.2.3build1/.git/objects/23/e02785a7f4e91d478077eeebdb187efa6275e7 x-kit-0.5.0/.git/objects/23/e02785a7f4e91d478077eeebdb187efa6275e7 --- x-kit-0.4.2.3build1/.git/objects/23/e02785a7f4e91d478077eeebdb187efa6275e7 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/23/e02785a7f4e91d478077eeebdb187efa6275e7 2011-05-15 14:56:14.000000000 +0000 @@ -0,0 +1,4 @@ +x•‘AK1…=çWÌÁƒ‚›­¶•²hÑâM„BAzÍ&Ónhš„ɬ´Šþv³ÛROÃû˜Ì›7µ 5Œo¯Ï¡%ìŠe±@Í6ø +âž›àÅœl Ëû +Bì€rbÖZgŠ'ŒèMª@›:ÁÅôr$GÃË+0X7è"R/å@'Y>üXhôLÊ[Æòö|ëå9Ê¢õì8'^T.óCªàÑÕHàźà.8¡³/áNȶÊYÒòT,Xy£È¤â)õ» åDÄrQÌû%€rN¼êTÌÞó¨†9¦ª,u0(j½n¢2Ò#—_¿†•»@ë¨(!•Ûì³b®ôF­sªÇ¥w]¶¤Ë9à–2éf-g,œZª£Ûô)NQŸØQéPÒdûËTàlMŠö° +Ü l•·±uª»„U¯uV¥~%`Y<[›þ×'Å7•Å \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/24/2b8fafac87c1a9cc9a0ed81773012871825e91 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/24/2b8fafac87c1a9cc9a0ed81773012871825e91 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/24/cdf25821506dac75555c336ae0533fca0b5b1f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/24/cdf25821506dac75555c336ae0533fca0b5b1f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/25/67768119b82befdea0091658d766ca6540b81e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/25/67768119b82befdea0091658d766ca6540b81e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/25/9ae480aca8ed1cec99ffaffe239d768a8dc241 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/25/9ae480aca8ed1cec99ffaffe239d768a8dc241 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/25/bcd511c476c0aaf7aeb6ee12eee99397b6fcda and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/25/bcd511c476c0aaf7aeb6ee12eee99397b6fcda differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/25/d7d18c712e024a29738c28295cbd0261de57b1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/25/d7d18c712e024a29738c28295cbd0261de57b1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/26/22c88b42dcffc71d361c4697ffbfc5d814c08f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/26/22c88b42dcffc71d361c4697ffbfc5d814c08f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/27/726d6a9fe87eadf0c2b3ec6e02c3219635527e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/27/726d6a9fe87eadf0c2b3ec6e02c3219635527e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/28/5220959316dc9aa6ed7361013a88d85beab593 x-kit-0.5.0/.git/objects/28/5220959316dc9aa6ed7361013a88d85beab593 --- x-kit-0.4.2.3build1/.git/objects/28/5220959316dc9aa6ed7361013a88d85beab593 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/28/5220959316dc9aa6ed7361013a88d85beab593 2011-05-30 15:10:20.000000000 +0000 @@ -0,0 +1 @@ +x+)JMU043d040075U0ÐM­HÌ-ÈIÕ+¨dXãñ¼÷±¨’‹ßºz_ž¤3›AÕ"«krÕ¹6²ü–û«â[ÊË6Hõ̪331QˆÏÌË,‰÷lî£Ù›.^söîÖ\WuãГžà‰Pe‰ÉÉ©ÅÅùE™©Å •n+/Q]ʤ«úàgä©IÇLsâ¢džAð \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/28/5356bd9bba76bf22fb437c2011e7ce14033357 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/28/5356bd9bba76bf22fb437c2011e7ce14033357 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/28/87e20c0c349ddbcb7db37292f26e17eb3597f6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/28/87e20c0c349ddbcb7db37292f26e17eb3597f6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/28/fad5b775d2eecc2c515668b487129abfca9895 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/28/fad5b775d2eecc2c515668b487129abfca9895 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/04d3fc613884b8afdb2753089f2fe57fc37939 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/04d3fc613884b8afdb2753089f2fe57fc37939 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/0ced36b22fc7a27593311bcf88f0d02618ff25 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/0ced36b22fc7a27593311bcf88f0d02618ff25 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/5245389401e354e450a54f3212e040489f1897 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/5245389401e354e450a54f3212e040489f1897 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/91b16c37380a281fb5b8cc97e6b5c547640d3a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/91b16c37380a281fb5b8cc97e6b5c547640d3a differ diff -Nru x-kit-0.4.2.3build1/.git/objects/29/cebba759a74bd647902fca4da0e651ade305a7 x-kit-0.5.0/.git/objects/29/cebba759a74bd647902fca4da0e651ade305a7 --- x-kit-0.4.2.3build1/.git/objects/29/cebba759a74bd647902fca4da0e651ade305a7 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/29/cebba759a74bd647902fca4da0e651ade305a7 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1,3 @@ +xPÁJÃ@õ¼_1¦…Ú”Š bDñàEÁ»ˆlÒI2t³³ÌÎJû÷®I¥ØÃ{óxóöÕŽk¸Z^žÌNË¥¬É—a§={333xä°êz…Õry ®FQ†rìn턇Þ[G .HïŒi…XSÔ¤äâ¢aA !°(DÔŒùA© Æ8‡.g™ÇE°Ú3 +Ï äñvÀªØnH‹ùHØ”#JU:Z~à`ÉUÅï÷Ò,ñšþåuüË/I¾Ø«†xS–Î&ßôÁ®µÜ^âåcþÒÓë3|®€œU”}ª5ÆF((±¯ +GµXÙA›EÚ# ÖSHYž·ÀíÈmYº\²o÷Á6Ûa¬Þ¦ÒÞ§Ö&×Ìf|nÆùA§› \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/dd7d9c68a24b38955b61c52fba2dae7ca05b5b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/dd7d9c68a24b38955b61c52fba2dae7ca05b5b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/29/e90ad4696af1de843923dfe289f5e0d30d259e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/29/e90ad4696af1de843923dfe289f5e0d30d259e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2a/002c9ee27ac4420f3abe7f360b8c9ede153274 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2a/002c9ee27ac4420f3abe7f360b8c9ede153274 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2a/4cf6ba747373c0c41a0b0474fd4d89d1ec1bda and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2a/4cf6ba747373c0c41a0b0474fd4d89d1ec1bda differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2a/5ae4bd7e07b1768e8d0222028da54bea25e9d6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2a/5ae4bd7e07b1768e8d0222028da54bea25e9d6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2a/c0685dc0951f6a18cbb713e2a43744764afa61 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2a/c0685dc0951f6a18cbb713e2a43744764afa61 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2b/15d689f3663cd4ce950b0d36badcda0dd7af48 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2b/15d689f3663cd4ce950b0d36badcda0dd7af48 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2b/1850063f9f0473df62194bc2872cedc360ac40 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2b/1850063f9f0473df62194bc2872cedc360ac40 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2b/d8640a61f43a0a00f36ce410467a588f55ea6e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2b/d8640a61f43a0a00f36ce410467a588f55ea6e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2c/1c4865585e8b5ca07fb81b55f3218ed00f3ebe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2c/1c4865585e8b5ca07fb81b55f3218ed00f3ebe differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2c/8f528f5f1e53699942227768d8f6ee249c8ce9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2c/8f528f5f1e53699942227768d8f6ee249c8ce9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2c/ac16f6c43a208ac7980972771fb92a19092e4c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2c/ac16f6c43a208ac7980972771fb92a19092e4c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2c/f2e24cadad7fab3b6752717baab4b1a30f26b4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2c/f2e24cadad7fab3b6752717baab4b1a30f26b4 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2e/d0c838fed02bafb51e0d20f4727dddf7718a20 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2e/d0c838fed02bafb51e0d20f4727dddf7718a20 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2f/2eba68ecd6b31c67e931ab83af4b65aa00d7f8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2f/2eba68ecd6b31c67e931ab83af4b65aa00d7f8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2f/a58d2d27a51a5c431e2e922f1a0ba106123eac and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2f/a58d2d27a51a5c431e2e922f1a0ba106123eac differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2f/a64889957b8f212a0e76a046575bca84866c89 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2f/a64889957b8f212a0e76a046575bca84866c89 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/2f/e7ef6e487f0406df1d75e573b2fea7edd078db and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/2f/e7ef6e487f0406df1d75e573b2fea7edd078db differ diff -Nru x-kit-0.4.2.3build1/.git/objects/2f/eb8007f7bda155d5ea69e7f14748ad10075040 x-kit-0.5.0/.git/objects/2f/eb8007f7bda155d5ea69e7f14748ad10075040 --- x-kit-0.4.2.3build1/.git/objects/2f/eb8007f7bda155d5ea69e7f14748ad10075040 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/2f/eb8007f7bda155d5ea69e7f14748ad10075040 2011-05-31 12:47:41.000000000 +0000 @@ -0,0 +1 @@ +xŽÁJÅ0E]ç+f/<&I;ià!ºqç7<¦™)-6É#¦ oQ¿@¸›s‡“jÎ[è¡7U%7Ï*#!:b•s‹Å E¼K“†s禥Î.ƒõ ¡wç<>x•1HTŒ-™ }­ ^öY[¯ð¶íµ(\ù—/ù‡Ÿ—Z¶Äû%ÕüÖ#MÃ,Á#:Ds¾gn×ÿ‰ ÿDæõh}==…³BÚ•Ëq‡­À-­šÞo_¥ó§ùhºZS \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/30/2eb20a4cbf8f281b2822c42014e2a162f2069b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/30/2eb20a4cbf8f281b2822c42014e2a162f2069b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/31/04e27b70cbc4f7ae4967463ffccf5c3e5f9d1f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/31/04e27b70cbc4f7ae4967463ffccf5c3e5f9d1f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/31/a1950596edcbb7e4f3e9ff9bc7782965c4ad99 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/31/a1950596edcbb7e4f3e9ff9bc7782965c4ad99 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/31/a64bf65fa6f25b20ff5853de09724978a2e7b5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/31/a64bf65fa6f25b20ff5853de09724978a2e7b5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/31/f628bfa82329f27fac55316802ad05fae2d0ed and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/31/f628bfa82329f27fac55316802ad05fae2d0ed differ diff -Nru x-kit-0.4.2.3build1/.git/objects/32/1f964efc333c6d47909fd390072e1a6c50ec32 x-kit-0.5.0/.git/objects/32/1f964efc333c6d47909fd390072e1a6c50ec32 --- x-kit-0.4.2.3build1/.git/objects/32/1f964efc333c6d47909fd390072e1a6c50ec32 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/32/1f964efc333c6d47909fd390072e1a6c50ec32 2011-06-01 11:00:39.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽAj1 E»ö)´ÙžŒm¥9@Î4)5Œí`\èñ;MŽÝñxÜJÉ\˜?FIqaç¢ +©¥0žû?U¼g¯SZq²æA]ꀈkä ÖVF7­s Š-#K\ü)ZXÔÐÏøn.Û"}4¸æ­U3½øXžüÅT[ÍLÛ‘[ùëqNnF—à€Ñìïž;äm‘¹æºçhë…ÆÈõš!W¸ñ&Toí1r«æÐ [ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/32/1feb42211a49d6c4f0af80c305907cee0b9745 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/32/1feb42211a49d6c4f0af80c305907cee0b9745 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/32/7dec4e9ead5adbc442de9e11e3f04185edac38 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/32/7dec4e9ead5adbc442de9e11e3f04185edac38 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/33/1a0ca097af3e56658956ee92a3c03807b6906c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/33/1a0ca097af3e56658956ee92a3c03807b6906c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/34/1bfb25b183423e3ef00ae74e6eea0db1c9c0d7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/34/1bfb25b183423e3ef00ae74e6eea0db1c9c0d7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/34/2a64582dc3db857851bdefc32657115d9063be and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/34/2a64582dc3db857851bdefc32657115d9063be differ diff -Nru x-kit-0.4.2.3build1/.git/objects/34/90e1db9582640ab11776211011c53661154078 x-kit-0.5.0/.git/objects/34/90e1db9582640ab11776211011c53661154078 --- x-kit-0.4.2.3build1/.git/objects/34/90e1db9582640ab11776211011c53661154078 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/34/90e1db9582640ab11776211011c53661154078 2011-05-31 13:08:04.000000000 +0000 @@ -0,0 +1 @@ +x¥Kj1½Ö)z0=²>#0!!kŸ!´º[x`$!çüâ#dYoQ¼â^ë6ÁwšCŠ-‚!±x¤è<¹¸"ûàHW—rdo̓†¶ ,¦ä‰–˜D­E=¯šyõ6'.œPòÅÐsÞû€Ï=ë˜nÛޛ•^|®üÁÔzÛ˜ö3÷úËÃê¢ÞÐ"šc=îNý·È|íJ žZû~-z±š_üBW \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/34/c764f099c0c7a2d69dc0b7335a99daddc8c189 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/34/c764f099c0c7a2d69dc0b7335a99daddc8c189 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/34/dc2331898497a4a3ccac01278afd2ff846965f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/34/dc2331898497a4a3ccac01278afd2ff846965f differ diff -Nru x-kit-0.4.2.3build1/.git/objects/35/cb141250b4b021cbcf5e4c98ea47889b23c867 x-kit-0.5.0/.git/objects/35/cb141250b4b021cbcf5e4c98ea47889b23c867 --- x-kit-0.4.2.3build1/.git/objects/35/cb141250b4b021cbcf5e4c98ea47889b23c867 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/35/cb141250b4b021cbcf5e4c98ea47889b23c867 2011-06-07 11:14:37.000000000 +0000 @@ -0,0 +1 @@ +x¥Kj1D³Ö)zo0úkLˆÉ69ƒiI=X0’ŒFÎù3$äY¾*xT¥^k™ Q¾ÌÁ ½O:ø„‰ jôƒ[Ø!ÇÈL¤$F©MÜ& %­[W M1«eq>‡D+¥xAZAÏyï®[ä1;|–­7† ýò¹þð[¢Ö[I´S¯¯ Œ Ö:íNRK)Žô˜;ùß"ñ¾15x>`ç4Ko·;í·<Ê×ᦖáxG•ÿÚý£ìS|`¡ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/36/0ecaab7c8141d882246b3b78eaa76981c2874e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/36/0ecaab7c8141d882246b3b78eaa76981c2874e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/36/5c9fbdcf1ed08f22f71ffc5c495e22809cc566 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/36/5c9fbdcf1ed08f22f71ffc5c495e22809cc566 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/36/8b922f7d467451f54e29fadc0d6eaf0cd28dee and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/36/8b922f7d467451f54e29fadc0d6eaf0cd28dee differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/36/93e9efc3f34ae035c1685cde8f90a862998bb4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/36/93e9efc3f34ae035c1685cde8f90a862998bb4 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/37/966446adf77bf5b4a1a26671a8a4655e2ec065 x-kit-0.5.0/.git/objects/37/966446adf77bf5b4a1a26671a8a4655e2ec065 --- x-kit-0.4.2.3build1/.git/objects/37/966446adf77bf5b4a1a26671a8a4655e2ec065 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/37/966446adf77bf5b4a1a26671a8a4655e2ec065 2011-05-30 11:08:14.000000000 +0000 @@ -0,0 +1 @@ +x¥KJ1Eg5Õé|º@D ‚;¨Têa0ŸG]¿A—àðžÁ½‡+£µ2Át7OUÈÕ»˜H"¢¸pM‡l”²G¯ÖF'É™ŸÚ'Pà-c:§´S”}86OQ¢F¢,’U Í÷qÂsMzÎ/¥Ž®ðÀùÒ~ó“p½׋ŒöÛŽ!ú=ÄîÑ"šE—îÔ™7íܾ¹–ÌS_o³Œþ M—fî(¬oJ_{«ùÛ_ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/38/004852080c129746a8db7ab1696abb7d8cdd51 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/38/004852080c129746a8db7ab1696abb7d8cdd51 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/38/43c341d3007f66c7ca34bea9f1deec40a684c5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/38/43c341d3007f66c7ca34bea9f1deec40a684c5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/38/711cc1b4e0d981f537b044d13073d7f4ac9650 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/38/711cc1b4e0d981f537b044d13073d7f4ac9650 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/38/b2161a1c16a7f3a81d6a980d04333d38205922 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/38/b2161a1c16a7f3a81d6a980d04333d38205922 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/39/f21d67f7b533b3b0bdcbd089d39929d4bebf17 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/39/f21d67f7b533b3b0bdcbd089d39929d4bebf17 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3a/35c68d4721c11775578691652fb03c6cb929e1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3a/35c68d4721c11775578691652fb03c6cb929e1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3b/476e233f2657474470ee7ba6e3a10f013e95fb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3b/476e233f2657474470ee7ba6e3a10f013e95fb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3b/93ff01b4120f39f3926ff29e6c835d452347c2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3b/93ff01b4120f39f3926ff29e6c835d452347c2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3b/af500cb838ab65fa0e3a96b99887616a831400 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3b/af500cb838ab65fa0e3a96b99887616a831400 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3b/da6145e76252c51583175af9af9a37d1abae44 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3b/da6145e76252c51583175af9af9a37d1abae44 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3c/bbd2edbee5d4d6e563eb9dc45d1a51df24baea and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3c/bbd2edbee5d4d6e563eb9dc45d1a51df24baea differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3c/e45eb4fda53054ad3d6c4e37f130ea5334d557 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3c/e45eb4fda53054ad3d6c4e37f130ea5334d557 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/3d/1833f63ff027b5e996c073f157376fe379ef78 x-kit-0.5.0/.git/objects/3d/1833f63ff027b5e996c073f157376fe379ef78 --- x-kit-0.4.2.3build1/.git/objects/3d/1833f63ff027b5e996c073f157376fe379ef78 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/3d/1833f63ff027b5e996c073f157376fe379ef78 2011-06-01 15:33:28.000000000 +0000 @@ -0,0 +1,4 @@ +x¥A +Â0E]ç³J2I“Dמ¡LÒ‰Ú¤ÔôþV=‚Ë÷?<þežÇ +hÕ¡®Ì`¹³A§¥µ3ÚÀ½TRŠƒ=æ2ý;H¼.„ö ¦•Ꙧ¶ûFSÉíá‡ûh;NÒ<•í[¹ÕÄ$Äo`žÿôA.7¨Ä{ÍÀÅ_.H¹1á %ÂÞR>BX°5@æšüÎtïË¥‹… \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3e/f761ed5d810aac29ccd9578a4e981b2e51e4c8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3e/f761ed5d810aac29ccd9578a4e981b2e51e4c8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3f/3068c168a01ca879640e6325951155f0af8ea9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3f/3068c168a01ca879640e6325951155f0af8ea9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3f/7cd4f4f50586a4c291c50384b96a7428268fd6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3f/7cd4f4f50586a4c291c50384b96a7428268fd6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3f/83912d6e9fa334865bb6ce50a06594bde2e313 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3f/83912d6e9fa334865bb6ce50a06594bde2e313 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3f/9061be38e2f93f3736a6b3167d0352e993f228 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3f/9061be38e2f93f3736a6b3167d0352e993f228 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/3f/9fd43cfcfa63ce5b0ea2520e59df7fda4487bc x-kit-0.5.0/.git/objects/3f/9fd43cfcfa63ce5b0ea2520e59df7fda4487bc --- x-kit-0.4.2.3build1/.git/objects/3f/9fd43cfcfa63ce5b0ea2520e59df7fda4487bc 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/3f/9fd43cfcfa63ce5b0ea2520e59df7fda4487bc 2011-06-06 13:15:11.000000000 +0000 @@ -0,0 +1 @@ +x¥OKJ1tSô^xtÒ3I¢¸ö COÒâÀ$yÄ<ÏoÔ#¸¨EE}R+åà‚}]²òÎí¢9†ÄV(…üŽk&g×½÷–ý¢ÎܤkGñ‰e÷<}AÖdÙ’sÌJ’‘VZ(¹ÖáåܵoÇÙªÂUþø¥üòç$µÕ#ÉyI­<% 4+qGtˆfªsîЙ×S¥Âý[×Ò¾tû‰ž¶‰~è§ù¨EW¼ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/3f/aee68867799fff2f6584093274cb0ae21a09ef and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/3f/aee68867799fff2f6584093274cb0ae21a09ef differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/40/0cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/40/0cff3eb2be1fa5eb698c9fe3269ee7d5c38b28 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/40/7fdab9526612d05edd35032f8f12c85186c667 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/40/7fdab9526612d05edd35032f8f12c85186c667 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/41/0bb1705c1af541559332c3b8ada5ad2d8b2962 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/41/0bb1705c1af541559332c3b8ada5ad2d8b2962 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/41/7cc37d33e4daf5397a5387ec386a199682e95c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/41/7cc37d33e4daf5397a5387ec386a199682e95c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/41/e131f49a5b89f1bc540dc70f90028cfd1886c3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/41/e131f49a5b89f1bc540dc70f90028cfd1886c3 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/42/505b0f1bf2db79b6cea0abbaad28bb6f03042f x-kit-0.5.0/.git/objects/42/505b0f1bf2db79b6cea0abbaad28bb6f03042f --- x-kit-0.4.2.3build1/.git/objects/42/505b0f1bf2db79b6cea0abbaad28bb6f03042f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/42/505b0f1bf2db79b6cea0abbaad28bb6f03042f 2011-05-23 11:29:33.000000000 +0000 @@ -0,0 +1 @@ +xŽKj1 @»ö)´ÉžñBiÐMo +2ÛÅãÐë7´=A—ï-Oz­ÛÜ˪P¼J(·à—˜’Ï’cñ1,.¦œ)qk,«·Ù|òÐ6½XÍNcBqDä).ÊYÉ®J.e1ü˜÷>àºg³Ãû¶÷¦pá_>×~n½mÂûYz}rèiEL NhÍÓ>w§þ3DÿBæCW…Úo]áè0ï å’¡q'e:Bã׺ãÞÃÖ:kÍš®s«þ)Bï~"s•2,x+×'·²ÔÛS¥%›øµXn \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/43/81b6fd354bff532ebcac0530b15f806b697bf9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/43/81b6fd354bff532ebcac0530b15f806b697bf9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/44/436f2074b97ddf4892eaadd38cc48da5d7e891 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/44/436f2074b97ddf4892eaadd38cc48da5d7e891 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/44/632a350f01af1d28f079b06e0d760c22d983d0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/44/632a350f01af1d28f079b06e0d760c22d983d0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/44/991b3861898abf50aeaa4af6057e7085631d08 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/44/991b3861898abf50aeaa4af6057e7085631d08 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/44/bd7a28c7e4fb3cadf387b08738b1365b7eef01 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/44/bd7a28c7e4fb3cadf387b08738b1365b7eef01 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/45/85c9ed3ca1e5d84c72483fece8386dd7d3e1d2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/45/85c9ed3ca1e5d84c72483fece8386dd7d3e1d2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/46/391fe173cc23a29e3e81159641a968a8eaa0df and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/46/391fe173cc23a29e3e81159641a968a8eaa0df differ diff -Nru x-kit-0.4.2.3build1/.git/objects/47/2773b597c749e7a949079264f3d9d5afba2888 x-kit-0.5.0/.git/objects/47/2773b597c749e7a949079264f3d9d5afba2888 --- x-kit-0.4.2.3build1/.git/objects/47/2773b597c749e7a949079264f3d9d5afba2888 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/47/2773b597c749e7a949079264f3d9d5afba2888 2011-06-07 10:54:55.000000000 +0000 @@ -0,0 +1 @@ +x¥AJ1D]ç½>d2I@Dqí>îœI>1<¾Aà¦àUAQÅí<÷nÍ£«BAÏyjE]À-OB\b Ñm|Ne%›Éܨk ­&ñVœx\¢ÆOÍ9°—àŠ¬êœ¡ûøh^¢}4xßVžè/ç/¿0ÕVw¦ãÂí|ë1.Ë‚)Á#:D3Ý9wè¿‹ÌÛ¡Tá~ƒmÿ¾–Þ>µ^»n:_±~™ˆ^X¸ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/47/5c272d7389ee122fb103522c36f96aed27a8e8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/47/5c272d7389ee122fb103522c36f96aed27a8e8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/47/6671527ca90a607f1f6158fffcc4f9f0b33531 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/47/6671527ca90a607f1f6158fffcc4f9f0b33531 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/47/948a6e66556c6eb268528820f5de8cf23385f0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/47/948a6e66556c6eb268528820f5de8cf23385f0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/47/e7d0a8890a649a2f5a204c5fa5b7431c628cac and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/47/e7d0a8890a649a2f5a204c5fa5b7431c628cac differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/47/fdb878cb3732e205ee54c86f36d8bccbbad587 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/47/fdb878cb3732e205ee54c86f36d8bccbbad587 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/48/15068c042d90640536e96f51be7f3996398add and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/48/15068c042d90640536e96f51be7f3996398add differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/48/63ed680f42a4551de664ecd7ed58aff4844591 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/48/63ed680f42a4551de664ecd7ed58aff4844591 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/48/7699b73008c03f5809ed095b67d2a8b656bbc7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/48/7699b73008c03f5809ed095b67d2a8b656bbc7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/48/a05d64242e635f54e0dd142868491d863417c9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/48/a05d64242e635f54e0dd142868491d863417c9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/48/de66ccd03987caaf3da085d66b419710505925 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/48/de66ccd03987caaf3da085d66b419710505925 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/49/145eafdca08d0b9ac05759e8ebd49d031e425d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/49/145eafdca08d0b9ac05759e8ebd49d031e425d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/49/6513561405569cd1d5f0a1c988b3c4b65a128f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/49/6513561405569cd1d5f0a1c988b3c4b65a128f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/49/88229771076c9709bb86cd12c9048729622df5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/49/88229771076c9709bb86cd12c9048729622df5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/49/968b4ef6126cf613c74ece6912b55d5344390a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/49/968b4ef6126cf613c74ece6912b55d5344390a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/49/bda2ab6dde58b23f8295af2e89a79c6b01d4d6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/49/bda2ab6dde58b23f8295af2e89a79c6b01d4d6 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/4a/3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 x-kit-0.5.0/.git/objects/4a/3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 --- x-kit-0.4.2.3build1/.git/objects/4a/3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/4a/3e69c2072d2ff8f6d32eb1670e6f24ce0d3255 2011-05-23 14:30:08.000000000 +0000 @@ -0,0 +1,2 @@ +xËJ1E]ç+j©Ct7ˆèÒÅø M%©Ì„É£Igü~ƒú.ï¥8ÜS®æ;¨É<ôFB¬Á[cÉÈ@3§`f¯I ’ë½ š„A;I¶c£ÒÁi+gÄY+iŸŒÔ‹õ#:!'µ¬¤=×gÎðÞ¯µÁ{²Ôz…sLµ¼ào>åŸüæ°Ô¦“«ù„âF®§ž¹äœvÌíô?à\ýØoêþx|‚½Å/ìX< /Ìã+xÀ¶…˜Òý!R׌}Vó/c†¯t@¿Æ +‘‡afö»MÑA¦!íÙ7°Br? \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.git/objects/4a/7550be20ebec834e66937cf817ec4f6ca62676 x-kit-0.5.0/.git/objects/4a/7550be20ebec834e66937cf817ec4f6ca62676 --- x-kit-0.4.2.3build1/.git/objects/4a/7550be20ebec834e66937cf817ec4f6ca62676 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/4a/7550be20ebec834e66937cf817ec4f6ca62676 2011-05-15 14:55:50.000000000 +0000 @@ -0,0 +1,3 @@ +x¥K +Â0@]ç³Ê4“¦ ˆèÒ…‡H¦#òïo±GpùÞâ=n¥¤—Óè"YÓÍ&ÎÎŽ¢&‡6JdòÆ¼Ìæ-Yö^…Ïx·÷¥Ï”[¸„ƒ§òã‡Újâ'nå +3ábÖ™ Â5¢Úí¾òwH=j)d8Šê Ç®D) \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4a/9edbe7b22e5556a7bfe07c43513e900ff22a1d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4a/9edbe7b22e5556a7bfe07c43513e900ff22a1d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4a/a41d288488e51b950857dd61b688c2d802ec47 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4a/a41d288488e51b950857dd61b688c2d802ec47 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4a/a5685dba1d42037999409a0f02dbcef88d7b7a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4a/a5685dba1d42037999409a0f02dbcef88d7b7a differ diff -Nru x-kit-0.4.2.3build1/.git/objects/4b/4198d9779aa3855cd9b684ad5d4ef111a9526b x-kit-0.5.0/.git/objects/4b/4198d9779aa3855cd9b684ad5d4ef111a9526b --- x-kit-0.4.2.3build1/.git/objects/4b/4198d9779aa3855cd9b684ad5d4ef111a9526b 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/4b/4198d9779aa3855cd9b684ad5d4ef111a9526b 2011-05-31 15:41:16.000000000 +0000 @@ -0,0 +1,4 @@ +x¥ŽA +Â0E]ç³$™4ÓDמA¦Ó©Ú¤Ôx‹Áåû<>OÊ<§ +HvWWU† Á#7ÔÅ^]rÈ%zÏãЉøV[ +Î,¼j®šQ|£¼™aÇb¢·LDaŒØ{l ¿ë³¬p™z]k[šJV8òó—Ϲä$<¤Ì'pÞR ÔP„½EkͶn¹Uÿ>2×I9Ã{‡ÖûR^©¦’Í,&TÊ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4b/893c459faaec1f78b642862e1c9c9f95dc48a9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4b/893c459faaec1f78b642862e1c9c9f95dc48a9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4b/ac523b34ea2e42fcb3e65c0729c3046c46d5cb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4b/ac523b34ea2e42fcb3e65c0729c3046c46d5cb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4c/3c4268f1fee9d982c9c098c25e7df761230eb2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4c/3c4268f1fee9d982c9c098c25e7df761230eb2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4c/9c9673749cb319c4ddc075bd24a31f19dee1e6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4c/9c9673749cb319c4ddc075bd24a31f19dee1e6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4d/51933b8e416d6aaf2f03a785de96f2ecb29998 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4d/51933b8e416d6aaf2f03a785de96f2ecb29998 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4d/5f21511ac2537558fb27c3ae70ec7fa567ed77 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4d/5f21511ac2537558fb27c3ae70ec7fa567ed77 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4d/6028d2056628b1bb6ebc998d811e15e203045d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4d/6028d2056628b1bb6ebc998d811e15e203045d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4d/d16d9c8b94a8e4a960f2161776ea09332ed91f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4d/d16d9c8b94a8e4a960f2161776ea09332ed91f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4d/ffcc378a2bff692efa73b327b0c7de555c9dba and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4d/ffcc378a2bff692efa73b327b0c7de555c9dba differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4e/5f50fa04ddde19818ccb5ce1a70bf358f4db51 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4e/5f50fa04ddde19818ccb5ce1a70bf358f4db51 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4e/7fe140d961e9d76eec781f7163192cce4bf81f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4e/7fe140d961e9d76eec781f7163192cce4bf81f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4e/eff48d354b9caecf1de990e04ed983601f60fe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4e/eff48d354b9caecf1de990e04ed983601f60fe differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/4f/b293b5fac0774e31d8f248887329bf9cb8807c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/4f/b293b5fac0774e31d8f248887329bf9cb8807c differ diff -Nru x-kit-0.4.2.3build1/.git/objects/50/685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 x-kit-0.5.0/.git/objects/50/685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 --- x-kit-0.4.2.3build1/.git/objects/50/685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/50/685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 2012-06-05 10:55:41.000000000 +0000 @@ -0,0 +1 @@ +x¥ÎMnà †á®9Åì+E€ù•¢(=@1† ƒEðýkµGèòýŸêû^&è¨?æ`ÜÂÉ™Fc­JìœaJž“ ˜³ ÆØ¨ÄƒÛ„D£ÍZRYI§ÉÇÕ)R«²ä)²ö9{çÜú€¯ºò˜^¥öÆpÇ¿¾í¿ý$l½Âz£¾?@-KqñJ§ÔRŠk½¸“ÿ}$^¥]Ú°}ó.Ñܨ·9z…\*6 ÊØÎz†qV~‹µò`z \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/50/d78ba9a3f72c26020c2da53821cf6ceb4b8370 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/50/d78ba9a3f72c26020c2da53821cf6ceb4b8370 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/50/f48a59c3cb833d18d5f3bda7b1f2e8ab2f0c88 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/50/f48a59c3cb833d18d5f3bda7b1f2e8ab2f0c88 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/51/163b93582838156d05d5f4867dd914e3a4c33e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/51/163b93582838156d05d5f4867dd914e3a4c33e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/52/b36da89f2f0d5946f7ff5586844e7537fe7166 x-kit-0.5.0/.git/objects/52/b36da89f2f0d5946f7ff5586844e7537fe7166 --- x-kit-0.4.2.3build1/.git/objects/52/b36da89f2f0d5946f7ff5586844e7537fe7166 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/52/b36da89f2f0d5946f7ff5586844e7537fe7166 2011-05-24 14:54:24.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽAj!E³öµÔVÛ†2„Ü ,Ë¡Û +¶¹dr„ìþ{‹Ç'9Ž:ÀÆð2:3 ™6Ôˆ&£ö¡,k6°a,ÖQáì6¨Õ7vnS`—u°6ùâÈ¿­z6•`ÖR6ŸMòhþŒ‡t¸í‰ûø¨»4†WüãëñäwÂ&­îW’ã Ì2Ã.Æ%ÂE[­Õ´óîà‡ÔK¿c«'Ãx0d¡sôÚî'HyóîÜŸØOîêé°^É \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/53/5274428cd6cc75698c40ab5dd7ff3f958a58c8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/53/5274428cd6cc75698c40ab5dd7ff3f958a58c8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/53/918adc90d147375d062c61b389e327fc6c84ea and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/53/918adc90d147375d062c61b389e327fc6c84ea differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/53/96927cda5ee5453d36ea9dfcd53970408e9b59 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/53/96927cda5ee5453d36ea9dfcd53970408e9b59 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/53/d2fbd94d630309104e33f3dcd6d84d292265e5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/53/d2fbd94d630309104e33f3dcd6d84d292265e5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/54/5e3487a6caba686c1eafbe7e9d18905a0cbfa8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/54/5e3487a6caba686c1eafbe7e9d18905a0cbfa8 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/54/fc34ea18c5fc1a9e28d1a62230a6665f82b327 x-kit-0.5.0/.git/objects/54/fc34ea18c5fc1a9e28d1a62230a6665f82b327 --- x-kit-0.4.2.3build1/.git/objects/54/fc34ea18c5fc1a9e28d1a62230a6665f82b327 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/54/fc34ea18c5fc1a9e28d1a62230a6665f82b327 2011-05-31 15:40:15.000000000 +0000 @@ -0,0 +1,3 @@ +x¥Ž] +!…{v÷=Ç_ˆ¨Ñî资QÃlÿI-¡Çï;‡Ãñ5çÔA(³ë|4s°RŠYãJ:H§Éºà¥T4& +Ž#{b£ÒA¹(Vky2é– p-qFÌÌè‰á»?jƒó¶Rë.i«…à€?žò—OK-Éã6ùš0/\[¥%w°ç‚s6ì¸Ûéï!v£‚™àNýZ_©§ZØõTÑ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/55/6d46fd643d3d8881b74bd72cdcfcf86e64ccae and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/55/6d46fd643d3d8881b74bd72cdcfcf86e64ccae differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/55/f1707fbd23c2b37635bc6f14fa7fb60f71d561 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/55/f1707fbd23c2b37635bc6f14fa7fb60f71d561 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/56/39d1061edd6349fad81f8f7ea69ace7a38f84b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/56/39d1061edd6349fad81f8f7ea69ace7a38f84b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/56/56d31e8cb98b6616f9111c7a8a6eb85041a552 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/56/56d31e8cb98b6616f9111c7a8a6eb85041a552 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/56/702a0bf85eab8dde381a72741c2774f073738a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/56/702a0bf85eab8dde381a72741c2774f073738a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/57/290c8fe920414576754a3be5240030ef9e39ca and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/57/290c8fe920414576754a3be5240030ef9e39ca differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/57/6c6686fed3dd486042d11fb97061b323167a5b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/57/6c6686fed3dd486042d11fb97061b323167a5b differ diff -Nru x-kit-0.4.2.3build1/.git/objects/57/9916919f9a377a303717ee113f91f02a503ecf x-kit-0.5.0/.git/objects/57/9916919f9a377a303717ee113f91f02a503ecf --- x-kit-0.4.2.3build1/.git/objects/57/9916919f9a377a303717ee113f91f02a503ecf 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/57/9916919f9a377a303717ee113f91f02a503ecf 2012-06-05 10:55:10.000000000 +0000 @@ -0,0 +1 @@ +xµ‘Ak1…{Ö¯˜C6xµÁ¢Æ,mhBo!`p¹jµãìY#m°Úßín²Á”B{H ÞIo¾©­¯a½Z}ÙúŽ Vp()‰-šDÞUŽ©õNl˜æ\Á¥­‘“‡²Þ!ÌRDK>Íá›ý`üЖ JJb›´k47±¸CŽCv%×ò\Ü›¡‡=çË9&C8J.ʼnÅÕsŽÑ¦bU–Æ7(­îœiƒn¤ÃTþ> RÂÎ3¤a¯…Îê~<àwÐ'’Æ»ìÈb„Ùˆ–s÷Å5% ø¿Hyݶùf^ý¯ïÂÓH½ÿ¹×ÃØ½üƒƒúgjjü“H¨Ï ¡þJâxq/n \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/57/aab133c72d16ea46f8cf8752577a40b58d01ca and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/57/aab133c72d16ea46f8cf8752577a40b58d01ca differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/57/e6b8dc1459ff1eae293da9b9612be1750a5373 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/57/e6b8dc1459ff1eae293da9b9612be1750a5373 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/58/60e2cc00e985df0a01c8e12cd0b90559e54906 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/58/60e2cc00e985df0a01c8e12cd0b90559e54906 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/58/7ecd76b686e757cb566a9728a254fed1520bb9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/58/7ecd76b686e757cb566a9728a254fed1520bb9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/58/ce9d447343ea521c050ee580126ce8bf28ccf0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/58/ce9d447343ea521c050ee580126ce8bf28ccf0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/58/e39fb26cc203136352976373baa2defb01bc82 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/58/e39fb26cc203136352976373baa2defb01bc82 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/59/9ebe636071b310193b85a912e1556899585414 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/59/9ebe636071b310193b85a912e1556899585414 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/59/f2b879ecca4d7493d5af778e0eca46b8771ace x-kit-0.5.0/.git/objects/59/f2b879ecca4d7493d5af778e0eca46b8771ace --- x-kit-0.4.2.3build1/.git/objects/59/f2b879ecca4d7493d5af778e0eca46b8771ace 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/59/f2b879ecca4d7493d5af778e0eca46b8771ace 2011-05-31 15:37:58.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽAj1 E»ö)´/ÙÙc(!=@7é U¢†±]&Îý;´GÈò}xŸ'£µ:!½Ì]–œRö²pAN˜Í[ò´š™ÈbÅð#Eï~x×>‘H£i°È^D°+htX$å+k)뢎ó{ìð¾ÝtŸ>ê6ºÂÿó©ýñE¸^…·“Œv1­”BöðŠÑë‘;õé#wÕÎM¡Þ?UfÝýKRv \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5a/13901ea576f9a65ff13ad3f3ab6d0f29d746b0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5a/13901ea576f9a65ff13ad3f3ab6d0f29d746b0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5a/6c9080353dc3c73a3a4264ba2990cde6c238b8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5a/6c9080353dc3c73a3a4264ba2990cde6c238b8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5a/bf03f745d2a21f3705f12547a13957c697177b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5a/bf03f745d2a21f3705f12547a13957c697177b differ diff -Nru x-kit-0.4.2.3build1/.git/objects/5b/68f579255ee939c84d78cb565225590b71da30 x-kit-0.5.0/.git/objects/5b/68f579255ee939c84d78cb565225590b71da30 --- x-kit-0.4.2.3build1/.git/objects/5b/68f579255ee939c84d78cb565225590b71da30 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/5b/68f579255ee939c84d78cb565225590b71da30 2011-05-17 10:26:09.000000000 +0000 @@ -0,0 +1,4 @@ +x¥ŽKjÃ@ @»žSh_jdÍÏ¥4(ä +ªF%Ûc¦*!·¯IŽå{‹Ç“¶®³e|±® +‰QŒ gCßú5vøX³ì:à³­£ œéŸOÛ¿3õÑÓzâ±½ N,¼Zo­9Ö#Wåi‘¹èïÚîÚjû‘;MTÊuÜ´n\pXx \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5d/bf2a8498092c5d423b5c3cc72ed0dce60bff5f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5d/bf2a8498092c5d423b5c3cc72ed0dce60bff5f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5e/2665cbd058a6633254da74ed4a4a06634c9cc0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5e/2665cbd058a6633254da74ed4a4a06634c9cc0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5e/7f03609dd8dc33b18f9838a7aff98e6d40f321 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5e/7f03609dd8dc33b18f9838a7aff98e6d40f321 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/5f/7dd26efca6b9537824c853c27fd82429b384a1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/5f/7dd26efca6b9537824c853c27fd82429b384a1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/60/1bddac34dbd9cba361e1d2b094d3157ad523fd and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/60/1bddac34dbd9cba361e1d2b094d3157ad523fd differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/60/aac966cc748f533d495f839fd0bb16784e96a3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/60/aac966cc748f533d495f839fd0bb16784e96a3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/61/15e4134003930e85cf286ff8e1f3834cb9efcb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/61/15e4134003930e85cf286ff8e1f3834cb9efcb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/61/82f65e1a32ea826366eaaa20517b400c4a4889 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/61/82f65e1a32ea826366eaaa20517b400c4a4889 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/61/bac8ce9020c22216ee1e1243004aaa1685e53a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/61/bac8ce9020c22216ee1e1243004aaa1685e53a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/62/0e0df9863d7ea514af504c2f057b6534187f25 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/62/0e0df9863d7ea514af504c2f057b6534187f25 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/62/23882466340b05761f9a24019b33ae3c1d4605 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/62/23882466340b05761f9a24019b33ae3c1d4605 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/62/7331435ec20befac0d2f1c4689d50bacef9774 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/62/7331435ec20befac0d2f1c4689d50bacef9774 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/62/fef40da401b53c3be8f1ee7ce42fe3fffaded9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/62/fef40da401b53c3be8f1ee7ce42fe3fffaded9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/63/d6ab7794c0357c7c9c452d1d6d6ea21f83ee68 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/63/d6ab7794c0357c7c9c452d1d6d6ea21f83ee68 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/63/ed689e187426538c93d0a332f8524f3245bb00 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/63/ed689e187426538c93d0a332f8524f3245bb00 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/64/a1a1f646c33506302cbc848a2f701b5bfef7d7 x-kit-0.5.0/.git/objects/64/a1a1f646c33506302cbc848a2f701b5bfef7d7 --- x-kit-0.4.2.3build1/.git/objects/64/a1a1f646c33506302cbc848a2f701b5bfef7d7 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/64/a1a1f646c33506302cbc848a2f701b5bfef7d7 2011-06-01 13:49:18.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽMJD1„]罆ü½¼×0ˆ³qçÆt’n ¼$3x}ƒswõEU¥^k™`ƒšƒr– }ÌqÉ(N‡ýȆ6/È")àò-jõEƒÛ„݈X š´Mþ·åƒÑy\4z#‹9šx8E÷ùÙÜÎÈcvx/go Wzð¥þñk¢Ö[It^R¯/`Ö<º`üÏÚj­–»îNþw‘úàF•ág”Éoåd ï¨_ÕôWd \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/65/234683c4e79aa015a6b77bda998a8649875b82 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/65/234683c4e79aa015a6b77bda998a8649875b82 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/65/802f44d304918fd91622f471b937443e9692da and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/65/802f44d304918fd91622f471b937443e9692da differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/65/ede9c060e71fd645c7919aa663a49fde213f6a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/65/ede9c060e71fd645c7919aa663a49fde213f6a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/67/428349c22f2d8fdfb80e056bbea6bae9ddee69 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/67/428349c22f2d8fdfb80e056bbea6bae9ddee69 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/67/888b52bd163e9cc9cb1f59d19911146cede2f6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/67/888b52bd163e9cc9cb1f59d19911146cede2f6 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/68/4e328111549aa77f59a73b1b60c2ca58b2f722 x-kit-0.5.0/.git/objects/68/4e328111549aa77f59a73b1b60c2ca58b2f722 --- x-kit-0.4.2.3build1/.git/objects/68/4e328111549aa77f59a73b1b60c2ca58b2f722 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/68/4e328111549aa77f59a73b1b60c2ca58b2f722 2011-06-06 15:05:13.000000000 +0000 @@ -0,0 +1,4 @@ +x¥ANÄ0 EYçÞ4r’6N%„±æ •{ R“T!s +åû‹§÷s+eàÈ=® +“tQÎ!¸˜lJAS^–(ÑZµ³:ô8ÍbîZÈDJ„˜%ð]fŸ“,d‘9xôq"I‰‚áÇøln{Ò>¼o{« +ÏüÇ×ò˯™k«[æýš[yë‘<9Btˆæ\ÏÜ¡ÿ™·]¹Â〵hÿÐõÇ|RYÛ1¶V¿Ì7Þ]YR \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/68/c6fd31cd331aa680f0abf739b6478f8f9a6141 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/68/c6fd31cd331aa680f0abf739b6478f8f9a6141 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6a/022b4329cc69682e6c94eac593e7dbfe29f0e5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6a/022b4329cc69682e6c94eac593e7dbfe29f0e5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6a/0c30da4225a00dcced2c446865242e92100cd0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6a/0c30da4225a00dcced2c446865242e92100cd0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6a/207a30c1afebfb91ad10e871295f5e8d1f420f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6a/207a30c1afebfb91ad10e871295f5e8d1f420f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6a/97163ee33329b589b0a158941fe93638281f0e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6a/97163ee33329b589b0a158941fe93638281f0e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6a/b8cc56d19a57c322e2f51706eb306a7c7f6419 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6a/b8cc56d19a57c322e2f51706eb306a7c7f6419 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/6a/cd6a8f2ef5044e659a2a4f8165053ce6fe4cca x-kit-0.5.0/.git/objects/6a/cd6a8f2ef5044e659a2a4f8165053ce6fe4cca --- x-kit-0.4.2.3build1/.git/objects/6a/cd6a8f2ef5044e659a2a4f8165053ce6fe4cca 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/6a/cd6a8f2ef5044e659a2a4f8165053ce6fe4cca 2011-06-07 15:09:17.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽAnà E³æ³êÌ€1 EQz€îz ª%–C¹}ô]}½¿xz©•2wГ?ôMbÖHD:Š ·˜r´†É…ä5qöžƒŸGµò&µƒå˜Ñd7Ú›fMÙ8´™´“ Ö¥)8r.*~ôŸ¶Áçeë ¾æ¥U3ÿñPÞ|M\[/Cjådp73NpD¨öwÏíòo‘ú–²B—{¿ŸðãµÃú„´Wx¬ê1`VJ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6b/9a5133d0c09ec7f01ea723298c029bc264e717 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6b/9a5133d0c09ec7f01ea723298c029bc264e717 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/6b/acbed517ea5840de0cb82f0d58a7d10df18273 x-kit-0.5.0/.git/objects/6b/acbed517ea5840de0cb82f0d58a7d10df18273 --- x-kit-0.4.2.3build1/.git/objects/6b/acbed517ea5840de0cb82f0d58a7d10df18273 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/6b/acbed517ea5840de0cb82f0d58a7d10df18273 2011-06-07 13:31:22.000000000 +0000 @@ -0,0 +1 @@ +x¥Kj1D³Ö)zo0R«õ!l³qN µzbÁH2c9çÏ!›‚W‹GÖê ô4w ˜´+žP¼u«#Ñ¥Âè#-¦DoÉ^Ô-íÒ'ÄÌl9ØÅèu-šíŽôÙ#ºè³0'•ó:vxÛ²ìsÀGÝFxN|n¿üÊ©^9mgíŒÕœ¥àà¤Qku´ÇÜ)ÿ©‹ôÔ¾d~òq¼¿Ëwe¹È–fý~­·»ú&ÆY³ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6b/c3f63af03c38c2cb97d63c0de2a8d3ecc0d9fc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6b/c3f63af03c38c2cb97d63c0de2a8d3ecc0d9fc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6c/49ed1821b269b287a1c0ba11292b8ce3586456 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6c/49ed1821b269b287a1c0ba11292b8ce3586456 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6c/bf551c1a50a19bb115ccb001a3df3ef2a785db and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6c/bf551c1a50a19bb115ccb001a3df3ef2a785db differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6c/bf6e9a37af84e415e5ceab94733abcd40d7f9c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6c/bf6e9a37af84e415e5ceab94733abcd40d7f9c differ diff -Nru x-kit-0.4.2.3build1/.git/objects/6d/61c4e02c6c6432010b39e73ec045d55301ba1b x-kit-0.5.0/.git/objects/6d/61c4e02c6c6432010b39e73ec045d55301ba1b --- x-kit-0.4.2.3build1/.git/objects/6d/61c4e02c6c6432010b39e73ec045d55301ba1b 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/6d/61c4e02c6c6432010b39e73ec045d55301ba1b 2011-05-17 10:51:12.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽQjÃ0Dû­SìÁÈ»’6‚RÒzi³!Û2²BÉí+Ò#ôoÞ O꺖Èþ­7UàÛ,”…D½saäÓÌ|uL$.kĘ4¸(Þì©éÖ1Ž-œ’¨ËÈ™nˆ–I}rWrb3ÍÙŠI~¯ ¾–¬­W¸”¥n +é§õÅgI[ÝŠ¤e’º~ÂLÖŒ. ¼[´ÖŒvèvý÷‘ù®­CÑ㨭è1íO^û“à§ô;`¯d~àXÔ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6d/aaf9d8d6cb39d6ac0c15cff4061c8d78f2219d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6d/aaf9d8d6cb39d6ac0c15cff4061c8d78f2219d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6e/61a5e379d0e495d6e8cb2cbdc9ad987766cd65 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6e/61a5e379d0e495d6e8cb2cbdc9ad987766cd65 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6e/86ed91178e72cffb7ba840b784e9677e5e38e7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6e/86ed91178e72cffb7ba840b784e9677e5e38e7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6e/ca8cf55405658d7400c0919f8731a04cc9491a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6e/ca8cf55405658d7400c0919f8731a04cc9491a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6e/de6e13c91378a0de9ed97db2b35c144a338357 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6e/de6e13c91378a0de9ed97db2b35c144a338357 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6f/37a085bbe2783feca39b686f327e78ba1381a7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6f/37a085bbe2783feca39b686f327e78ba1381a7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/6f/7a46e85b59e6b13689b999a692d1420e12652e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/6f/7a46e85b59e6b13689b999a692d1420e12652e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/70/6fd1afa7c39c842ce46bda463fec48eef3ad0f x-kit-0.5.0/.git/objects/70/6fd1afa7c39c842ce46bda463fec48eef3ad0f --- x-kit-0.4.2.3build1/.git/objects/70/6fd1afa7c39c842ce46bda463fec48eef3ad0f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/70/6fd1afa7c39c842ce46bda463fec48eef3ad0f 2011-05-17 11:21:21.000000000 +0000 @@ -0,0 +1 @@ +x+)JMU022`040031Q0Ð-I-.Ñ+¨dè/wÞü«IºæÊ­=wvkod›hPUdWtèó/þÈ”ã÷þ7¯v¹ò¸uö6¨¢øøÌ¼Ì’øxYÏæ>š½éâ5gïnÍuåQ7=é žTfnjªPTšÇ |üN¢þû³–/±²_ÀùrÉI¨)Å©%%™yéÅ SYÉûº& fД¦·hyt9.Þ¡Åì“\½0.a Á£Íd³¡/ýè^Ž,S;¼•£7GúãKýåg¦Ö[a:.ÜëX!zt!À=:DsÚó®Ê¿CæµCë +tÆêP˜r–oRGŸ +¥s{ÄŸô.pãY†ÞÌäØ_ò \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/82/08b1154e1e16687887086b8e8ce587525b61f7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/82/08b1154e1e16687887086b8e8ce587525b61f7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/82/25620be31d1dcae76d0e05506beccc0ab76616 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/82/25620be31d1dcae76d0e05506beccc0ab76616 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/82/31137c65ede9da6439b36a636a3f5154b26f2d x-kit-0.5.0/.git/objects/82/31137c65ede9da6439b36a636a3f5154b26f2d --- x-kit-0.4.2.3build1/.git/objects/82/31137c65ede9da6439b36a636a3f5154b26f2d 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/82/31137c65ede9da6439b36a636a3f5154b26f2d 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1 @@ +x¥OËjÃ0ìÙ_¡[ZJ‹v×^KJû¹÷ºÒ®C"¡üM_ÐÓ0̃™¼ÞnKwüЛ™“ ¦&'à˜æ@P d3NV8$šÐ˰I³Ú¢òe,Á´Ì8*J  <9¡%"øóO¤X’ÆQ™<ù~4¢Bš•5ìшȓMƒÜûemî㚬õÕ–ëZÍ凿ÿâË'zx}¬»öôæ€( Ì!²{öèý¿ßuûoÏp²v6—šÔ|q‡Í¶ppKÝw©¥Eêðö¨b¤ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/82/459a89ad5977da47ea73da23a6b35018128c99 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/82/459a89ad5977da47ea73da23a6b35018128c99 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/82/5c5a3f165e224d7f579a2102123e0ef664696b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/82/5c5a3f165e224d7f579a2102123e0ef664696b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/85/1207af5c3d4f59cac2812fe30b880049895c5c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/85/1207af5c3d4f59cac2812fe30b880049895c5c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/86/166991a249fbb89c56ffb11535ab6483e61553 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/86/166991a249fbb89c56ffb11535ab6483e61553 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/86/5d2e41db09fafc97bf1ce9c2bacf342cc7816f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/86/5d2e41db09fafc97bf1ce9c2bacf342cc7816f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/87/246b4307307a7becbab8e217aa06c07b852bf1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/87/246b4307307a7becbab8e217aa06c07b852bf1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/87/8be055eb985ec024f2b34e15795dc1ecbd54b1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/87/8be055eb985ec024f2b34e15795dc1ecbd54b1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/87/de910636edb830367842148d6adc93b8bf834f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/87/de910636edb830367842148d6adc93b8bf834f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/87/f7e79aa7150223f9439f25427571710c3b7c9e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/87/f7e79aa7150223f9439f25427571710c3b7c9e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/88/38a496f562efa06b1f450c469b6c81472ff879 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/88/38a496f562efa06b1f450c469b6c81472ff879 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/89/940d8f3d077bb637ea5d971a5fe425db26f133 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/89/940d8f3d077bb637ea5d971a5fe425db26f133 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8a/fa1aa0bd3a629612c21104962b0c771268b60a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8a/fa1aa0bd3a629612c21104962b0c771268b60a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8b/cc3c73910ffd0c3f7d0c6b622586bec215eb29 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8b/cc3c73910ffd0c3f7d0c6b622586bec215eb29 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8b/f8e9dfc4a461101984af46afe921ce5f714bcc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8b/f8e9dfc4a461101984af46afe921ce5f714bcc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8b/fb19708a5f355dba67b3f38f17e0ab66e01230 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8b/fb19708a5f355dba67b3f38f17e0ab66e01230 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8c/5ad9bee1722aeb08646bc6c04267e44a54965e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8c/5ad9bee1722aeb08646bc6c04267e44a54965e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8c/aa143e33d0a5409d6d8cee93a3d6b18f1fe280 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8c/aa143e33d0a5409d6d8cee93a3d6b18f1fe280 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8c/f56a1e1237464693748e278a29f4901d113ab8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8c/f56a1e1237464693748e278a29f4901d113ab8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8d/9245a124b26c643ebab7ad57ae23318f86860c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8d/9245a124b26c643ebab7ad57ae23318f86860c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8e/2081d4b9bf26579e05ef480099c9885e7cac3c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8e/2081d4b9bf26579e05ef480099c9885e7cac3c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8e/259704a28ad0531880e32873b383a33ba83023 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8e/259704a28ad0531880e32873b383a33ba83023 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8e/4254916abaae6f76468bc4fee27a413f9d50ba and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8e/4254916abaae6f76468bc4fee27a413f9d50ba differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8e/b644ee517cf6c0017a8fb2db26d0cb9148579a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8e/b644ee517cf6c0017a8fb2db26d0cb9148579a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8e/c00c5aac019846ce96cb69ec37a815fbd6835e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8e/c00c5aac019846ce96cb69ec37a815fbd6835e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8f/7743b853fa821b7cd4dabcdcbb2bb106913071 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8f/7743b853fa821b7cd4dabcdcbb2bb106913071 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8f/b484f16c9e27112203dbbc08147b918fa74cf4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8f/b484f16c9e27112203dbbc08147b918fa74cf4 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/8f/f036325c8ee208c733038b0fec7a855f6ae336 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/8f/f036325c8ee208c733038b0fec7a855f6ae336 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/90/db23a425a5022d25e0f959ca92c6356c5e5a1d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/90/db23a425a5022d25e0f959ca92c6356c5e5a1d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/91/17c4339a41d26e7811780e7eeb600b07945f75 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/91/17c4339a41d26e7811780e7eeb600b07945f75 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/91/453baae67025f87a82552cde406f15ddac7ffc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/91/453baae67025f87a82552cde406f15ddac7ffc differ diff -Nru x-kit-0.4.2.3build1/.git/objects/91/552056d1ce0ff8aa99a649c823ccddebbbc7c3 x-kit-0.5.0/.git/objects/91/552056d1ce0ff8aa99a649c823ccddebbbc7c3 --- x-kit-0.4.2.3build1/.git/objects/91/552056d1ce0ff8aa99a649c823ccddebbbc7c3 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/91/552056d1ce0ff8aa99a649c823ccddebbbc7c3 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1 @@ +xµ‘ÑK1Æ}Î_1>ÜÁmV.*ÇÒJ•¾‰pp"¾f³sî`. “¬Ü)íßnvWW¤Zh!ð}“ä›ßÔÖ×°:[m|Ç+Ø”ÄM"ï*‡Ôz'ÖLž)*ð¡7´WÙ¦øŽ]+h°nÑd˜]|…3y"Õj¾x»_4ø4èKy:‰ªW@.Ùä½7:óF®àÒÖÈÉà Yïf)¢%ŸæðEÎn0¾iK%¥ ±IÚ5š›XÜ!Ç!»’+y"î‹õÐÇžó-åùd¨OŽ’Kqgbqõœc´)…X•¥ñ J«;gÚ é0•??)÷ž‚æˆ\îr¥kmõC&:",ö=×K6-¥ ·ãìhkÅðøe,¬Þ” 8~ÙQ4“k£aP¥š5`ëR‹°ÓŽBgu?ðÛAëSIãÝf#XÎÜ×”€âß=!äuÛæ{yõ?¾? O#ñ÷_ÃØ¹ü…úcjjú¿PPÿž‚ú-…WŒè,% \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/91/c7dced7aff86f8605391553cd51ecfb48c8ad9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/91/c7dced7aff86f8605391553cd51ecfb48c8ad9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/91/fa1f3dc7573fdd833bd17e71d0f68f5d0d71ca and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/91/fa1f3dc7573fdd833bd17e71d0f68f5d0d71ca differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/92/5c637f03b94de8d4daca2b41c6af3e45a3a237 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/92/5c637f03b94de8d4daca2b41c6af3e45a3a237 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/92/cc42af365582a1d9de64dcae51fdf57825d790 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/92/cc42af365582a1d9de64dcae51fdf57825d790 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/93/54af85ec56dff11f78e359adfb19b1e4860e5c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/93/54af85ec56dff11f78e359adfb19b1e4860e5c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/93/f2110c3c7b374d1f811fe09deaca3739c5789c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/93/f2110c3c7b374d1f811fe09deaca3739c5789c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/94/a0b45ff37a93e32abd18856d7cafa711efb704 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/94/a0b45ff37a93e32abd18856d7cafa711efb704 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/95/068ced5c40f1bb33ed8e917005e917eaffe9a3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/95/068ced5c40f1bb33ed8e917005e917eaffe9a3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/95/07c2f8103e899fe297f7793ba91a87ae98d573 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/95/07c2f8103e899fe297f7793ba91a87ae98d573 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/95/65fbcfb29f5d9362de56e03c76d5410514ad91 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/95/65fbcfb29f5d9362de56e03c76d5410514ad91 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/95/84bf300a207d647937e644ef49f8fcd61ed94f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/95/84bf300a207d647937e644ef49f8fcd61ed94f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/95/dfa8b1af0bd808ce08aa48e2750982ee51366a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/95/dfa8b1af0bd808ce08aa48e2750982ee51366a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/96/0a8cc2113774c97a3c00b158da08ba14da5d01 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/96/0a8cc2113774c97a3c00b158da08ba14da5d01 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/96/a302a0b82749b39d69d5681597c7e799dccdec and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/96/a302a0b82749b39d69d5681597c7e799dccdec differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/96/c61f3772a69a3c515878f9cd42b9484f2bd00e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/96/c61f3772a69a3c515878f9cd42b9484f2bd00e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/96/f223f9e21d95047e50791a7783da4461128bc3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/96/f223f9e21d95047e50791a7783da4461128bc3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/97/4a805c28a97c7c1c901546dc9b0303907617cf and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/97/4a805c28a97c7c1c901546dc9b0303907617cf differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/97/89a6c300ab6805d7a5c18132288e3ad0353437 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/97/89a6c300ab6805d7a5c18132288e3ad0353437 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/98/4c5c0a389a5c2581d76298d804c56c0447f36a x-kit-0.5.0/.git/objects/98/4c5c0a389a5c2581d76298d804c56c0447f36a --- x-kit-0.4.2.3build1/.git/objects/98/4c5c0a389a5c2581d76298d804c56c0447f36a 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/98/4c5c0a389a5c2581d76298d804c56c0447f36a 2011-05-31 13:58:29.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽMjÃ0F»Ö)f_²F¿JK×=CÏLˆ©%G¾Ms„,ß÷àãq¯uà"¾Mæ¨(*>º"”Rô%PIE*^ÝŒVbŽ“¹Ó¦m€9pÑÃÓ¤A²çä|Æ«²fÌQ$ ê$ÎÐ>n}ƒ¯uÖmtøYÖÞÎôäSýçO¦ÖÛ´ž¸×˜ÐƬ+Þ­³Öë‘;ôå#ó½*5ØïPéW/}~(¥7óWTVA \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/98/c43e35b8c1bf3baf82865412c3fa8487273ec4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/98/c43e35b8c1bf3baf82865412c3fa8487273ec4 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/98/c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/98/c7cdd1b6bb0683809e5446a2350cfe3d6d70b0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/99/426547e31384fc76ddbecc8a727a418c963251 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/99/426547e31384fc76ddbecc8a727a418c963251 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/99/481b67782895c0087ed3d45c4178c8f6e8b860 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/99/481b67782895c0087ed3d45c4178c8f6e8b860 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/99/bcb16c4b08b10aeb461252600f69c222c15b7a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/99/bcb16c4b08b10aeb461252600f69c222c15b7a differ diff -Nru x-kit-0.4.2.3build1/.git/objects/99/d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 x-kit-0.5.0/.git/objects/99/d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 --- x-kit-0.4.2.3build1/.git/objects/99/d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/99/d4cbfc7bd525ba493c5e123e55dcb0e7f0dca7 2011-06-07 13:16:36.000000000 +0000 @@ -0,0 +1,3 @@ +x¥ŽAJ1E]çÙ C¥:I§atéÆüJ +lè$3žßFàòýÅû/÷Z÷i9º‡9T-»BT4€uêBÌÛêR–Ä Yc" ˜O mÓ +ÁcÛ’€‘^D„˲øèQRt).ΓÁ}~ôao‡è˜Ý¾íGoj¯øãKýåçŒÖÛžq\r¯OÖ-t~sØÈ>™s=s§þ[dÞµ¡ªÝ¿^Æþ­ãµA-æ«¶U= \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9a/92531002b527d6111bc08872a519635218b714 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9a/92531002b527d6111bc08872a519635218b714 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9a/e9a61ab7a2247c3e1b1e90f5e03e74c36fdf1b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9a/e9a61ab7a2247c3e1b1e90f5e03e74c36fdf1b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9b/118b25ff139289064a056dbf4235f568de4aab and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9b/118b25ff139289064a056dbf4235f568de4aab differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9b/4dead63f45b79fc97ecf27a92bb82322bcb5be and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9b/4dead63f45b79fc97ecf27a92bb82322bcb5be differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9b/be2c06131d2193f87e98e84be8d5abb0f7a9da and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9b/be2c06131d2193f87e98e84be8d5abb0f7a9da differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9c/6d51e5e94d7770209ecd4898d1dda51031353d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9c/6d51e5e94d7770209ecd4898d1dda51031353d differ diff -Nru x-kit-0.4.2.3build1/.git/objects/9c/a3ce6e8602875c95069fb65c0fa02fcf8ee10e x-kit-0.5.0/.git/objects/9c/a3ce6e8602875c95069fb65c0fa02fcf8ee10e --- x-kit-0.4.2.3build1/.git/objects/9c/a3ce6e8602875c95069fb65c0fa02fcf8ee10e 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/9c/a3ce6e8602875c95069fb65c0fa02fcf8ee10e 2011-05-31 14:36:41.000000000 +0000 @@ -0,0 +1,3 @@ +x¥ŽM +Â0…]ç³Êä· ˆ(®=C™LS,4I)éý­zßê}oññ¸æ<7PNžÚ–H#‘Ñô̆õñˆfQO 'NN{ƒ+m©4vŠŠ”wè¼&Å™™zLðÁTã䢶AÐÞ^uƒûÓÖ*<祖úq—¿|c*µÌLKÇ5_AêCk• Ψűw[ú[$K¢û +ÚP×6×"Þª,UH \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9c/c691f677e5a16866c1d8c99b01eb2f58dcc566 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9c/c691f677e5a16866c1d8c99b01eb2f58dcc566 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9c/eaae64143d726b35762657862202605e5b422d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9c/eaae64143d726b35762657862202605e5b422d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9d/db124b1b302358755c3aacff4a3b3921a6829b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9d/db124b1b302358755c3aacff4a3b3921a6829b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9e/03fa79d11ec38f8778c60724b78e1d142e0d4c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9e/03fa79d11ec38f8778c60724b78e1d142e0d4c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9e/f401a1e9b89c6dd85501f31e637391ebf889e5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9e/f401a1e9b89c6dd85501f31e637391ebf889e5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/9f/68d6838d1c77fda1dd9885b73e0a368fc9a8c3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/9f/68d6838d1c77fda1dd9885b73e0a368fc9a8c3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/0055e3fe2f3a1ccc092f90f56155c9d7e9984e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/0055e3fe2f3a1ccc092f90f56155c9d7e9984e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/66ea99a0acaadd4e6ec30819cb9874d267099b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/66ea99a0acaadd4e6ec30819cb9874d267099b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/80d2023c8765078d8c91a3d112f10442021f86 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/80d2023c8765078d8c91a3d112f10442021f86 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/a0/939d03d000bb26bac5ffcc0e9b20a0e1fbc97c x-kit-0.5.0/.git/objects/a0/939d03d000bb26bac5ffcc0e9b20a0e1fbc97c --- x-kit-0.4.2.3build1/.git/objects/a0/939d03d000bb26bac5ffcc0e9b20a0e1fbc97c 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/a0/939d03d000bb26bac5ffcc0e9b20a0e1fbc97c 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1 @@ +x¥ÎMjÃ0†á®uŠÙÌhôcR ‡MFÔ`KÁQ¹}L{„.ßoññHÛ÷µÅøÑUPM'ñ)ó˜&™b)d$åPÐ#©µÞ<øÐÚÁ&7IÉÁIFU—ÉgF ¡°Š²scaÃ?ý»°lYÞàkÝZU¸ò_ûoß„k««ð6HÛg°Î¥D!b„ ¢9דÛõßGf¹ß¡ë³?¡œ¬ÇëÔU˜?†hÞ~V \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/a17de71cbd81625d8b702f1ae5c48503057ec1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/a17de71cbd81625d8b702f1ae5c48503057ec1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/c28ac38b5f0d32597b3b2943cc104ed34d2261 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/c28ac38b5f0d32597b3b2943cc104ed34d2261 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a0/eb5ccfe1a9e31b1826205d8fa052b615737a96 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a0/eb5ccfe1a9e31b1826205d8fa052b615737a96 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a1/41c40dbe880b3fab2519ed6cbd364b1fe91a42 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a1/41c40dbe880b3fab2519ed6cbd364b1fe91a42 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a1/6ebf79ebeee3ed941e6f7ae490a57f9c90fcfa and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a1/6ebf79ebeee3ed941e6f7ae490a57f9c90fcfa differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a1/74c40a32798b6a630be272045ba45eb158cb9b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a1/74c40a32798b6a630be272045ba45eb158cb9b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a1/99570d69cfd48731bc293cd291a311693d6adb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a1/99570d69cfd48731bc293cd291a311693d6adb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a2/35c6d1b0790dd6eab0f574aa0cbe1f1b739dc4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a2/35c6d1b0790dd6eab0f574aa0cbe1f1b739dc4 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a2/ad1de9f17a2dae1d2353246e9e72b6686be2c6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a2/ad1de9f17a2dae1d2353246e9e72b6686be2c6 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/a2/b4d3f760014160d7a49abd6daa76f38fcf4ec8 x-kit-0.5.0/.git/objects/a2/b4d3f760014160d7a49abd6daa76f38fcf4ec8 --- x-kit-0.4.2.3build1/.git/objects/a2/b4d3f760014160d7a49abd6daa76f38fcf4ec8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/a2/b4d3f760014160d7a49abd6daa76f38fcf4ec8 2011-05-17 10:49:26.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽAjÄ0 E»ö)´/ Ù–m(¥=@¡W°… Äq0¦sû†ö]¾Ïçñ¸·¶*`tO:D@ +-S¦‚$Á'B‡.á"è9Z¿ )ÅK6G²+Ä$s ø<û9Ç™rͳ_ÖÄž©²õT}4å¦×>àc«2´Ãçºõ]àµüñÔ~ùËÞ÷•Ë6qoopq6f"<[´Öœë™«òo‘ùêCÁ¾ÈwiÇ&Óñ€³êx8¸¯zÔîÌÂsWŒ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a2/f1fc1d711994faed685320996b582c0ef0ff82 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a2/f1fc1d711994faed685320996b582c0ef0ff82 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a3/2e3fe49f4ba7efa66990c41a0b2deb7cfe29bd and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a3/2e3fe49f4ba7efa66990c41a0b2deb7cfe29bd differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a3/8f1a982779912b4f73f2fd73d78995bd21bc8a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a3/8f1a982779912b4f73f2fd73d78995bd21bc8a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a4/14d5dab59df6514ff9eb1ba493d91bd1f2baed and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a4/14d5dab59df6514ff9eb1ba493d91bd1f2baed differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a4/53e9cc68fed9c8b1c760053f43502b05f9243d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a4/53e9cc68fed9c8b1c760053f43502b05f9243d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a4/860b471a0d2937683972323008d6316d4d0188 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a4/860b471a0d2937683972323008d6316d4d0188 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a4/b79299ab6d817675a527a1837a445bf681fd1b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a4/b79299ab6d817675a527a1837a445bf681fd1b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/a4/b81c40cce5be91fa44c76258fc2312f2413cbe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/a4/b81c40cce5be91fa44c76258fc2312f2413cbe differ diff -Nru x-kit-0.4.2.3build1/.git/objects/a5/02fd10144e2c8cce2f3940ac5c1ef48882b67c x-kit-0.5.0/.git/objects/a5/02fd10144e2c8cce2f3940ac5c1ef48882b67c --- x-kit-0.4.2.3build1/.git/objects/a5/02fd10144e2c8cce2f3940ac5c1ef48882b67c 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/a5/02fd10144e2c8cce2f3940ac5c1ef48882b67c 2011-05-30 13:41:30.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽAJ1E]絆$•®DQp+‚7¨®T˜f:IÓfîoÐ#¸|ñþ“^ë6ÀÇð0NUXIÉ6IÁ‰”äp!qŒq‹],‘9øÔ6@bÆ#bÊ™JÂäIVuüä-,L‚¹Láû¸öÞöUÏÑácÛ{Sxæ?¾Ô_~n½mÂûEz}‡–"ù0FíëÎmò÷‘ºç²s¶öžóÖ2kž¨¼¿ø|i¥ÌÈ㮯ªˆFâèlNi +VÆQÙåÍGÂ,+Nä&óäUk´9Dç”ØrHâ9G¢œu˜ÕEmRGjøÕïm…ß%éÚ\ç¥U…#¼/oŸ…k«³ð²—VN0Xô!lá Ñlív·ë×Cæ²(Wx=¡ðCo*}nÕüºT¸ \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.git/objects/b0/d782d02275f6f5cda85acfe153013d2b3659cb x-kit-0.5.0/.git/objects/b0/d782d02275f6f5cda85acfe153013d2b3659cb --- x-kit-0.4.2.3build1/.git/objects/b0/d782d02275f6f5cda85acfe153013d2b3659cb 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/b0/d782d02275f6f5cda85acfe153013d2b3659cb 2011-05-30 13:59:55.000000000 +0000 @@ -0,0 +1 @@ +x¥MjD!„³ö½l}öS!s€È Ú¿DxêÃ8‹Ü>29B–_UQT…^k™ ¬~š#%0d(jL6xg=Rvˆv¶LÉ[#7dc”8y¤6!â¦4jÊ+®£ Æ)]v>Ò¦8{”’äžwÁ÷ùÕÜŸÆìðVŽÞ<ó_ëƒ_·ÞJàãz}Ô’vÒŽ\¤’R,uÍéßEâ#5® 8Æ÷s–Þ€[„2¿¡?pþœËŸ÷º^Š_I›\¨ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b0/eeb5f4d95a4b811026bdf687029cf1e812d90a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b0/eeb5f4d95a4b811026bdf687029cf1e812d90a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b2/252a943fbbd73c55ea4f94360520973ae0d24d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b2/252a943fbbd73c55ea4f94360520973ae0d24d differ diff -Nru x-kit-0.4.2.3build1/.git/objects/b2/55f508d52537a8916d70e9e83deba4fb2d3994 x-kit-0.5.0/.git/objects/b2/55f508d52537a8916d70e9e83deba4fb2d3994 --- x-kit-0.4.2.3build1/.git/objects/b2/55f508d52537a8916d70e9e83deba4fb2d3994 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/b2/55f508d52537a8916d70e9e83deba4fb2d3994 2011-05-17 10:26:35.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽMjÃ0F»Ö)fjFšêBIPè$yD ¶eÔ !·hÐÝ÷Þâã•¶m‹€ñø&æ€sÐ6¢-ÉUã´6•Æ$B¬ºRæ}öU©ó.`³ Õúh¬eŽKø˜}(Ù:k†‹˜½ž¡Jw¹µ×5s—_ËÚv†súãiûåKI{Û—’Ö©´í4¡uÆÇ á„Q ;r…ÿ}¤¾[ÐïÂ?2OIÇ“à±È Œ4R/ÕªVl \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b2/86183a2362d0fad75f5dc99973655815bafb5f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b2/86183a2362d0fad75f5dc99973655815bafb5f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/67f33ce34e6b8d2df1c7be51edd1b9ad867fce and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/67f33ce34e6b8d2df1c7be51edd1b9ad867fce differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/9b35756c29be170641aa2daf77cdf932c42077 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/9b35756c29be170641aa2daf77cdf932c42077 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/a059685a2e0c95a55b0cbe8be981affe134173 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/a059685a2e0c95a55b0cbe8be981affe134173 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/a8a10623f5224652e3a2a1310d252b5dfa2bcc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/a8a10623f5224652e3a2a1310d252b5dfa2bcc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/ab4f6ef9267908e04e729518d82508b7b12e95 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/ab4f6ef9267908e04e729518d82508b7b12e95 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b3/b5835804e93f5168b78e4feb6eaada8355bf3e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b3/b5835804e93f5168b78e4feb6eaada8355bf3e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b4/cc19be3e32e9328d3ecb66de3d8cf52d48b696 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b4/cc19be3e32e9328d3ecb66de3d8cf52d48b696 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b5/00621101593659206a358b80a121e13cd8daf8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b5/00621101593659206a358b80a121e13cd8daf8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b5/3a275718f150afa1f501a7656765c8034690ba and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b5/3a275718f150afa1f501a7656765c8034690ba differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b6/6c57132ba9bbb0c1ca4df023446c93c0368811 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b6/6c57132ba9bbb0c1ca4df023446c93c0368811 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b6/e3ded4629da776495a979d3c73e3f2b30d6861 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b6/e3ded4629da776495a979d3c73e3f2b30d6861 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b6/e464cd08fc841ccf81356c1a37bce75efe5066 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b6/e464cd08fc841ccf81356c1a37bce75efe5066 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b7/32ab7015ea253672c9286534c413655a16d4f5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b7/32ab7015ea253672c9286534c413655a16d4f5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b7/6a902c6cd4e30e046dfd9676794bc36fdfe43a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b7/6a902c6cd4e30e046dfd9676794bc36fdfe43a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b8/0bc24c20b37056496b0cc6a3e3f38e80f6422f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b8/0bc24c20b37056496b0cc6a3e3f38e80f6422f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b8/0d93f7c4174148244ed71992375cb392a6deb3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b8/0d93f7c4174148244ed71992375cb392a6deb3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b8/506fd0ce29d879241c318ac78065d98961467c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b8/506fd0ce29d879241c318ac78065d98961467c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b8/ab216e32f9675be9d2c8dcacfb59dd567c8f72 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b8/ab216e32f9675be9d2c8dcacfb59dd567c8f72 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b9/25f4b6468cf785fbdd36f27324affaf7651d3d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b9/25f4b6468cf785fbdd36f27324affaf7651d3d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b9/539fa3d76c34ee724bdb4524c7e3ebb6b042b5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b9/539fa3d76c34ee724bdb4524c7e3ebb6b042b5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b9/6856ab8dff8e98e3038874f99cf92c6ad57e91 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b9/6856ab8dff8e98e3038874f99cf92c6ad57e91 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/b9/c4128423ec7bb6a979ca8046773445a54aa0e9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/b9/c4128423ec7bb6a979ca8046773445a54aa0e9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ba/bc0ce4805c4fdc1fa097a95e33cb3dcd6d5b92 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ba/bc0ce4805c4fdc1fa097a95e33cb3dcd6d5b92 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/bb/41b488f77307626d6239fd12dbd0673466b591 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/bb/41b488f77307626d6239fd12dbd0673466b591 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/bb/8a654ae7f70a0a97959003b6224330b5e676c9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/bb/8a654ae7f70a0a97959003b6224330b5e676c9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/bb/9c31681dc447d42ead862be61311b05230ca61 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/bb/9c31681dc447d42ead862be61311b05230ca61 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/bb/e6bdd3887323162caff173b02cae692c9a251b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/bb/e6bdd3887323162caff173b02cae692c9a251b differ diff -Nru x-kit-0.4.2.3build1/.git/objects/bc/0ba2c2f36b4b2d9680e279355e0cffdcde17bd x-kit-0.5.0/.git/objects/bc/0ba2c2f36b4b2d9680e279355e0cffdcde17bd --- x-kit-0.4.2.3build1/.git/objects/bc/0ba2c2f36b4b2d9680e279355e0cffdcde17bd 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/bc/0ba2c2f36b4b2d9680e279355e0cffdcde17bd 2011-05-31 15:37:51.000000000 +0000 @@ -0,0 +1 @@ +x+)JMU022`040031Q0Ð-I-.Ñ+¨dàÿé\W+ªøf!ÿ“3¿ƒ*^;ži‘ƒ*2„+Š5«åÔ[©Áu6\Rò¿½ãîj[󍢸øÌ¼Ì’øxYÏæ>š½éâ5gïnÍuåQ7=é žTfnjªPTšÇ |üN¢þû³–/±²_ÀùrÉI¨)Å©%%™yéÅ S/ÿ|×Tj™4Íg­Ë'\‚?j˜c€Þ»c=r›½-r_³¥û +ÊãÉP÷6ü˜¶©÷ —X¨ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c0/546db0553f33f8c0591c402c8d50d60c298b05 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c0/546db0553f33f8c0591c402c8d50d60c298b05 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c0/6270044abc75615098c14221b113174bd1a1e2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c0/6270044abc75615098c14221b113174bd1a1e2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c0/ce29655855ee0a65620173801ce03ff2b55127 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c0/ce29655855ee0a65620173801ce03ff2b55127 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c0/d96be13d59e5f5978f1e40f23c2b037509b574 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c0/d96be13d59e5f5978f1e40f23c2b037509b574 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c0/e46f522880eea66c73a1daa3b1351bb96c0d9f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c0/e46f522880eea66c73a1daa3b1351bb96c0d9f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c1/3ba58a8598dd33bec7892c4c5a5cabc3ed7289 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c1/3ba58a8598dd33bec7892c4c5a5cabc3ed7289 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c2/311f284d6f6a0a5deaf595e802db84ab2b3f62 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c2/311f284d6f6a0a5deaf595e802db84ab2b3f62 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c2/3f8e726afa5f855eed4d6f4a35f80b1aec7afb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c2/3f8e726afa5f855eed4d6f4a35f80b1aec7afb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c2/f3f44a1c3c0f5964c7deff83ab44d4e3859bb6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c2/f3f44a1c3c0f5964c7deff83ab44d4e3859bb6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c3/b7023b2450f9a6abf9212942b3157f7a651814 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c3/b7023b2450f9a6abf9212942b3157f7a651814 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c4/3994d10ee9907ee92fbd77843058ae90024e54 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c4/3994d10ee9907ee92fbd77843058ae90024e54 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c4/77aa5cf6822c834888cdf115927a638ce7cdf8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c4/77aa5cf6822c834888cdf115927a638ce7cdf8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c4/78a1f283a0023f9a02b87c3833adb77e3ecf3e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c4/78a1f283a0023f9a02b87c3833adb77e3ecf3e differ diff -Nru x-kit-0.4.2.3build1/.git/objects/c4/9ff5936d904c2e69523956a7cbaeede2d3f60a x-kit-0.5.0/.git/objects/c4/9ff5936d904c2e69523956a7cbaeede2d3f60a --- x-kit-0.4.2.3build1/.git/objects/c4/9ff5936d904c2e69523956a7cbaeede2d3f60a 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/c4/9ff5936d904c2e69523956a7cbaeede2d3f60a 2011-06-06 15:08:01.000000000 +0000 @@ -0,0 +1,2 @@ +xAjÄ0sÖ+æXÆK#ÃrÎÌH'K2Šöÿq²û‚«ŠîXsÞ:Œ<>õ¦ +‚õd=N:Ójç{V NE’œ +©9¤ié&VfĘœ¬ÉR iæEÑšüÄ)vFný«6xÛƒ¶^ácÛkQ¸Ê/ù_£”Z¶(û%Öü!ŒÏ8"š3=çvý§Èóü™÷]¥Àí€%kûÔå×|Ò´Ô£oµ|›ÔdZg \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c5/b27aa7532bc046258bda75c124389e5d05ca70 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c5/b27aa7532bc046258bda75c124389e5d05ca70 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c5/dba1aa3322c8b85507dc00cf025590c93a0721 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c5/dba1aa3322c8b85507dc00cf025590c93a0721 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/c7/d3537338dd6f83826cbe1a920643fa6c3df1cc x-kit-0.5.0/.git/objects/c7/d3537338dd6f83826cbe1a920643fa6c3df1cc --- x-kit-0.4.2.3build1/.git/objects/c7/d3537338dd6f83826cbe1a920643fa6c3df1cc 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/c7/d3537338dd6f83826cbe1a920643fa6c3df1cc 2011-05-30 11:12:06.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽAjÃ0E»Ö)f_’¥IB +Ýv“ž`,[ƒ%wrÿšöY¾¿xï—ÑÚª0½è.èù9{LSòÉ!U‹—(Öš]Ï¡x/æÎ»t3QÄu‰q^pìø°Elj!Ê$Å~è÷Øám›e×ë6ºÀ™ÿùÔþøZ¸¾ÞNe´ 8o)¢Ï.ë¬5ÇzÜUyZdnÒ¹ |‰¾?îÛ‘Tù”¢ëè?æøòV \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c8/8aee3ab06002f725fd5ffea1114b7721b170eb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c8/8aee3ab06002f725fd5ffea1114b7721b170eb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/c8/ab7ce4ab0eebec860c9f5d42ffd9a1f40c847a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/c8/ab7ce4ab0eebec860c9f5d42ffd9a1f40c847a differ diff -Nru x-kit-0.4.2.3build1/.git/objects/c8/cc841b0633273e4d4d3634ccf0695296b40c9b x-kit-0.5.0/.git/objects/c8/cc841b0633273e4d4d3634ccf0695296b40c9b --- x-kit-0.4.2.3build1/.git/objects/c8/cc841b0633273e4d4d3634ccf0695296b40c9b 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/c8/cc841b0633273e4d4d3634ccf0695296b40c9b 2011-06-01 11:02:06.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽAjÃ0E»Ö)f#-e ”†®{† F©A–‚‘{þšöY¾Ïãó¤¯ë2ÀÍámlª@\œÍ>”f¢D S–”ñ™˜ç)i*6˜gÜ´ g ûI‹‘ø<F.‡‹œÚèeFr&îã»op«I·Ñák©½)\ã?Ÿ×?þØz[$Ö³ôõ,¡gç-8¡C4Çzä}ùÈ|V ö'Ã,ù^(©g \pÎÆtœÛéßFìà=`ö@ß—Ò¥0}bŠþ£‘ë±äÆØû)6p [ì½F»u‚ÏÔ m• Ÿ°CÉéÜx +c672®Ôب0¥òE~‚·Ò¯JÝ7à†Œä¿L¸"Ç +æNäÙhÊ$:ŽFØ/*ÏŒÇ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ca/fcd082db4f9104d6aec1470160c109ec647c7a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ca/fcd082db4f9104d6aec1470160c109ec647c7a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cb/1317155bc82e8e11ff2a296ba6d5205edad2e1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cb/1317155bc82e8e11ff2a296ba6d5205edad2e1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cb/af8793a4db4322617f2a1b66bc0a292bb5a892 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cb/af8793a4db4322617f2a1b66bc0a292bb5a892 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cc/ad4fd910988e92372daa62729747d84f1dc1bb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cc/ad4fd910988e92372daa62729747d84f1dc1bb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cd/bd04edf518c48cc4737c1663cddd2b4ddeeaf6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cd/bd04edf518c48cc4737c1663cddd2b4ddeeaf6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cd/dba9bddd807b3a75adb81f198bb05398dc5b72 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cd/dba9bddd807b3a75adb81f198bb05398dc5b72 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ce/0c38d98429e64ce5d3c5caf111f5eb92956218 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ce/0c38d98429e64ce5d3c5caf111f5eb92956218 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ce/32cec4d47e50002a676369ba1a932ca554494f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ce/32cec4d47e50002a676369ba1a932ca554494f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ce/f374eb7f08f345062e7e74631700b120d24825 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ce/f374eb7f08f345062e7e74631700b120d24825 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/cf/71d844216abe6d496e89d93555f77fea20afaf and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/cf/71d844216abe6d496e89d93555f77fea20afaf differ diff -Nru x-kit-0.4.2.3build1/.git/objects/d0/3e0d84ce4d189f1060472a49360c78800e65de x-kit-0.5.0/.git/objects/d0/3e0d84ce4d189f1060472a49360c78800e65de --- x-kit-0.4.2.3build1/.git/objects/d0/3e0d84ce4d189f1060472a49360c78800e65de 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/d0/3e0d84ce4d189f1060472a49360c78800e65de 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1,3 @@ +x•‘Ok1Å{Χ˜C +ݬøìÒJ•ÞŠ â5›Œn0&Ëd¶h‹~öÆU,=ö¿7“7óRºP¨?|X††4pÈv–Å5Ûà ¨\/dY>ê‹ œ˜5Ö™ìkô& M¡3y…žÊçÞ¹ûË +]Ôò‘ìÉÁ8áë“™ÁÏ–÷å0AëÙqNÌUº¦ƒTÀÔ•H`n]ðŽèlà.¼¨«²o…7å¬Fiy"–¬¼Qdb¶BŠí9–=±Îí&¿<š¬ÅJÇlö•Ì*æ:y®ƒAéTãuU+#=r~þc—mkE)ß§Is!JïÔ6¥wÛípÉpJº²œ‚l()Ê9qëñûZXÜÈIÌÕ.ÅxW®à”z¢&Û†^€³%):Â&p…°WÞÖS—/°iÙe:©ƒßXg–ÁÆÿõIñmÚ¸+ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d0/5e01a9272a58242828f94eee3de133b3760a41 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d0/5e01a9272a58242828f94eee3de133b3760a41 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d0/60ae292bba7a022ef6d460206f7658d6641ff0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d0/60ae292bba7a022ef6d460206f7658d6641ff0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d0/a19060d370fe80dcb744cddc325f7c35679621 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d0/a19060d370fe80dcb744cddc325f7c35679621 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d0/d85f8d7bced5b641cb994a42832c009d16ef57 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d0/d85f8d7bced5b641cb994a42832c009d16ef57 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d1/423136fb983d5c5923d9f9bd642afb100607f7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d1/423136fb983d5c5923d9f9bd642afb100607f7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d1/75d3bffece3a0c4202e98bf7dbcfaa82d84ec7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d1/75d3bffece3a0c4202e98bf7dbcfaa82d84ec7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d2/3fe93f05403fc6a5de9cd2e2931faabf1ba957 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d2/3fe93f05403fc6a5de9cd2e2931faabf1ba957 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/d2/d12679a4fa91edf724d2af1e81d654cb2eb331 x-kit-0.5.0/.git/objects/d2/d12679a4fa91edf724d2af1e81d654cb2eb331 --- x-kit-0.4.2.3build1/.git/objects/d2/d12679a4fa91edf724d2af1e81d654cb2eb331 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/d2/d12679a4fa91edf724d2af1e81d654cb2eb331 2011-05-15 14:56:31.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽKj1 ³ö)´ þ´-7„0s€B–db趃qsû4ɲ¬õ(çÙø¸¿¬© +»«äjƈ¡ŠäŠ8TtbkÊ5ŠtL拦öaŒ¶¨·Z”sØ4¥= ×|I¼ÕÄ”|Âdè{}Ž £è\>Ú1ºÂýñíüå;S½17ç;¸`ã†.d¯Ö[k®õÊ]úï#óÑÒ¨ƒ´©¼Æ|šM¼T» \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d2/d681c137b96eed5302de4f9bb1809d8b2fec70 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d2/d681c137b96eed5302de4f9bb1809d8b2fec70 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d3/8959e69cec58e311579c80800e57e8d277b8a0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d3/8959e69cec58e311579c80800e57e8d277b8a0 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d3/aaa589a1fbf3118088a3a7260eda8006ce6ac5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d3/aaa589a1fbf3118088a3a7260eda8006ce6ac5 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d3/de03fdb4307a604b8e38e44bc563e65b361ff1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d3/de03fdb4307a604b8e38e44bc563e65b361ff1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d4/7e7700cd6afd53cbd9710aa633fd03847dbb76 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d4/7e7700cd6afd53cbd9710aa633fd03847dbb76 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d5/0e5419a99c700c46fb8c19b40a5027f2274cb4 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d5/0e5419a99c700c46fb8c19b40a5027f2274cb4 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d5/11905c1647a1e311e8b20d5930a37a9c2531cd and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d5/11905c1647a1e311e8b20d5930a37a9c2531cd differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d5/4633e015cce87e5e6828ac3c76eb3b31accbb1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d5/4633e015cce87e5e6828ac3c76eb3b31accbb1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d6/23b3f0d250219039f245f7cecfbc252adbe688 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d6/23b3f0d250219039f245f7cecfbc252adbe688 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d6/a70b5ad1bfa55bcfd9399e975196c0dca4819b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d6/a70b5ad1bfa55bcfd9399e975196c0dca4819b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d6/d2235db765f45f08f0d0eeab8b441c2a5b3ed3 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d6/d2235db765f45f08f0d0eeab8b441c2a5b3ed3 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d7/6dd421da71a8b553cd44185381920a6d141333 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d7/6dd421da71a8b553cd44185381920a6d141333 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d7/c9e99b73ddea68a6c8a2121caad56d2b6f101c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d7/c9e99b73ddea68a6c8a2121caad56d2b6f101c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d8/0d815905ca6f26112f3ca63300f1f3be8b7b7f and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d8/0d815905ca6f26112f3ca63300f1f3be8b7b7f differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d8/1b2b989428b773de782cb6c2e4754c6b70c341 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d8/1b2b989428b773de782cb6c2e4754c6b70c341 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d8/2a0bd2e493b1b1813bb8e46691a0c176bc9054 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d8/2a0bd2e493b1b1813bb8e46691a0c176bc9054 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d8/574d9387b001ac4ef35df5157a6635e9697732 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d8/574d9387b001ac4ef35df5157a6635e9697732 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d9/1101373d3311df21a9c5d8bb9b460e9b322a75 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d9/1101373d3311df21a9c5d8bb9b460e9b322a75 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d9/2fd7adaf193c35b8c7e383458908e958915683 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d9/2fd7adaf193c35b8c7e383458908e958915683 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d9/30ca7ad63e007016a349c26908aa6c7b9bd703 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d9/30ca7ad63e007016a349c26908aa6c7b9bd703 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d9/f6c3151bd60e1c86ab3d9256492a4a4b2aaa86 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d9/f6c3151bd60e1c86ab3d9256492a4a4b2aaa86 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/d9/fa6d6ab464c1c6efe2751fe7317e6113f9ce28 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/d9/fa6d6ab464c1c6efe2751fe7317e6113f9ce28 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/da/61a3a1fb3e8481842619db84301d4d16b216ba and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/da/61a3a1fb3e8481842619db84301d4d16b216ba differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/da/c3acfdd534029d24dc2521c615dd0a3d130af6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/da/c3acfdd534029d24dc2521c615dd0a3d130af6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/da/e1bf0277f6661dbb4b145bf591a7025b5012dc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/da/e1bf0277f6661dbb4b145bf591a7025b5012dc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/da/ff5e55f74769c73d48106ef6928e462e06ad03 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/da/ff5e55f74769c73d48106ef6928e462e06ad03 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/db/0b62691762894015c8854dfb8ca7b2cce2fb3e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/db/0b62691762894015c8854dfb8ca7b2cce2fb3e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/db/5880c1365afba943756a965d3fdbd1617bc6c8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/db/5880c1365afba943756a965d3fdbd1617bc6c8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dc/d1c6975cfea10668ff589650d77d212106495e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dc/d1c6975cfea10668ff589650d77d212106495e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dc/e995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dc/e995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/0f84116131ea722240f4a7397bc0392bdb95ce and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/0f84116131ea722240f4a7397bc0392bdb95ce differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/1677dee222b432a5c056aef0ed53acec51e5b1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/1677dee222b432a5c056aef0ed53acec51e5b1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/5e532a4698be18c612ac8c833afd9cc37e7651 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/5e532a4698be18c612ac8c833afd9cc37e7651 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/71e8d31d2d30d047e719a7e7995c3d52bd6e22 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/71e8d31d2d30d047e719a7e7995c3d52bd6e22 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/98f37f3c7f95a3aa6bd5b5ec0ab17dc4b99e47 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/98f37f3c7f95a3aa6bd5b5ec0ab17dc4b99e47 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/dd/fcba94bdbddfbf30678d1a54f9effc69bdd290 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/dd/fcba94bdbddfbf30678d1a54f9effc69bdd290 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/de/62bbed90960026aedaedf1080dd3d62c8e74af and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/de/62bbed90960026aedaedf1080dd3d62c8e74af differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/de/8b80914ed97c81a3c7df05d3215796661864e2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/de/8b80914ed97c81a3c7df05d3215796661864e2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/de/d6be0b0eaf46aad2f5edee5565b7c988fda860 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/de/d6be0b0eaf46aad2f5edee5565b7c988fda860 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e0/0a94229936a6fdf021dffca823c4ba3580fe1a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e0/0a94229936a6fdf021dffca823c4ba3580fe1a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e0/9b99b841721b20feabc98c929f8a16855c72d2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e0/9b99b841721b20feabc98c929f8a16855c72d2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e1/6bcba7d4f809f23196eebc6a2c62739dad31ac and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e1/6bcba7d4f809f23196eebc6a2c62739dad31ac differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e1/9ba0aa6011a886f5a75dc6cf657c37066e8f46 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e1/9ba0aa6011a886f5a75dc6cf657c37066e8f46 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e2/b588c8bcfd13334caa98b41acecbafe5f9bd99 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e2/b588c8bcfd13334caa98b41acecbafe5f9bd99 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e2/b6b13b2c9e2a1e3b11d7b948afab362bfddc5c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e2/b6b13b2c9e2a1e3b11d7b948afab362bfddc5c differ diff -Nru x-kit-0.4.2.3build1/.git/objects/e3/2643cc4b5929db412518a1078b56bb469df287 x-kit-0.5.0/.git/objects/e3/2643cc4b5929db412518a1078b56bb469df287 --- x-kit-0.4.2.3build1/.git/objects/e3/2643cc4b5929db412518a1078b56bb469df287 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/e3/2643cc4b5929db412518a1078b56bb469df287 2011-05-30 14:41:21.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ŽKj1 ³ö)´ r·¿0 ÉB`n ÉjÒжãäüi’# ¼MÕ¢xÒkÝ',>½Ì¡ +V„„-s(’{ŽœÖˆZ6Jå´1çÅ1[ó ¡m‚ÕU2oÙ{,!£·œ‹‘а/±lœ,n†¾çWð~°ŽÙác?zS¸Ò?_ê¿ µÞv¡ã"½ÞÀ®b.:xÅÑœö¼;õé¹k£ª0´öý|̽7ó ¹¬Uœ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e3/28af5c03858868cab1007d3e3f1185cd6a27b1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e3/28af5c03858868cab1007d3e3f1185cd6a27b1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e3/9721e20f0708703dc6d9b607634636d625e9b2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e3/9721e20f0708703dc6d9b607634636d625e9b2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e4/900a7254831df66dccb9abbd1eebf827398035 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e4/900a7254831df66dccb9abbd1eebf827398035 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e5/571f89f7576f2d480b9ac58b83936a53c5ed0d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e5/571f89f7576f2d480b9ac58b83936a53c5ed0d differ diff -Nru x-kit-0.4.2.3build1/.git/objects/e5/99e52dae6472112314f729a2492facadd6ef91 x-kit-0.5.0/.git/objects/e5/99e52dae6472112314f729a2492facadd6ef91 --- x-kit-0.4.2.3build1/.git/objects/e5/99e52dae6472112314f729a2492facadd6ef91 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/e5/99e52dae6472112314f729a2492facadd6ef91 2011-05-31 12:34:57.000000000 +0000 @@ -0,0 +1 @@ +x¥Aj!Dgí)܆o·­~!9Àlæßo ÓÐjhÌý#ÉfY¯ ¨§½Ö}ØeK—qV(³¨H)ºRr¬™Sôe ‘˜³ù–mXv.ª_Wïf‡˜&H„ä@”)²ßq3ò3žý´_GÆ9º½íGo°ïòŸ¯õ/ª´Þv•㪽~X·RH~[ØÙ7ZˆÌ¤óîÀËCæŽ&uú–rÇÓEa~'ÓSN \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e5/a52ddac1594f1bcb6ea7329bdff2664946b4fc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e5/a52ddac1594f1bcb6ea7329bdff2664946b4fc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e5/f67d8e42d81c6c6dd9e5820b0e64dd5d1334e1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e5/f67d8e42d81c6c6dd9e5820b0e64dd5d1334e1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e5/ff7baea339eba7fcd3ab2a7f2c1533541c87fe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e5/ff7baea339eba7fcd3ab2a7f2c1533541c87fe differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e6/0db3d5f022aff6b4047ef96541e3fd7020c060 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e6/0db3d5f022aff6b4047ef96541e3fd7020c060 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e6/4b4916147052e4c556bbb677ad6e59a66c0ecb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e6/4b4916147052e4c556bbb677ad6e59a66c0ecb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e6/ee0b4ed6bf0542a94179235f249562761ce519 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e6/ee0b4ed6bf0542a94179235f249562761ce519 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e7/01aafca75f17601e7e76fae34b9bbc7978f410 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e7/01aafca75f17601e7e76fae34b9bbc7978f410 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/e8/85230b3b2978259770215fc25f5a3555ba60f0 x-kit-0.5.0/.git/objects/e8/85230b3b2978259770215fc25f5a3555ba60f0 --- x-kit-0.4.2.3build1/.git/objects/e8/85230b3b2978259770215fc25f5a3555ba60f0 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/e8/85230b3b2978259770215fc25f5a3555ba60f0 2012-05-21 12:12:01.000000000 +0000 @@ -0,0 +1,2 @@ +x¥ÁjÃ0D{ÖWì=ÔÈ’,[¡”„ž{+ô¼–W±ˆ,y[ÈßW´ŸÐÛ¼f|Ù¶È •}âJ8;5¨¤"B¹ cïœ ZoœÌ(=šçYìX)3Xô‹Å)( +ƒ4†ìàP¡ So9hO6ñ~ñZ*\ÓL• ¼ÇT2Á þq·ýòÅc.9zL/Û+ôZV*5Y8I%¥hn›Ëôï"!Ÿ™îöÇ®ß%.ï1߀iÛKÅú€ÁŠyItñÑÔý€¶ý­¤˜áù(B;Å+oñ:ñn™l \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.git/objects/e8/95fb65a751e43ebedc2e405bbbcfcc58365cbe x-kit-0.5.0/.git/objects/e8/95fb65a751e43ebedc2e405bbbcfcc58365cbe --- x-kit-0.4.2.3build1/.git/objects/e8/95fb65a751e43ebedc2e405bbbcfcc58365cbe 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/e8/95fb65a751e43ebedc2e405bbbcfcc58365cbe 2011-06-06 13:19:39.000000000 +0000 @@ -0,0 +1 @@ +x¥QªÂ0EýÎ*æ_1Ó&)ˆ<ðtÓé šäQâþ_Õ%øyîÇá\©9Ï | ][UCbÏ^Mƒ¡`d3N¤’ØÀɧh)ö$îW- È›:ã@¢ýˆÊ¾÷¨ý0Y´‰».ÅQ?Û£®pYF][…ßy©EáÄ>ä7ÿ—Zfáå 5ŸáH)ŠìÑ#ºmÝr›~-r7-œ^ÂíÇõÙî*m®Åýc½W¯ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e9/8bc228feaf1a790852a711a79fe33c3f49d041 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e9/8bc228feaf1a790852a711a79fe33c3f49d041 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/e9/95d4bac6ecc621bcf236edc29c22aa186fcc8f x-kit-0.5.0/.git/objects/e9/95d4bac6ecc621bcf236edc29c22aa186fcc8f --- x-kit-0.4.2.3build1/.git/objects/e9/95d4bac6ecc621bcf236edc29c22aa186fcc8f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/e9/95d4bac6ecc621bcf236edc29c22aa186fcc8f 2011-05-31 13:48:40.000000000 +0000 @@ -0,0 +1,2 @@ +x+)JMU022`040031Q0Ð-I-.Ñ+¨dÉã]·Rî¶ä™Ì§‚»2e + gÍ*2„+Š5«åÔ[©Áu6\Rò¿½ãîj[󍢸øÌ¼Ì’øxYÏæ>š½éâ5gïnÍuåQ7=é žTfnjªPTšÇ |üN¢þû³–/±²_ÀùrÉI¨)Å©%%™yéÅ Sý2?‰ìUz \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/e9/e48d12286e16c788c10290ce543624ffc7a0c9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/e9/e48d12286e16c788c10290ce543624ffc7a0c9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ea/63e005059a6c7188bb30f7fd24ee591c3fb0fb and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ea/63e005059a6c7188bb30f7fd24ee591c3fb0fb differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ea/6fb2896a26e5486232382fe24c704f52588719 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ea/6fb2896a26e5486232382fe24c704f52588719 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ea/952d4ba6c73d12850636e1fc6299c6554716ed and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ea/952d4ba6c73d12850636e1fc6299c6554716ed differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ea/b4f7982f95904d3894b0539e42e720c3af3d96 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ea/b4f7982f95904d3894b0539e42e720c3af3d96 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ec/651b81743668e0be1dd64d546322839278a323 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ec/651b81743668e0be1dd64d546322839278a323 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/ec/e2cda6ad4a39827073e19d0d25e7c55937f194 x-kit-0.5.0/.git/objects/ec/e2cda6ad4a39827073e19d0d25e7c55937f194 --- x-kit-0.4.2.3build1/.git/objects/ec/e2cda6ad4a39827073e19d0d25e7c55937f194 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/ec/e2cda6ad4a39827073e19d0d25e7c55937f194 2011-05-17 10:22:11.000000000 +0000 @@ -0,0 +1,2 @@ +x¥Ž]J1„}Î)ú]:éL~`=€à’l‡ ÌL†Ø‹îí zŸŠ¯ Š¯ô}oÆã“ fp)z툙ˆLÌkˆ“žauåHŽ‚ º"«3 >æ0ë°":ª±¢õt­Îèhs1Á›Â×BS±¨Ò]n}ÀÛ–yH‡÷¶õƒá’þxÙùµ¤£­¤m)}M¸:ã½¶ðŒQÍvê +ÿûH}ô!ð}—¶}.ç¦Òù øjr#Ô@.VR \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ed/206f622b18325a67371edc39259b3d85a7cf54 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ed/206f622b18325a67371edc39259b3d85a7cf54 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/ed/4464a65e49ac8797dbbc454df46cd285351324 x-kit-0.5.0/.git/objects/ed/4464a65e49ac8797dbbc454df46cd285351324 --- x-kit-0.4.2.3build1/.git/objects/ed/4464a65e49ac8797dbbc454df46cd285351324 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/ed/4464a65e49ac8797dbbc454df46cd285351324 2011-05-31 14:13:05.000000000 +0000 @@ -0,0 +1,2 @@ +x¥A +Â0E]ç³$Ó´I"ŠkÏ “É MRjz‹ÁåûðÿsÍyjÐY<´ULÏÎöI{ÏšuÑúÈ:8cò>RŒ<2Ž^-´JÙ‹èFî­éMòÉ “ØÈ&„”’„ˆœ¸S´µW]á6Y[…Ç4×"p¦Ÿò—¯L¥–‰i>qÍ@£í8 ZGÝi­ötŸÛäo‘ºÏB¶öKÏ÷êÒ¦ZÔ ÏV \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ed/be101e1d0c52fb4daedab58b44165260eb3b4a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ed/be101e1d0c52fb4daedab58b44165260eb3b4a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ed/eb2e80a2d33ea4f01f8e2aadaf693373e43402 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ed/eb2e80a2d33ea4f01f8e2aadaf693373e43402 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ee/5b5a8570780035ddd4296e00c042845d48859d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ee/5b5a8570780035ddd4296e00c042845d48859d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ee/698ff00e6b4529879700579989b2c4f5fbf3d1 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ee/698ff00e6b4529879700579989b2c4f5fbf3d1 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ee/8409c4a5002ba789c96ff05c72ea5f0402e114 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ee/8409c4a5002ba789c96ff05c72ea5f0402e114 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ef/1f797f8ffaacaf59fb561c465418456b61ae11 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ef/1f797f8ffaacaf59fb561c465418456b61ae11 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ef/400c54a387b32265e46a6fb72ea9858dc23dc8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ef/400c54a387b32265e46a6fb72ea9858dc23dc8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f0/2736d425b59d2e9762236bb5c59e3cf30eaf62 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f0/2736d425b59d2e9762236bb5c59e3cf30eaf62 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f0/d59a8b6685374f32c09b46eb5c6b7ea9259ad8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f0/d59a8b6685374f32c09b46eb5c6b7ea9259ad8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f0/f2060187219d114be086c019585de73b2f4d6a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f0/f2060187219d114be086c019585de73b2f4d6a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f1/7cac68e464c4895ae26ec6620001ef1535c184 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f1/7cac68e464c4895ae26ec6620001ef1535c184 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f1/9df4bfddf358f02cd05f639f06e8e0a5705d6d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f1/9df4bfddf358f02cd05f639f06e8e0a5705d6d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f1/d48977a9dd72c8ba7df0311b4e1f19f38b8e5e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f1/d48977a9dd72c8ba7df0311b4e1f19f38b8e5e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f1/d82e74256f236339e5e2b70fcea55422dd8eb0 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f1/d82e74256f236339e5e2b70fcea55422dd8eb0 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/f1/e4cda6a1073ac4fb8e908f249583c6d046f382 x-kit-0.5.0/.git/objects/f1/e4cda6a1073ac4fb8e908f249583c6d046f382 --- x-kit-0.4.2.3build1/.git/objects/f1/e4cda6a1073ac4fb8e908f249583c6d046f382 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/f1/e4cda6a1073ac4fb8e908f249583c6d046f382 2011-06-07 11:15:18.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽKJ1@]絆ʧ:0gTuÙèN$f<¿Aàò½ÅãI;Ï2ÀEz]Pmv+GïÕÚà™‰(+-6L…‰%™Ïܵð$<­#äÀ謰|I«æ×5±ó².ÑäǸ·ok nåhUá%ÿñåüå«äÚj‘|\¤¯`=ÆÈ¥žÑ!šiçîЇ̭Թ³5ù½Ôäžë®P*ì:Þ·^¾µ›ÊæYÖ \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.git/objects/f2/5eff463b8f1bff113f38e17bb3f3517b94635f x-kit-0.5.0/.git/objects/f2/5eff463b8f1bff113f38e17bb3f3517b94635f --- x-kit-0.4.2.3build1/.git/objects/f2/5eff463b8f1bff113f38e17bb3f3517b94635f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/f2/5eff463b8f1bff113f38e17bb3f3517b94635f 2011-05-31 14:00:28.000000000 +0000 @@ -0,0 +1,3 @@ +x¥ŽAjÄ0 E»ö)´äØVJ‡®{†"Ë + Äöàqzþ†ö]¾ÿà󤕲 ˜(¼Œ® +ÙeE·æäÎLèSTÕû$œRHŽìºZóà®uÀ½Avqá Sˆ6Ï4-1G< z?¯ŽØð1¾Z‡ûž´ÛÞªÂÿøZ~ùM¸¶º ïWiå¬CŠ½á‚¢9×3wè¿Ìû®\áx@×Ò¾õóy¤§ÊØZ5?gUVC \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f2/daa69fff6756ea720d7d4421adbd0fc9be9bff and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f2/daa69fff6756ea720d7d4421adbd0fc9be9bff differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f2/fd069cd50a745a471d00c564ae849b6d0cdd52 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f2/fd069cd50a745a471d00c564ae849b6d0cdd52 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f3/7d7197b763562ab592cdafd561727dbc6a5d0d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f3/7d7197b763562ab592cdafd561727dbc6a5d0d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f3/bc411ee9b1680a9f77c29eb3e591c18f806036 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f3/bc411ee9b1680a9f77c29eb3e591c18f806036 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f3/cab2971d3927769a3fb1161afba97b7879ef4e and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f3/cab2971d3927769a3fb1161afba97b7879ef4e differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f4/2375e0bf9354efc8460aadfd38e5be88ae7664 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f4/2375e0bf9354efc8460aadfd38e5be88ae7664 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f4/5fda40a2781ac381551fa734b3c596702c5208 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f4/5fda40a2781ac381551fa734b3c596702c5208 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/00868b8cb91198c61f42723bfb8754d74b21ac and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/00868b8cb91198c61f42723bfb8754d74b21ac differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/21c9f4ab3e41e7a299a5b5ac0c4db64591b9ad and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/21c9f4ab3e41e7a299a5b5ac0c4db64591b9ad differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/555630a636c1fcc5c6001b168ba9fb346c3b98 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/555630a636c1fcc5c6001b168ba9fb346c3b98 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/a0e95d94d827148c75f7a34d1ad57181f9af16 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/a0e95d94d827148c75f7a34d1ad57181f9af16 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/b2090ecb17dae71ab75e7003b90901a62f283d and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/b2090ecb17dae71ab75e7003b90901a62f283d differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f5/cbccfff1e0e4858048c997e61c6ec7a0e14d95 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f5/cbccfff1e0e4858048c997e61c6ec7a0e14d95 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f6/2a70ffcbeeb0ef6a1ae52d5462baed81a1b538 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f6/2a70ffcbeeb0ef6a1ae52d5462baed81a1b538 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f6/8fe21a7ee130593de74e6e5341aafd2fb6e8c8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f6/8fe21a7ee130593de74e6e5341aafd2fb6e8c8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f6/ec7fd7648996bcb8f6874389bb1bfc358f562b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f6/ec7fd7648996bcb8f6874389bb1bfc358f562b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f6/f118ba2ce874aabb1d9f8cf32f31ff5fee6eb2 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f6/f118ba2ce874aabb1d9f8cf32f31ff5fee6eb2 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f7/eb141f2c5d19522b6d66c5b030c7a3f98a95b9 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f7/eb141f2c5d19522b6d66c5b030c7a3f98a95b9 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f8/1a2bacabc3bc5c164a587f22c51ebdf16e79ac and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f8/1a2bacabc3bc5c164a587f22c51ebdf16e79ac differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f8/9f3a93f6c3d7a2619e0b6191bbe32a34f4070b and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f8/9f3a93f6c3d7a2619e0b6191bbe32a34f4070b differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/f8/fa735450e4e92a1cd1f3cc695a1fdf832c8838 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/f8/fa735450e4e92a1cd1f3cc695a1fdf832c8838 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fa/40616d9914a2064419b93ebded895f3d62fcbe and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fa/40616d9914a2064419b93ebded895f3d62fcbe differ diff -Nru x-kit-0.4.2.3build1/.git/objects/fa/b651af472bca658c24d619ef2637a9360e1819 x-kit-0.5.0/.git/objects/fa/b651af472bca658c24d619ef2637a9360e1819 --- x-kit-0.4.2.3build1/.git/objects/fa/b651af472bca658c24d619ef2637a9360e1819 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/fa/b651af472bca658c24d619ef2637a9360e1819 2011-05-15 14:56:14.000000000 +0000 @@ -0,0 +1,3 @@ +x}S[OÛ0Ýs~ÅyH¡·iÑiZè(T*mÕ‹Pßæ4_‹Ô®l§ÐýúŒ=úòŸ›ÓÒ¦èvz_>, í±W›;µÊ#1È$ÕÊè?’!=")SqÁâF—ÖHô]=®wÍò§*õFZ:ü€5XÈ>ÈŽ×ÑëÆèu:_[Q4°û£ÓÛ"œãdpÚì6gß^!·¢¤ +…uþ^á$x)µ §xïýˆCrœÝ:µ•åNÞæá^9éãh+l”“LûàtZP&k[‡Ít~$ ·*“QE(AÜÎÃæÍâj²Â•qªÄ¬J©cê7^@óöõŽ/ÛSOk‹'Z⪠­éC4Ïâ<×è=?ñ„Ã:bœ¨PÓv°ûzì”\(I=OÒá·Â_ôeЦaRØ=ÅÄ£¼{]–Ì•—¼*c"Ð ÜŽ–×ÓÕÉdÛd>O&ËuŸw™ +OåÀjÔšôn_jФ©N™p$sÜ\ÎלH.FãÑrMúŽ–“ËÅÃé fÉ|9¬ÆÉ³Õ|6]\¶ÀÆÔ¤„óÿ±6oÂqÂb¥KßH^3LObeÆâ„¡nDHKaÃÆ=Ûù>,ßTlô¶HõOx¬N:‡±!ƽӬËÿ&KN¿¤cd6­Ÿ» \™»’ž/8>Ôy(0,­u1.¬ÖĸI€N¯Ûíœu?uºX-’(šüj>üÑó ù¸yqciµÔ ä!üCQôªƒu¹™j^׬Îýw»ò®í ¶¿M¬5gõwe]}ûj6þH#ÿ Y+ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fa/c1646ca8b04313a9c4e6848265c2ca8f1756d6 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fa/c1646ca8b04313a9c4e6848265c2ca8f1756d6 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fb/57dada3a320e92ce2b4c162c31760a7c742cad and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fb/57dada3a320e92ce2b4c162c31760a7c742cad differ diff -Nru x-kit-0.4.2.3build1/.git/objects/fb/991f4773676b9f0e4b22cca5a76f9b29aa0701 x-kit-0.5.0/.git/objects/fb/991f4773676b9f0e4b22cca5a76f9b29aa0701 --- x-kit-0.4.2.3build1/.git/objects/fb/991f4773676b9f0e4b22cca5a76f9b29aa0701 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/fb/991f4773676b9f0e4b22cca5a76f9b29aa0701 2012-05-23 11:40:46.000000000 +0000 @@ -0,0 +1,2 @@ +x¥KN1Yû½4ø“Žm„€CØ==ÁbÆŽ<HnG`YoQªGmÛŠ€þA:38^üÉðŒs0:%²‘hŽèC:r &[FÃG +ê’:W­ÓÙå¡£÷Ú\Èâ‚É!bN'½h•®òÑ:¼­™»4x/k« Ïé§í—_)ÕV ¥u¢¶½€qÎ{ï¬ pÐVk5Ö‘+üo‘º}y¼µ~GvîÓåþÔêרƒ|ÞaTîÒK=Cæ¥u†ï^d úqb‹ \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fc/02171803ad0104dc68e7579c0002adf7fd439c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fc/02171803ad0104dc68e7579c0002adf7fd439c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fc/14d872255467fcf6720d9becf61ef0670810c8 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fc/14d872255467fcf6720d9becf61ef0670810c8 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fc/32198d73fb20ac726924971a3287375eac49f5 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fc/32198d73fb20ac726924971a3287375eac49f5 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/fc/52853c00884dce4aec2968ce39a5edde3674fe x-kit-0.5.0/.git/objects/fc/52853c00884dce4aec2968ce39a5edde3674fe --- x-kit-0.4.2.3build1/.git/objects/fc/52853c00884dce4aec2968ce39a5edde3674fe 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/fc/52853c00884dce4aec2968ce39a5edde3674fe 2011-05-23 16:09:11.000000000 +0000 @@ -0,0 +1 @@ +x¥±jÄ0DSë+–kf½²%BÈ‘*Eºü€¼»â¶t‘åÿIÒ¤Nù†ax —mK ,ÑC«ª úŠõuBáÅ‹°¥1z¶£ó³£ÞÜCÕÜ`VÝÌ„ž„bœ¢KºôΣºHë9EãhÂÑn¥Âu]´¶ïi-Yá)üp·}ó ‡\râ°v\¶gè-ºÞ¹iöðˆ„hÎôÔmúï!sË[¾íu û~Sj×5vU?T5‰17ýÛÙ•[*~;;„ IÎRLZÍâAj \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fc/91aac8114432421c7e47ecd031ecd32998dadc and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fc/91aac8114432421c7e47ecd031ecd32998dadc differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fd/ba03b0d5001a3f96de43ffaa4351b3bd085d72 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fd/ba03b0d5001a3f96de43ffaa4351b3bd085d72 differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fd/c798e83fb031c11ffbd1d53304e319515bf09c and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fd/c798e83fb031c11ffbd1d53304e319515bf09c differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fe/876a735027e8afe4e2d5ff480cf686b4e55d9a and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fe/876a735027e8afe4e2d5ff480cf686b4e55d9a differ Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/fe/a62c198d68a6abab33c2b8ecdfcba2b5b35f91 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/fe/a62c198d68a6abab33c2b8ecdfcba2b5b35f91 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/fe/dd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 x-kit-0.5.0/.git/objects/fe/dd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 --- x-kit-0.4.2.3build1/.git/objects/fe/dd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/fe/dd5d28a9c30b87bff2dc75f3b4cdfade0e74b5 2011-05-24 15:05:53.000000000 +0000 @@ -0,0 +1 @@ +x¥AŽÃ sæsƒ‘¢ÕæÙ? 0£X²!rðÿC²ùAŽ]‡®îT×un §ph3°ÃMµ&-ZÏÜh6’=jLèPÝiãÒÀ1»irÞ‡ "ZÜ8Y F{›"ë0°(ÚÛ­npY"o­Âu^ja8Ó>­ïü›¨Ô2'ZN©®?0tÚ†»U§}n㯋Ô_…œ¡oÉû}éÎÆðØãƒS›k*^¶~òƒÔd _Á \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ff/0b22e25150bec5f56d62fafef77e05960852ea and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ff/0b22e25150bec5f56d62fafef77e05960852ea differ diff -Nru x-kit-0.4.2.3build1/.git/objects/ff/4323a0ac20587e6c04106a33cae0655aa5721f x-kit-0.5.0/.git/objects/ff/4323a0ac20587e6c04106a33cae0655aa5721f --- x-kit-0.4.2.3build1/.git/objects/ff/4323a0ac20587e6c04106a33cae0655aa5721f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/ff/4323a0ac20587e6c04106a33cae0655aa5721f 2011-06-06 14:18:37.000000000 +0000 @@ -0,0 +1,3 @@ +x¥ANÄ0 EYçÞ#œ8ui„@¬9ÃÈ1®¨Ô&£Nz +åû‹§÷µoÛ2 $|»ÌT5zoVªçŒRæ”4«dSñê󜑑ØÝe·6€C œCd¦ˆ§Ä~."úR‰ÄHýgdœœã«ïð¶VÛG‡eíÍà*|Ù~ùU¥õ¶¨¬íÛ xÂD\ +&xÆ€èÎõÌöo‘{_MwøQžOný·ÇQ¦céÍ}HäWp \ No newline at end of file Binary files /tmp/TFkxYLkygY/x-kit-0.4.2.3build1/.git/objects/ff/58da3698d12772c778e3c84d690538185d7866 and /tmp/SzKNAyDWa9/x-kit-0.5.0/.git/objects/ff/58da3698d12772c778e3c84d690538185d7866 differ diff -Nru x-kit-0.4.2.3build1/.git/objects/ff/8e6a43ad1293e4ce0594001f455e09ae10133f x-kit-0.5.0/.git/objects/ff/8e6a43ad1293e4ce0594001f455e09ae10133f --- x-kit-0.4.2.3build1/.git/objects/ff/8e6a43ad1293e4ce0594001f455e09ae10133f 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/objects/ff/8e6a43ad1293e4ce0594001f455e09ae10133f 2011-05-31 14:25:31.000000000 +0000 @@ -0,0 +1 @@ +x¥ŽKjÄ0g­Sô>0评õœ!´Ú-Æ`©"çü1™#dY¯àQ$­­lô—9˜ÁíÙ¦’4ò5!û“®V¢Èq¨y1Uí8¸O@ªÆ—èJÕÁ§œC¥SŸÌ’s²ÉÝ–˜ƒÂc>dÀÇVxLûºIgxÅ'_Û¿vé+áv%io`œŽ·`² ð¢­Öê\ÏÜÉÿ>RŸc‡c‡ÁM~øëû(²ÏUºúÁ.VÅ \ No newline at end of file diff -Nru x-kit-0.4.2.3build1/.git/ORIG_HEAD x-kit-0.5.0/.git/ORIG_HEAD --- x-kit-0.4.2.3build1/.git/ORIG_HEAD 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/ORIG_HEAD 2012-06-05 10:59:00.000000000 +0000 @@ -0,0 +1 @@ +50685259d0bf4effee6b3ce4b5ccfd3d5ec76ad1 diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/debian x-kit-0.5.0/.git/refs/heads/debian --- x-kit-0.4.2.3build1/.git/refs/heads/debian 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/debian 2012-06-05 10:03:55.000000000 +0000 @@ -0,0 +1 @@ +dce995f8e6a5c1f1062c79b61c1b15c7c9e27ff7 diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/debian-pep8 x-kit-0.5.0/.git/refs/heads/debian-pep8 --- x-kit-0.4.2.3build1/.git/refs/heads/debian-pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/debian-pep8 2012-06-05 11:01:04.000000000 +0000 @@ -0,0 +1 @@ +dcd1c6975cfea10668ff589650d77d212106495e diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/master x-kit-0.5.0/.git/refs/heads/master --- x-kit-0.4.2.3build1/.git/refs/heads/master 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/master 2011-05-17 11:22:27.000000000 +0000 @@ -0,0 +1 @@ +4a7550be20ebec834e66937cf817ec4f6ca62676 diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/pep8 x-kit-0.5.0/.git/refs/heads/pep8 --- x-kit-0.4.2.3build1/.git/refs/heads/pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/pep8 2012-05-23 13:11:51.000000000 +0000 @@ -0,0 +1 @@ +53d2fbd94d630309104e33f3dcd6d84d292265e5 diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/py3 x-kit-0.5.0/.git/refs/heads/py3 --- x-kit-0.4.2.3build1/.git/refs/heads/py3 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/py3 2011-05-17 11:21:41.000000000 +0000 @@ -0,0 +1 @@ +6182f65e1a32ea826366eaaa20517b400c4a4889 diff -Nru x-kit-0.4.2.3build1/.git/refs/heads/raw x-kit-0.5.0/.git/refs/heads/raw --- x-kit-0.4.2.3build1/.git/refs/heads/raw 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/heads/raw 2011-05-17 10:35:03.000000000 +0000 @@ -0,0 +1 @@ +78ed5675ce544d97d69b9d4f32b8c4c6bc046b47 diff -Nru x-kit-0.4.2.3build1/.git/refs/remotes/origin/master x-kit-0.5.0/.git/refs/remotes/origin/master --- x-kit-0.4.2.3build1/.git/refs/remotes/origin/master 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/remotes/origin/master 2011-05-15 15:34:14.000000000 +0000 @@ -0,0 +1 @@ +4a7550be20ebec834e66937cf817ec4f6ca62676 diff -Nru x-kit-0.4.2.3build1/.git/refs/remotes/origin/pep8 x-kit-0.5.0/.git/refs/remotes/origin/pep8 --- x-kit-0.4.2.3build1/.git/refs/remotes/origin/pep8 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/remotes/origin/pep8 2012-05-28 10:24:01.000000000 +0000 @@ -0,0 +1 @@ +53d2fbd94d630309104e33f3dcd6d84d292265e5 diff -Nru x-kit-0.4.2.3build1/.git/refs/tags/0.5.0 x-kit-0.5.0/.git/refs/tags/0.5.0 --- x-kit-0.4.2.3build1/.git/refs/tags/0.5.0 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/.git/refs/tags/0.5.0 2012-06-05 10:58:17.000000000 +0000 @@ -0,0 +1 @@ +53d2fbd94d630309104e33f3dcd6d84d292265e5 diff -Nru x-kit-0.4.2.3build1/setup.py x-kit-0.5.0/setup.py --- x-kit-0.4.2.3build1/setup.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/setup.py 2012-06-05 10:58:56.000000000 +0000 @@ -15,7 +15,7 @@ url="https://launchpad.net/x-kit", license="GPL v2 or later", description="library for the manipulation of the xorg.conf", - packages=["XKit"], + packages=["xkit"], scripts=[], ) diff -Nru x-kit-0.4.2.3build1/tests/0-test.py x-kit-0.5.0/tests/0-test.py --- x-kit-0.4.2.3build1/tests/0-test.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/tests/0-test.py 2012-06-05 10:58:56.000000000 +0000 @@ -17,8 +17,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -from XKit import xorgparser -from XKit.xorgparser import * +from __future__ import print_function +from __future__ import unicode_literals +from xkit import xorgparser +from xkit.xorgparser import * import sys import unittest import os @@ -40,355 +42,319 @@ self.parser = xorgparser.Parser(source) def tearDown(self): - self.parser.comments.insert(0, '\n-----' + self.this_function_name + '-----\n') - self.parser.writeFile(destinationFile, test=True) + self.parser.comments.insert(0, '\n-----' + self.this_function_name + + '-----\n') + self.parser.write(destinationFile, test=True) try: os.remove(tempFile) except(OSError, IOError): pass - def testGetIds(self): - ''' - def getIds(self): - ''' + def test_fill_identifiers(self): + '''def __fill_identifiers(self):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKit Screen' - self.parser.makeSection(section, identifier) - - fullSection = self.parser.globaldict[section] + self.parser.make_section(section, identifier) + + full_section = self.parser.globaldict[section] found1 = False found2 = False - for position in fullSection: - lines = fullSection[position] + for position in full_section: + lines = full_section[position] for line in lines: if line.find(identifier) != -1 and \ line.lower().find('identifier') != -1: found1 = True break - + ids = self.parser.identifiers[section] - + for elem in ids: if elem[0] == identifier: found2 = True break - - self.failUnless(found1 == True and found2 == True, 'Not all the identifiers were returned') - def testGetIdentifier1(self): - ''' - def getIdentifier(self, section, position): - ''' + self.assertTrue(found1 == True and found2 == True, + 'Not all the identifiers were returned') + + def test_get_identifier1(self): + '''def get_identifier(self, section, position):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier1 = 'XKit Screen' - position1 = self.parser.makeSection(section, identifier1) - identifier2 = self.parser.getIdentifier(section, position1) - - self.failUnless(identifier1 == identifier2, + position1 = self.parser.make_section(section, identifier1) + identifier2 = self.parser.get_identifier(section, position1) + + self.assertEqual(identifier1, identifier2, 'The identifier was not correctly retrieved') - - def testGetIdentifier2(self): - ''' - def getIdentifier(self, section, position): - ''' + + def test_get_identifier2(self): + '''def get_identifier(self, section, position):''' self.this_function_name = sys._getframe().f_code.co_name self.parser = xorgparser.Parser(None) - - + self.assertRaises(SectionException, - self.parser.getValue, 'Device', 'Identifier', 1) - - self.assertRaises(IdentifierException, - self.parser.getIdentifier, 'Device', 0) + self.parser.get_value, 'Device', + 'Identifier', 1) - def testGetDuplicateOptions(self): - ''' - def getDuplicateOptions(self, section, position): - ''' + self.assertRaises(IdentifierException, + self.parser.get_identifier, 'Device', 0) + def test_get_duplicate_options(self): + '''def get_duplicate_options(self, section, position):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' identifier = 'XKit Device Section' option = 'TestOption1' value1 = '0' value2 = '1' - position = self.parser.makeSection(section, identifier=identifier) - - self.parser.addOption(section, option, value1, optiontype='Option', position=position) - - ''' - addOption doesn't allow the creation of duplicates - ''' + position = self.parser.make_section(section, identifier=identifier) + + self.parser.add_option(section, option, value1, option_type='Option', + position=position) + + # add_option doesn't allow the creation of duplicates option2 = '\t' + 'Option' + '\t' + option + '\t\t"' + value2 + '"\n' self.parser.globaldict[section][position].append(option2) - - duplicates = self.parser.getDuplicateOptions(section, position) - - self.failUnless(option in duplicates, 'Duplicates cannot be found!') + duplicates = self.parser.get_duplicate_options(section, position) - def testCheckDuplicateOptions(self): - ''' - def checkDuplicateOptions(self): - ''' + self.assertTrue(option in duplicates, + 'Duplicates cannot be found!') + + def test_check_duplicate_options(self): + '''def check_duplicate_options(self):''' self.this_function_name = sys._getframe().f_code.co_name - self.parser = xorgparser.Parser(None) - section = 'Device' identifier = 'XKit Device Section' option = 'TestOption1' value1 = '0' value2 = '1' - position = self.parser.makeSection(section, identifier=identifier) - - self.parser.addOption(section, option, value1, optiontype='Option', position=position) - + position = self.parser.make_section(section, identifier=identifier) + self.parser.add_option(section, option, value1, option_type='Option', + position=position) option2 = '\t' + 'Option' + '\t' + option + '\t\t"' + value2 + '"\n' - - ''' - addOption doesn't allow the creation of duplicates - ''' + + # add_option doesn't allow the creation of duplicates self.parser.globaldict[section][position].append(option2) - - duplicates = self.parser.checkDuplicateOptions() - - self.failUnless(option in duplicates[section][position], 'Duplicates can still be found!') - - def testGetDuplicateSections(self): - ''' - def getDuplicateSections(self): - - ''' + duplicates = self.parser.check_duplicate_options() + + self.assertTrue(option in duplicates[section][position], + 'Duplicates can still be found!') + + def test_get_duplicate_sections(self): + '''def get_duplicate_sections(self):''' self.this_function_name = sys._getframe().f_code.co_name - + section = 'Screen' identifier1 = 'XKit Screen test1' - - pos = self.parser.makeSection(section, identifier=identifier1) - - ''' - create a duplicate section without using addOption() - ''' - self.parser.globaldict[section][pos+1] = ['\tIdentifier\t\t"' + identifier1 + '"\n'] - self.parser.identifiers[section].append((identifier1, pos+1))#ADD to identifiers - duplicates = self.parser.getDuplicateSections() - - self.failUnless(identifier1 in duplicates[section], + + pos = self.parser.make_section(section, identifier=identifier1) + + # Create a duplicate section without using add_option() + self.parser.globaldict[section][pos+1] = ['\tIdentifier\t\t"' + + identifier1 + '"\n'] + # Add to identifiers + self.parser.identifiers[section].append((identifier1, pos+1)) + duplicates = self.parser.get_duplicate_sections() + + self.assertTrue(identifier1 in duplicates[section], 'Duplicates sections cannot be retrieved correctly!') - def testIsSection1(self): - ''' - def isSection(self, section, identifier): - ''' + def test_is_section1(self): + '''def is_section(self, section, identifier):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKit Screen' - position = self.parser.makeSection(section, identifier) - - status1 = self.parser.isSection(section, identifier) - + position = self.parser.make_section(section, identifier) + status1 = self.parser.is_section(section, identifier) status2 = False sect = self.parser.globaldict[section][position] for line in sect: if line.find(identifier) != -1: status2 = True break - - self.failUnless(status2 == True and status1 == status2, - 'The existence of the section was not tested correctly') - def testIsSection2(self): - ''' - def isSection(self, section, identifier): - ''' + self.assertTrue(status2 == True and status1 == status2, + 'The existence of the section was not tested correctly') + + def test_is_section2(self): + '''def is_section(self, section, identifier):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKit Screen' - position = self.parser.makeSection(section, identifier) - - status1 = self.parser.isSection(section, position=position) - + position = self.parser.make_section(section, identifier) + status1 = self.parser.is_section(section, position=position) status2 = False sect = self.parser.globaldict[section][position] for line in sect: if line.find(identifier) != -1: status2 = True break - - self.failUnless(status2 == True and status1 == status2, - 'The existence of the section was not tested correctly') - def testAddOption1(self): - ''' - def addOption(self, section, option, value, optiontype=None, position=None, reference=None): - ''' - + self.assertTrue(status2 == True and status1 == status2, + 'The existence of the section was not tested correctly') + + def test_add_option1(self): + '''def add_option(self, section, option, value, option_type=None, + position=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name - option = 'TestOption' value = 'Ok' #position = 0 found = False - self.parser.addOption(section, option, value, optiontype=None, position=None, reference=None) + self.parser.add_option(section, option, value, option_type=None, + position=None, reference=None) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == True, 'Option not added!') - + self.assertTrue(found, 'Option not added!') - def testAddOption2(self): - ''' - def addOption(self, section, option, value, optiontype=None, position=None, reference=None): - ''' + def test_add_option2(self): + '''def add_option(self, section, option, value, option_type=None, + position=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name option = 'TestOption' value = 'Ok' #position = 0 found = False - self.parser.addOption(section, option, value, optiontype="Option", position=None, reference=None) + self.parser.add_option(section, option, value, option_type="Option", + position=None, reference=None) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == True, 'Option not added!') + self.assertTrue(found, 'Option not added!') - def testAddOption3(self): - ''' - def addOption(self, section, option, value, optiontype=None, position=None, reference=None): - ''' + def test_add_option3(self): + '''def add_option(self, section, option, value, option_type=None, + position=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name option = 'TestOption' value = 'Ok' position = 0 found = False - self.parser.addOption(section, option, value, optiontype=None, position=None, reference=None) + self.parser.add_option(section, option, value, option_type=None, + position=None, reference=None) lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True - self.failUnless(found == True, 'Option not added!') + self.assertTrue(found, 'Option not added!') - def testAddOption4(self): - ''' - def addOption(self, section, option, value, optiontype=None, position=None, reference=None): - ''' + def test_add_option4(self): + '''def add_option(self, section, option, value, option_type=None, + position=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name option = 'TestOption' value = 'Ok' #position = 0 found = False - self.parser.addOption(section, option, value, optiontype=None, position=None, reference=True) + self.parser.add_option(section, option, value, option_type=None, + position=None, reference=True) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == True, 'Option not added!') - - def testAddOption5(self): - ''' - def addOption(self, section, option, value, optiontype=None, position=None, reference=None): - ''' + self.assertTrue(found, 'Option not added!') + + def test_add_option5(self): + '''def add_option(self, section, option, value, option_type=None, + position=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' option = 'DefaultDepth' value = '24' #position = 0 found = False - - screen = self.parser.makeSection('Screen', identifier='Xkit Screen Device 5') - - self.parser.addOption(section, option, value, position=screen, prefix='') + + screen = self.parser.make_section('Screen', + identifier='Xkit Screen Device 5') + self.parser.add_option(section, option, value, position=screen, + prefix='') lines = self.parser.globaldict[section][screen] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == True, 'Option not added!') - - - def testRemoveOption1(self): - ''' - def removeOption(self, section, option, value=None, position=None, reference=None): - ''' + self.assertTrue(found, 'Option not added!') + + def test_remove_option1(self): + '''def remove_option(self, section, option, value=None, position=None, + reference=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'Identifier' found = False - self.parser.removeOption(section, option, value=None, position=None, reference=None) + self.parser.remove_option(section, option, value=None, position=None, reference=None) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == False, 'Option not removed!') - - def testRemoveOption2(self): - ''' - def removeOption(self, section, option, value=None, position=None, reference=None): - ''' + self.assertFalse(found, 'Option not removed!') + + def test_remove_option2(self): + '''def remove_option(self, section, option, value=None, position=None, + reference=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'Identifier' value = 'Configured Video Device' found = False - self.parser.removeOption(section, option, value=None, position=None, reference=None) + self.parser.remove_option(section, option, value=None, position=None, reference=None) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1 and line.find(value) != -1: found = True #print line - self.failUnless(found == False, 'Option not removed!') - - def testRemoveOption3(self): + self.assertFalse(found, 'Option not removed!') + + def test_remove_option3(self): ''' - def removeOption(self, section, option, value=None, position=None, reference=None): + def remove_option(self, section, option, value=None, position=None, reference=None): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'Identifier' reference = True found = False - self.parser.removeOption(section, option, value=None, position=None, reference=None) + self.parser.remove_option(section, option, value=None, position=None, reference=None) for position in self.parser.globaldict[section]: lines = self.parser.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == False, 'Option not removed!') + self.assertFalse(found, 'Option not removed!') - def testMakeSection1(self): - ''' - def makeSection(self, section, identifier=None): - ''' + def test_make_section1(self): + '''def make_section(self, section, identifier=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Extensions' before = len(self.parser.globaldict[section]) - position = self.parser.makeSection(section, identifier=None) - + position = self.parser.make_section(section, identifier=None) sect = self.parser.globaldict[section].get(position) - self.failUnless(sect != None, 'Section not created!') - - def testMakeSection2(self): - ''' - def makeSection(self, section, identifier=None): - ''' + + self.assertTrue(sect != None, 'Section not created!') + + def test_make_section2(self): + '''def make_section(self, section, identifier=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' identifier = 'XKit Video Device' - position = self.parser.makeSection(section, identifier=identifier) + position = self.parser.make_section(section, identifier=identifier) sect = self.parser.globaldict[section].get(position) - self.failUnless(sect != None, 'Section not created!') + self.assertTrue(sect != None, 'Section not created!') found = False lines = self.parser.globaldict[section][position] @@ -396,60 +362,55 @@ if line.find('Identifier') != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == True, 'Section not created correctly!') + self.assertTrue(found, 'Section not created correctly!') - def testMakeSection3(self): - ''' - def makeSection(self, section, identifier=None): - ''' + def test_make_section3(self): + '''def make_section(self, section, identifier=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Extensions' - position = self.parser.makeSection(section, identifier=None) - + position = self.parser.make_section(section, identifier=None) sect = self.parser.globaldict[section].get(position) - - self.failUnless(sect != None, - 'The section was not created') - - def testMakeSection4(self): - ''' - def makeSection(self, section, identifier=None): - ''' + + self.assertTrue(sect != None, 'The section was not created') + + def test_make_section4(self): + '''def make_section(self, section, identifier=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' identifier = 'XKit Video Device' - position = self.parser.makeSection(section, identifier=identifier) + position = self.parser.make_section(section, identifier=identifier) sect = self.parser.globaldict[section].get(position) - self.failUnless(sect != None, 'Section not created!') - + + self.assertTrue(sect != None, 'Section not created!') + found = False lines = self.parser.globaldict[section][position] for line in lines: if line.find('Identifier') != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == True, 'Section not created correctly!') - + + self.assertTrue(found, 'Section not created correctly!') + ids = self.parser.identifiers[section] found = False for elem in ids: if elem[0] == identifier: found = True break - - self.failUnless(found == True, 'Identifiers list not updated!') - def testAddReference1(self): - ''' - def addReference(self, section, reference, identifier, position=None): - ''' + self.assertTrue(found, 'Identifiers list not updated!') + + def test_add_reference1(self): + '''def add_reference(self, section, reference, identifier, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section='ServerLayout' reference='Screen' identifier = 'XKit Screen Device' #position=0 #the first ServerLayout section - self.parser.addReference(section, reference, identifier, position=None) - + self.parser.add_reference(section, reference, identifier, position=None) + found = False for pos in self.parser.globaldict[section]: lines = self.parser.globaldict[section][pos] @@ -457,47 +418,45 @@ if line.find(reference) != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == True, 'Reference not added!') - - def testAddReference2(self): - ''' - def addReference(self, section, reference, identifier, position=None): - ''' + + self.assertTrue(found, 'Reference not added!') + + def test_add_reference2(self): + '''def add_reference(self, section, reference, identifier, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section='ServerLayout' reference='Screen' identifier = 'XKit Screen Device' position=0 #the first ServerLayout section - + if len(self.parser.globaldict[section]) == 0: - position = self.parser.makeSection(section, identifier='Default layout') - - self.parser.addReference(section, reference, identifier, position=position) - + position = self.parser.make_section(section, identifier='Default layout') + self.parser.add_reference(section, reference, identifier, position=position) found = False lines = self.parser.globaldict[section][position] for line in lines: if line.find(reference) != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == True, 'Reference not added!') - - def testRemoveReference1(self): - ''' - def removeReference(self, section, reference, identifier, position=None): - ''' + + self.assertTrue(found, 'Reference not added!') + + def test_remove_reference1(self): + '''def remove_reference(self, section, reference, identifier, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section='ServerLayout' reference='Screen' identifier = 'XKit Screen Device' #position=0 #the first ServerLayout section - + if len(self.parser.globaldict[section]) == 0: - position = self.parser.makeSection(section, identifier='Default layout') - - self.parser.addReference(section, reference, identifier, position=None) - self.parser.removeReference(section, reference, identifier, position=None) - + position = self.parser.make_section(section, identifier='Default layout') + + self.parser.add_reference(section, reference, identifier, position=None) + self.parser.remove_reference(section, reference, identifier, position=None) + found = False for pos in self.parser.globaldict[section]: lines = self.parser.globaldict[section][pos] @@ -505,85 +464,83 @@ if line.find(reference) != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == False, 'Reference not removed!') - - def testRemoveReference2(self): - ''' - def removeReference(self, section, reference, identifier, position=None): - ''' + + self.assertFalse(found, 'Reference not removed!') + + def test_remove_reference2(self): + '''def remove_reference(self, section, reference, identifier, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section='ServerLayout' reference='Screen' identifier = 'XKit Screen Device' - position=0 #the first ServerLayout section - + position=0#the first ServerLayout section + if len(self.parser.globaldict[section]) == 0: - position = self.parser.makeSection(section, identifier='Default layout') - - self.parser.addReference(section, reference, identifier, position=position) - self.parser.removeReference(section, reference, identifier, position=position) - + position = self.parser.make_section(section, identifier='Default layout') + + self.parser.add_reference(section, reference, identifier, position=position) + self.parser.remove_reference(section, reference, identifier, position=position) + found = False lines = self.parser.globaldict[section][position] for line in lines: if line.find(reference) != -1 and line.find(identifier) != -1: found = True #print line - self.failUnless(found == False, 'Reference not removed!') - - - def testGetReferences1(self): - ''' - def getReferences(self, section, position, reflist=None): - ''' + + self.assertFalse(found, 'Reference not removed!') + + def test_get_references1(self): + '''def get_references(self, section, position, reflist=None):''' self.this_function_name = sys._getframe().f_code.co_name section='Screen' position=0 #the first ServerLayout section reference= 'Device' identifier = 'XKit Video Device' - - screen = self.parser.makeSection('Screen', identifier=identifier.replace('Video', 'Screen')) - device = self.parser.makeSection(reference, identifier=identifier) - - #if len(self.parser.globaldict[section].setdefault(position, [])) == 0: - self.parser.addReference(section, reference, identifier, position=screen) - - references = self.parser.getReferences(section, screen, reflist=None) - self.failUnless(len(references) > 0, 'No list of References can be retrieved!') - - def testGetReferences2(self): - ''' - def getReferences(self, section, position, reflist=None): - ''' + + screen = self.parser.make_section('Screen', + identifier=identifier.replace('Video', 'Screen')) + device = self.parser.make_section(reference, identifier=identifier) + + self.parser.add_reference(section, reference, identifier, + position=screen) + references = self.parser.get_references(section, screen, reflist=None) + + self.assertTrue(len(references) > 0, + 'No list of References can be retrieved!') + + def test_get_references2(self): + '''def get_references(self, section, position, reflist=None):''' self.this_function_name = sys._getframe().f_code.co_name section='Screen' - position=0 #the first ServerLayout section + position=0#the first ServerLayout section reference='Device' identifier = 'XKit Video Device' reflist=['Device'] if len(self.parser.globaldict[section].setdefault(position, [])) == 0: - self.parser.addReference(section, reference, identifier, position=position) - references = self.parser.getReferences(section, position, reflist=reflist) - self.failUnless(len(references) > 0, 'No list of References can be retrieved!') - - def testMakeSubSection1(self): - ''' - def makeSubSection(self, section, identifier, position=None): - ''' + self.parser.add_reference(section, reference, identifier, + position=position) + references = self.parser.get_references(section, position, + reflist=reflist) + + self.assertTrue(len(references) > 0, + 'No list of References can be retrieved!') + + def test_make_subsection1(self): + '''def make_subsection(self, section, identifier, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' times = 5 for pos in range(times): self.parser.globaldict[section].setdefault(pos, []) - self.parser.makeSubSection(section, identifier) - ''' - self.globaldict['SubSection'] = - {0: {'section': 'Screen', 'identifier': 'Display', - 'position': 0, 'options': [option1, option2, etc.], - etc.} - ''' - + self.parser.make_subsection(section, identifier) + # self.globaldict['SubSection'] = + # {0: {'section': 'Screen', 'identifier': 'Display', + # 'position': 0, 'options': [option1, option2, etc.], + # etc.} + found = 0 for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] @@ -592,24 +549,22 @@ found += 1 #print self.parser.globaldict['SubSection'] #print 'found =', found, '; times =', times - self.failUnless(found >= times, 'The subsections were not created!') - - def testMakeSubSection2(self): - ''' - def makeSubSection(self, section, identifier, position=None): - ''' + self.assertTrue(found >= times, + 'The subsections were not created!') + + def test_make_subsection2(self): + '''def make_subsection(self, section, identifier, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' position = 0 self.parser.globaldict[section].setdefault(position, []) - self.parser.makeSubSection(section, identifier, position=position) - ''' - self.globaldict['SubSection'] = - {0: {'section': 'Screen', 'identifier': 'Display', - 'position': 0, 'options': [option1, option2, etc.], - etc.} - ''' + self.parser.make_subsection(section, identifier, position=position) + + # self.globaldict['SubSection'] = + # {0: {'section': 'Screen', 'identifier': 'Display', + # 'position': 0, 'options': [option1, option2, etc.], + # etc.} found = False for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] @@ -617,69 +572,61 @@ subsection.get('identifier') == identifier and \ subsection.get('position') == position: found = True - self.failUnless(found == True, 'The subsection was not created!') - - - def testRemoveSubSection1(self): - ''' - def removeSubSection(self, section, identifier, position=None): - ''' + + self.assertTrue(found, 'The subsection was not created!') + + def test_remove_subsection1(self): + '''def remove_subsection(self, section, identifier, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' - times = 5 for pos in range(times): self.parser.globaldict[section].setdefault(pos, []) - self.parser.makeSubSection(section, identifier, position=pos) - - self.parser.removeSubSection(section, identifier) - + self.parser.make_subsection(section, identifier, position=pos) + + self.parser.remove_subsection(section, identifier) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - self.failUnless(subsection.get('identifier') != identifier or \ + self.assertTrue(subsection.get('identifier') != identifier or \ subsection.get('section') != section, 'The subsections were not removed!') - - def testRemoveSubSection2(self): - ''' - def removeSubSection(self, section, identifier, position=None): - ''' + + def test_remove_subsection2(self): + '''def remove_subsection(self, section, identifier, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' position = 0 self.parser.globaldict[section].setdefault(position, []) - self.parser.makeSubSection(section, identifier, position=position) - self.parser.removeSubSection(section, identifier, position=position) + self.parser.make_subsection(section, identifier, position=position) + self.parser.remove_subsection(section, identifier, position=position) for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - self.failUnless(subsection.get('identifier') != identifier or \ + self.assertTrue(subsection.get('identifier') != identifier or \ subsection.get('section') != section or \ subsection.get('position') != position, 'The subsections were not removed!') - - - - def testAddSubOption1(self): - ''' - def addSubOption(self, section, identifier, option, value, optiontype=None, position=None): - ''' + + def test_add_suboption1(self): + '''def add_suboption(self, section, identifier, option, value, + option_type=None, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' #position = 0 option = 'Virtual' value = '2048 2048' - + times = 5 for pos in range(times): self.parser.globaldict[section].setdefault(pos, []) - self.parser.makeSubSection(section, identifier) - - self.parser.addSubOption(section, identifier, option, value) - + self.parser.make_subsection(section, identifier) + + self.parser.add_suboption(section, identifier, option, value) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] if subsection.get('identifier') == identifier and \ @@ -689,168 +636,175 @@ for line in lines: if line.find(option) != -1 and line.find(value) != -1: found = True - self.failUnless(found == True, 'Option not added to all the Subsections') - - def testAddSubOption2(self): - ''' - def addSubOption(self, section, identifier, option, value, optiontype=None, position=None): - ''' + + self.assertTrue(found, + 'Option not added to all the Subsections') + + def test_add_suboption2(self): + '''def add_suboption(self, section, identifier, option, value, + option_type=None, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' position = 0 option = 'Virtual' value = '2048 2048' - + self.parser.globaldict[section].setdefault(position, []) - self.parser.makeSubSection(section, identifier, position=position) - - self.parser.addSubOption(section, identifier, option, value, position=position) - + self.parser.make_subsection(section, identifier, position=position) + self.parser.add_suboption(section, identifier, option, value, + position=position) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('section') == section and \ - subsection.get('position') == position: + if (subsection.get('identifier') == identifier + and subsection.get('section') == section + and subsection.get('position') == position): lines = subsection.get('options') found = False for line in lines: if line.find(option) != -1 and line.find(value) != -1: found = True - self.failUnless(found == True, 'Option not added to the Subsection') - - def testAddSubOption3(self): - ''' - def addSubOption(self, section, identifier, option, value, optiontype=None, position=None): - ''' + + self.assertTrue(found, + 'Option not added to the Subsection') + + def test_add_suboption3(self): + '''def add_suboption(self, section, identifier, option, value, + option_type=None, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' #position = 0 option = 'Virtual' value = '2048 2048' - optiontype = 'Option' - + option_type = 'Option' + times = 5 for pos in range(times): self.parser.globaldict[section].setdefault(pos, []) - self.parser.makeSubSection(section, identifier) - - self.parser.addSubOption(section, identifier, option, value, optiontype=optiontype) - + self.parser.make_subsection(section, identifier) + self.parser.add_suboption(section, identifier, option, value, + option_type=option_type) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('section') == section: + if (subsection.get('identifier') == identifier + and subsection.get('section') == section): lines = subsection.get('options') found = False for line in lines: - if line.find(option) != -1 and line.find(value) != -1 and \ - line.find(optiontype) != -1: + if (line.find(option) != -1 and line.find(value) != -1 + and line.find(option_type) != -1): found = True - self.failUnless(found == True, 'Option not added to all the Subsections') - - - def testRemoveSubOption1(self): - ''' - def removeSubOption(self, section, identifier, option, position=None): - ''' + + self.assertTrue(found, + 'Option not added to all the Subsections') + + def test_remove_suboption1(self): + '''def remove_suboption(self, section, identifier, option, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' #position = 0 option = 'Virtual' value = '2048 2048' - optiontype = 'Option' - + option_type = 'Option' + times = 5 for pos in range(times): self.parser.globaldict[section].setdefault(pos, []) - self.parser.makeSubSection(section, identifier) - - self.parser.addSubOption(section, identifier, option, value, optiontype=optiontype) - + self.parser.make_subsection(section, identifier) + self.parser.add_suboption(section, identifier, option, value, + option_type=option_type) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('section') == section: + if (subsection.get('identifier') == identifier + and subsection.get('section') == section): lines = subsection.get('options') found = False for line in lines: if line.find(option) != -1 and line.find(value) != -1: found = True - self.failUnless(found == True, 'Option not added to all the Subsections') - - #self.parser.writeFile(sys.stderr) - - self.parser.removeSubOption(section, identifier, option) - - #self.parser.writeFile(sys.stderr) - + + self.assertTrue(found, + 'Option not added to all the Subsections') + + #self.parser.write(sys.stderr) + self.parser.remove_suboption(section, identifier, option) + #self.parser.write(sys.stderr) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('section') == section: + if (subsection.get('identifier') == identifier + and subsection.get('section') == section): lines = subsection.get('options') found = False for line in lines: if line.find(option) != -1: found = True - self.failUnless(found == False, 'Option not removed from all the Subsections') - def testRemoveSubOption2(self): - ''' - def removeSubOption(self, section, identifier, option, position=None): - ''' + self.assertFalse(found, + 'Option not removed from all the Subsections') + + def test_remove_suboption2(self): + '''def remove_suboption(self, section, identifier, option, + position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' position = 0 option = 'Virtual' value = '2048 2048' - + self.parser.globaldict[section].setdefault(position, []) - self.parser.makeSubSection(section, identifier, position=position) - - self.parser.addSubOption(section, identifier, option, value, position=position) - + self.parser.make_subsection(section, identifier, position=position) + self.parser.add_suboption(section, identifier, option, value, + position=position) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('section') == section and \ - subsection.get('position') == position: + if (subsection.get('identifier') == identifier + and subsection.get('section') == section + and subsection.get('position') == position): lines = subsection.get('options') found = False for line in lines: if line.find(option) != -1 and line.find(value) != -1: found = True - self.failUnless(found == True, 'Option not added to the Subsection') - - self.parser.removeSubOption(section, identifier, option, position=position) - + self.assertTrue(found, + 'Option not added to the Subsection') + + self.parser.remove_suboption(section, identifier, option, + position=position) + for pos in self.parser.globaldict['SubSection']: subsection = self.parser.globaldict['SubSection'][pos] - if subsection.get('identifier') == identifier and \ - subsection.get('position') == position and \ - subsection.get('section') == section: + if (subsection.get('identifier') == identifier + and subsection.get('position') == position + and subsection.get('section') == section): lines = subsection.get('options') found = False for line in lines: if line.find(option) != -1: found = True - self.failUnless(found == False, 'Option not removed from the Subsection') - - def testGetValue1(self): - ''' - def getValue(self, section, option, position, identifier=None, sect=None, reference=None): - + + self.assertFalse(found, + 'Option not removed from the Subsection') + + def test_get_value1(self): + '''def get_value(self, section, option, position, identifier=None, + sect=None, reference=None): + * When dealing with a Section: section= e.g. 'Screen', 'Device', etc. option= the option position= e.g. 0 (i.e. the first element in the list of Screen sections) - reference= used only by getReferences() - + reference= used only by get_references() + * When dealing with a SubSection: section= 'SubSection' (this is mandatory) option= the option @@ -860,89 +814,87 @@ sections) ["position" is a key of an item of the list of subsections see below] - + identifier= the name of the subsection e.g. 'Display' sect = the 'section' key of an item of the list of subsections e.g. the "Display" subsection can be - found in the "Screen" section ('sect' is the latter) - - ''' + found in the "Screen" section ('sect' is the latter)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'TestOption' value = 'Ok' position = 0 - optiontype = 'Option' - + option_type = 'Option' + self.parser.globaldict[section].setdefault(position, []) - self.parser.addOption(section, option, value, optiontype=optiontype, position=position) - - result = self.parser.getValue(section, option, position) - self.failUnless(result == value, 'Incorrect value retrieved') - - - - def testGetValue2(self): - ''' - def getValue(self, section, option, position, identifier=None, sect=None, reference=None): - ''' + self.parser.add_option(section, option, value, + option_type=option_type, position=position) + + result = self.parser.get_value(section, option, position) + + self.assertTrue(result == value, 'Incorrect value retrieved') + + def test_get_value2(self): + '''def get_value(self, section, option, position, identifier=None, + sect=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'TestOption' value = 'Ok' position = 0 - optiontype = None + option_type = None reference = True - + self.parser.globaldict[section].setdefault(position, []) - self.parser.addOption(section, option, value, optiontype=optiontype, - position=position, reference=reference) - - result = self.parser.getValue(section, option, position) - self.failUnless(result == value, 'Incorrect value retrieved') - - - def testGetValue3(self): - ''' - def getValue(self, section, option, position, identifier=None, sect=None, reference=None): - ''' + self.parser.add_option(section, option, value, + option_type=option_type, + position=position, reference=reference) + + result = self.parser.get_value(section, option, position) + + self.assertTrue(result == value, 'Incorrect value retrieved') + + def test_get_value3(self): + '''def get_value(self, section, option, position, identifier=None, + sect=None, reference=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKitDisplay' option = 'TestOption' value = 'Ok' position = 0 - optiontype = 'Option' - + option_type = 'Option' + self.parser.globaldict[section].setdefault(position, []) - self.parser.addSubOption(section, identifier, option, value, - optiontype=optiontype, position=position) - + self.parser.add_suboption(section, identifier, option, value, + option_type=option_type, position=position) + sect = section section = 'SubSection' - - result = self.parser.getValue(section, option, position, - identifier=identifier, sect=sect) - - self.failUnless(result == value, 'Incorrect value retrieved') - - def testGetValue4(self): + + result = self.parser.get_value(section, option, position, + identifier=identifier, sect=sect) + + self.assertTrue(result == value, 'Incorrect value retrieved') + + def test_get_value4(self): self.this_function_name = sys._getframe().f_code.co_name self.parser = xorgparser.Parser(None) - - self.assertRaises(SectionException, - self.parser.getValue, 'Device', 'Identifier', 1) - - def testGetValue5(self): + + self.assertRaises(SectionException, self.parser.get_value, 'Device', + 'Identifier', 1) + + def test_get_value5(self): self.this_function_name = sys._getframe().f_code.co_name self.parser = xorgparser.Parser(None) - device = self.parser.makeSection('Device', identifier='Default Device') - self.assertRaises(OptionException, - self.parser.getValue, 'Device', 'Driver', device) - + device = self.parser.make_section('Device', + identifier='Default Device') + self.assertRaises(OptionException, self.parser.get_value, 'Device', + 'Driver', device) + def testIntegrity1(self): self.this_function_name = sys._getframe().f_code.co_name - + confFile = '\ Section "Screen"\n\ \tIdentifier\t"Default Screen"\n\ @@ -958,17 +910,16 @@ \tOption\t\t"XkbModel"\t"pc105"\n\ \tOption\t\t"XkbLayout"\t"it"\n\ EndSection\n' - + a = open(tempFile, 'w') a.write(confFile) a.close() - - self.assertRaises(ParseException, - xorgparser.Parser, tempFile) - + + self.assertRaises(ParseException, xorgparser.Parser, tempFile) + def testIntegrity2(self): self.this_function_name = sys._getframe().f_code.co_name - + confFile = '\ Section "Screen"\n\ \tIdentifier\t"Default Screen"\n\ @@ -984,17 +935,17 @@ \tOption\t\t"XkbModel"\t"pc105"\n\ \tOption\t\t"XkbLayout"\t"it"\n\ EndSection\n' - + a = open(tempFile, 'w') a.write(confFile) a.close() - + self.assertRaises(ParseException, xorgparser.Parser, tempFile) def testIntegrity3(self): self.this_function_name = sys._getframe().f_code.co_name - + confFile = '\ Section "Screeen"\n\ \tIdentifier\t"Default Screen"\n\ @@ -1010,11 +961,11 @@ \tOption\t\t"XkbModel"\t"pc105"\n\ \tOption\t\t"XkbLayout"\t"it"\n\ EndSection\n' - + a = open(tempFile, 'w') a.write(confFile) a.close() - + self.assertRaises(ParseException, xorgparser.Parser, tempFile) @@ -1090,7 +1041,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' @@ -1103,7 +1054,7 @@ Identifier "MGA 3" Device "card2" EndSection -''' +''', file=confFile) confFile.close() @@ -1114,7 +1065,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Screen" Identifier "New Screen Device" EndSection @@ -1124,7 +1075,7 @@ Option "Whatever" Screen "New Screen Device" 0 0 EndSection -''' +''', file=confFile) confFile.close() @@ -1134,13 +1085,13 @@ except ParseException: valid = False - self.failUnless(valid == True, 'the xorg.conf should be considered valid') + self.assertTrue(valid, 'the xorg.conf should be considered valid') def testIntegrity9(self): self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Screen" Identifier "New Screen Device" EndSection @@ -1155,7 +1106,7 @@ Screen "New Screen Device" 0 0 InputDevice "My device" EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, xorgparser.Parser, tempFile) @@ -1164,7 +1115,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Screen" Identifier "New Screen Device" EndSection @@ -1172,7 +1123,7 @@ Section "Device" Option "FakeOption" "True" EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, xorgparser.Parser, tempFile) @@ -1181,7 +1132,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "ServerLayout" # Uncomment if you have a wacom tablet @@ -1341,7 +1292,7 @@ Section "Extensions" Option "Composite" "Enable" EndSection -''' +''', file=confFile) confFile.close() @@ -1352,16 +1303,17 @@ except ParseException: valid = False - self.failUnless(valid == True, 'This file should be considered valid') + self.assertTrue(valid, + 'This file should be considered valid') def testIntegrity12(self): ''' - def getIdentifier(self, section, position): + def get_identifier(self, section, position): ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "pippo" EndSection @@ -1389,7 +1341,7 @@ InputDevice "Mouse 2" "SendCoreEvents" Option "BlankTime" "5" EndSection -''' +''', file=confFile) confFile.close() @@ -1398,7 +1350,7 @@ def testIntegrity13(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: More than 1 ServerLayout with ServerFlags with more than one default layout @@ -1406,7 +1358,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1457,7 +1409,7 @@ Section "ServerFlags" Option "DefaultServerLayout" "Another Layout" EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, @@ -1465,7 +1417,7 @@ def testIntegrity14(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: No ServerLayout and ServerFlags with one default layout @@ -1473,7 +1425,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1507,7 +1459,7 @@ Section "ServerFlags" Option "DefaultServerLayout" "A Layout" EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, @@ -1515,7 +1467,7 @@ def testIntegrity15(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: One ServerLayout and ServerFlags with one default layout which doesn't exist @@ -1523,7 +1475,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1562,7 +1514,7 @@ Section "ServerFlags" Option "DefaultServerLayout" "A Layout" EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, @@ -1570,7 +1522,7 @@ def testIntegrity16(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: One ServerLayout and ServerFlags with one default layout which doesn't exist @@ -1578,7 +1530,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1618,7 +1570,7 @@ Option "DefaultServerLayout" "A Layout" Enable EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, @@ -1626,12 +1578,12 @@ def testIntegrity17(self): ''' - isDriverEnabled(self, driver) + is_driver_enabled(self, driver) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1641,7 +1593,7 @@ Identifier "Another Video Device" ModelName "" EndSection -''' +''', file=confFile) confFile.close() valid = True try: @@ -1649,16 +1601,16 @@ except ParseException: valid = False - self.failUnless(valid == True, 'The xorg.conf should be valid!') + self.assertTrue(valid, 'The xorg.conf should be valid!') def testIntegrity18(self): ''' - isDriverEnabled(self, driver) + is_driver_enabled(self, driver) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1668,31 +1620,31 @@ Identifier "Another Video Device" Enable EndSection -''' +''', file=confFile) confFile.close() self.assertRaises(ParseException, xorgparser.Parser, tempFile) - def testGetPosition1(self): + def test_get_position1(self): ''' - def getPosition(self, section, identifier): + def get_position(self, section, identifier): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'XKit Screen' - position1 = self.parser.makeSection(section, identifier) - position2 = self.parser.getPosition(section, identifier) + position1 = self.parser.make_section(section, identifier) + position2 = self.parser.get_position(section, identifier) - self.failUnless(position1 == position2, + self.assertTrue(position1 == position2, 'The position was not correctly retrieved') - def testGetPosition2(self): + def test_get_position2(self): ''' - def getPosition(self, section, identifier): + def get_position(self, section, identifier): ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "pippo" EndSection @@ -1700,73 +1652,132 @@ Section "Screen" Identifier "MGA 1" EndSection -''' +''', file=confFile) confFile.close() self.parser = xorgparser.Parser(tempFile) self.assertRaises(IdentifierException, - self.parser.getPosition, 'Screen', 'Default') + self.parser.get_position, 'Screen', 'Default') - def testWriteFile1(self): + def test_write1(self): ''' - def writeFile(self, destination): + def write(self, destination): ''' self.this_function_name = sys._getframe().f_code.co_name - x = xorgparser.Parser() + x = self.parser = xorgparser.Parser() - device = x.makeSection('Device', identifier='Default Device') - x.addOption('Device', 'Driver', 'mydrv', position=device) + device = x.make_section('Device', identifier='Default Device') + x.add_option('Device', 'Driver', 'mydrv', position=device) #x.setValue('Device', 'mydrv', device) oldDict = copy.deepcopy(x.globaldict) - f = tempfile.TemporaryFile() - - x.writeFile(f) + with tempfile.TemporaryFile(mode='w') as f: + x.write(f) newDict = x.globaldict self.assertEqual(oldDict, newDict) - def testWriteFile2(self): + def test_write2(self): ''' - def writeFile(self, destination): + def write(self, destination): ''' self.this_function_name = sys._getframe().f_code.co_name - x = xorgparser.Parser() + x = self.parser = xorgparser.Parser() - device = x.makeSection('Device', identifier='Default Device') - x.addOption('Device', 'Driver', 'mydrv', position=device) + device = x.make_section('Device', identifier='Default Device') + x.add_option('Device', 'Driver', 'mydrv', position=device) #x.setValue('Device', 'mydrv', device) oldDict = copy.deepcopy(x.globaldict) - x.writeFile(tempFile) + x.write(tempFile) newDict = x.globaldict self.assertEqual(oldDict, newDict) - def testWriteFile3(self): + def test_write3(self): ''' - def writeFile(self, destination): + def write(self, destination): ''' self.this_function_name = sys._getframe().f_code.co_name - x = xorgparser.Parser() + x = self.parser = xorgparser.Parser() - device = x.makeSection('Device', identifier='Default Device') - x.addOption('Device', 'Driver', 'mydrv', position=device) + device = x.make_section('Device', identifier='Default Device') + x.add_option('Device', 'Driver', 'mydrv', position=device) #x.setValue('Device', 'mydrv', device) oldDict = copy.deepcopy(x.globaldict) - f = tempfile.TemporaryFile() - x.writeFile(f) + with tempfile.TemporaryFile(mode='w') as f: + x.write(f) self.assertEqual(oldDict, x.globaldict) - f = tempfile.TemporaryFile() - x.writeFile(f) + with tempfile.TemporaryFile(mode='w') as f: + x.write(f) self.assertEqual(oldDict, x.globaldict) - + + def test_write4(self): + ''' + def write(self, destination): + ''' + self.this_function_name = sys._getframe().f_code.co_name + + fakeDeviceOption = '#Option Fake Setting' + fakeMonitorOption = '#Option Fake ScreenSetting' + inventedOption = '#this does not exist' + + confFile = open(tempFile, 'w') + print(''' +Section "Device" + Identifier "Default Video Device" + Driver "foo" + #Option Fake Setting + #another comment +EndSection + +Section "Monitor" + Identifier "Another Video Device" +EndSection + +Section "Monitor" + Identifier "Yet Another Video Device" + #Option Fake ScreenSetting +EndSection +''', file=confFile) + confFile.close() + + # Read the file + y = self.parser = xorgparser.Parser(tempFile) + # Remove the file + os.remove(tempFile) + # Write the data back + y.write(tempFile) + # Delete the object + del y + # Read what we wrote + y = self.parser = xorgparser.Parser(tempFile) + + commentFound = False + for commentSection in y.globaldict[y.commentsection]['Device']: + if fakeDeviceOption in y.globaldict[y.commentsection]['Device'][commentSection]['options']: + commentFound = True + break + + self.assertTrue(commentFound) + + commentFound = False + inventedFound = False + for commentSection in y.globaldict[y.commentsection]['Monitor']: + if fakeMonitorOption in y.globaldict[y.commentsection]['Monitor'][commentSection]['options']: + commentFound = True + if inventedOption in y.globaldict[y.commentsection]['Monitor'][commentSection]['options']: + inventedFound = True + + self.assertTrue(commentFound) + self.assertFalse(inventedFound) + def testParseComments1(self): ''' def __process(self, destination): @@ -1778,7 +1789,7 @@ inventedOption = '#this does not exist' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1794,14 +1805,14 @@ Identifier "Yet Another Video Device" #Option Fake ScreenSetting EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) #print >> sys.stderr, str(y.globaldict) - #y.writeFile(sys.stderr) + #y.write(sys.stderr) commentFound = False for commentSection in y.globaldict[y.commentsection]['Device']: @@ -1809,7 +1820,7 @@ commentFound = True break - self.assert_(commentFound) + self.assertTrue(commentFound) commentFound = False inventedFound = False @@ -1819,8 +1830,8 @@ if inventedOption in y.globaldict[y.commentsection]['Monitor'][commentSection]['options']: inventedFound = True - self.assert_(commentFound) - self.assert_(inventedFound == False) + self.assertTrue(commentFound) + self.assertFalse(inventedFound) def testParseSubComments1(self): ''' @@ -1833,7 +1844,7 @@ inventedOption = '#this does not exist' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1857,14 +1868,14 @@ Identifier "Yet Another Video Device" #Option Fake ScreenSetting EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) #print >> sys.stderr, str(y.globaldict) - #y.writeFile(sys.stderr) + #y.write(sys.stderr) commentFound = False for commentSection in y.globaldict[y.commentsection]['Device']: @@ -1872,7 +1883,7 @@ commentFound = True break - self.assert_(commentFound) + self.assertTrue(commentFound) commentFound = False inventedFound = False @@ -1882,8 +1893,8 @@ if inventedOption in y.globaldict[y.commentsection]['Monitor'][commentSection]['options']: inventedFound = True - self.assert_(commentFound) - self.assert_(inventedFound == False) + self.assertTrue(commentFound) + self.assertFalse(inventedFound) SubOption = '#I rock' commentFound = False @@ -1891,44 +1902,44 @@ if SubOption in y.globaldict[y.commentsection][y.subsection][commentSection]['options']: commentFound = True break - self.assert_(commentFound) + self.assertTrue(commentFound) - def testCommentOutOption1(self): + def test_comment_out_option1(self): ''' - def commentOutOption(self, section, option, value=None, position=None, reference=None): + def comment_out_option(self, section, option, value=None, position=None, reference=None): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' option = 'Fake' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" Option Fake True #another comment EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) #print >> sys.stderr, str(y.globaldict) - #y.writeFile(sys.stderr) + #y.write(sys.stderr) found = False - y.commentOutOption(section, option, value=None, position=None, reference=None) + y.comment_out_option(section, option, value=None, position=None, reference=None) for position in y.globaldict[section]: lines = y.globaldict[section][position] for line in lines: if line.find(option) != -1: found = True #print line - self.failUnless(found == False, 'Option not removed!') + self.assertFalse(found, 'Option not removed!') commentFound = False for commentSection in y.globaldict[y.commentsection]['Device']: @@ -1938,12 +1949,12 @@ #print >> sys.stderr, str(y.globaldict) - self.assert_(commentFound) - #y.writeFile(sys.stderr) + self.assertTrue(commentFound) + #y.write(sys.stderr) - def testCommentOutSubOption1(self): + def test_comment_out_suboption1(self): ''' - def commentOutSubOption(self, section, identifier, option, position=None): + def comment_out_suboption(self, section, identifier, option, position=None): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' @@ -1951,7 +1962,7 @@ option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -1967,12 +1978,12 @@ EndSubSection EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - y.commentOutSubOption(section, identifier, option, position=None) + y.comment_out_suboption(section, identifier, option, position=None) commentFound = False for commentSection in y.globaldict[y.commentsection][y.subsection]: @@ -1991,22 +2002,22 @@ for line in lines: if line.find(option) != -1: found = True - self.failUnless(found == False, 'Option not commented out from all the Subsections') + self.assertFalse(found, 'Option not commented out from all the Subsections') # print >> sys.stderr, str(y.globaldict) -# y.writeFile(sys.stderr) - self.assert_(commentFound) +# y.write(sys.stderr) + self.assertTrue(commentFound) - def testGetSubSections1(self): - '''def getSubSections(self, section, position)''' + def test_get_subsections1(self): + '''def get_subsections(self, section, position)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2035,29 +2046,29 @@ EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(len(screenSub0) == 1) + screenSub0 = y.get_subsections('Screen', 0) + self.assertTrue(len(screenSub0) == 1) - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(len(screenSub1) == 2) + screenSub1 = y.get_subsections('Screen', 1) + self.assertTrue(len(screenSub1) == 2) - def testCommentOutSection1(self): - '''1 def commentOutSection(self, section, identifier=None, position=None)''' + def test_comment_out_section1(self): + '''1 def comment_out_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2098,10 +2109,10 @@ #EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) # the screen sections should have a # reference to their id in y.identifiers @@ -2113,30 +2124,30 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Comment out the first Screen section - y.commentOutSection('Screen', identifier='My Screen') + y.comment_out_section('Screen', identifier='My Screen') # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen was commented out together with # its subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(not screenSub0) + screenSub0 = y.get_subsections('Screen', 0) + self.assertFalse(screenSub0) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(len(screenSub1) == 2) + screenSub1 = y.get_subsections('Screen', 1) + self.assertEqual(2, len(screenSub1)) # print >> sys.stderr, str(y.globaldict) - self.assert_(not y.globaldict['Screen'].get(0)) + self.assertFalse(y.globaldict['Screen'].get(0)) # check that the removed section doesn't have @@ -2153,18 +2164,18 @@ - self.assert_(not hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Comment out the 2nd Screen section - y.commentOutSection('Screen', identifier='My Screen1') - self.assert_(not y.globaldict['Screen'].get(1)) + y.comment_out_section('Screen', identifier='My Screen1') + self.assertFalse(y.globaldict['Screen'].get(1)) # the second Screen was commented out together with # its subsection - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # check that the removed section doesn't have @@ -2180,24 +2191,24 @@ #print >> sys.stderr, "\n\nfound 1 in", str(elem) - self.assert_(not hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertFalse(hasIdentifier1) - y.writeFile(tempFile) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - def testCommentOutSection2(self): - '''2 def commentOutSection(self, section, identifier=None, position=None)''' + def test_comment_out_section2(self): + '''2 def comment_out_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2238,10 +2249,10 @@ #EndSection -''' +''', file=confFile) confFile.close() - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) # the screen sections should have a # reference to their id in y.identifiers @@ -2253,12 +2264,12 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Comment out the first Screen section - y.commentOutSection('Screen', position=0) + y.comment_out_section('Screen', position=0) # check that the removed section doesn't have # a reference in y.identifiers any longer @@ -2273,34 +2284,34 @@ #print >> sys.stderr, "\n\nfound 1 in", str(elem) - self.assert_(not hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertTrue(hasIdentifier1) # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen was commented out together with # its subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(not screenSub0) + screenSub0 = y.get_subsections('Screen', 0) + self.assertFalse(screenSub0) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(len(screenSub1) == 2) + screenSub1 = y.get_subsections('Screen', 1) + self.assertEqual(2, len(screenSub1)) - self.assert_(not y.globaldict['Screen'].get(0)) + self.assertFalse(y.globaldict['Screen'].get(0)) # Comment out the 2nd Screen section - y.commentOutSection('Screen', position=1) - self.assert_(not y.globaldict['Screen'].get(1)) + y.comment_out_section('Screen', position=1) + self.assertFalse(y.globaldict['Screen'].get(1)) # the second Screen was commented out together with # its subsection - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # check that the removed sections don't have @@ -2316,25 +2327,25 @@ #print >> sys.stderr, "\n\nfound 1 in", str(elem) - self.assert_(not hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertFalse(hasIdentifier1) - #y.writeFile(sys.stderr) - y.writeFile(tempFile) + #y.write(sys.stderr) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - def testCommentOutSection3(self): - '''3 def commentOutSection(self, section, identifier=None, position=None)''' + def test_comment_out_section3(self): + '''3 def comment_out_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2375,7 +2386,7 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) @@ -2391,31 +2402,31 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Comment out the all Screen sections - y.commentOutSection('Screen') + y.comment_out_section('Screen') # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen was commented out together with # its subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(not screenSub0) + screenSub0 = y.get_subsections('Screen', 0) + self.assertFalse(screenSub0) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # print >> sys.stderr, str(y.globaldict) - self.assert_(not y.globaldict['Screen'].get(0)) + self.assertFalse(y.globaldict['Screen'].get(0)) - self.assert_(not y.globaldict['Screen'].get(1)) + self.assertFalse(y.globaldict['Screen'].get(1)) # the screen sections should not have a reference @@ -2428,24 +2439,24 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(not hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertFalse(hasIdentifier1) - #y.writeFile(sys.stderr) - y.writeFile(tempFile) + #y.write(sys.stderr) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - def testCommentOutSection4(self): - '''4 def commentOutSection(self, section, identifier=None, position=None)''' + def test_comment_out_section4(self): + '''4 def comment_out_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2490,7 +2501,7 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) @@ -2508,12 +2519,12 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Comment out the first Screen section - y.commentOutSection('Screen', position=0) + y.comment_out_section('Screen', position=0) # print >> sys.stderr, str(y.globaldict) # print >> sys.stderr, '\n' @@ -2529,35 +2540,36 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(not hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertTrue(hasIdentifier1) # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen was commented out together with # its subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(not screenSub0) + screenSub0 = y.get_subsections('Screen', 0) + self.assertFalse(screenSub0) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(len(screenSub1) == 2) + screenSub1 = y.get_subsections('Screen', 1) + self.assertEqual(2, len(screenSub1)) - self.assert_(not y.globaldict['Screen'].get(0)) + self.assertFalse(y.globaldict['Screen'].get(0)) + # Comment out the 2nd Screen section - y.commentOutSection('Screen', position=1) - self.assert_(not y.globaldict['Screen'].get(1)) + y.comment_out_section('Screen', position=1) + self.assertFalse(y.globaldict['Screen'].get(1)) # the second Screen was commented out together with # its subsection - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # screens should not have a reference to their id # in y.identifiers @@ -2569,23 +2581,23 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(not hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertFalse(hasIdentifier1) # ServerFlags should exist - self.assert_(y.globaldict['ServerFlags'].get(0)) + self.assertTrue(y.globaldict['ServerFlags'].get(0)) # serverFlags should not have a reference to its id # in y.identifiers - self.assert_(not y.identifiers.get('ServerFlags')) + self.assertFalse(y.identifiers.get('ServerFlags')) # comment out ServerFlags - y.commentOutSection('ServerFlags') + y.comment_out_section('ServerFlags') # ServerFlags should not exist - self.assert_(not y.globaldict['ServerFlags'].get(0)) + self.assertFalse(y.globaldict['ServerFlags'].get(0)) # Make sure that the option in ServerFlags was preserved # in the comments @@ -2597,27 +2609,27 @@ # serverFlags should not have a reference to its id # in y.identifiers - self.assert_(not y.identifiers.get('ServerFlags')) + self.assertFalse(y.identifiers.get('ServerFlags')) - self.assert_(commentFound) + self.assertTrue(commentFound) - #y.writeFile(sys.stderr) - y.writeFile(tempFile) + #y.write(sys.stderr) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) + y = self.parser = xorgparser.Parser(tempFile) - def testCommentOutSubSection(self): - '''def commentOutSubSection(self, section, identifier, position=None):''' + def test_comment_out_subsection(self): + '''def comment_out_subsection(self, section, identifier, position=None):''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2658,64 +2670,64 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) # print >> sys.stderr, str(y.globaldict) # Try to comment out a subsection which doesn't exist - y.commentOutSubSection('Screen', 'Whatever', 0) + y.comment_out_subsection('Screen', 'Whatever', 0) # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen has 1 subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(len(screenSub0) == 1) + screenSub0 = y.get_subsections('Screen', 0) + self.assertEqual(1, len(screenSub0)) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(len(screenSub1) == 2) + screenSub1 = y.get_subsections('Screen', 1) + self.assertEqual(2, len(screenSub1)) # print >> sys.stderr, str(y.globaldict) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(y.globaldict['Screen'].get(1)) + self.assertTrue(y.globaldict['Screen'].get(1)) # Remove "Whatever" subsection from Screen 1 - y.commentOutSubSection('Screen', 'Whatever', 1) + y.comment_out_subsection('Screen', 'Whatever', 1) - screenSub1 = y.getSubSections('Screen', 1) + screenSub1 = y.get_subsections('Screen', 1) # Screen 1 must have only 1 subsection now - self.assert_(len(screenSub1) == 1) + self.assertEqual(1, len(screenSub1)) # Make sure that the Screen sections are still there - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(y.globaldict['Screen'].get(1)) + self.assertTrue(y.globaldict['Screen'].get(1)) # Let's assume that I change my mind at this point and # decide to comment out the whole section - y.commentOutSection('Screen', position=1) - self.assert_(not y.globaldict['Screen'].get(1)) + y.comment_out_section('Screen', position=1) + self.assertFalse(y.globaldict['Screen'].get(1)) - y.writeFile(tempFile) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) - #y.writeFile(sys.stderr) + y = self.parser = xorgparser.Parser(tempFile) + #y.write(sys.stderr) - def testRemoveSection1(self): - '''by identifier def removeSection(self, section, identifier=None, position=None)''' + def test_remove_section1(self): + '''by identifier def remove_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2756,14 +2768,14 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(y.globaldict['Screen'].get(1)) + self.assertTrue(y.globaldict['Screen'].get(1)) # print >> sys.stderr, str(y.globaldict) # the screen sections should have a reference @@ -2776,29 +2788,29 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Remove Screen "My Screen 1" - y.removeSection('Screen', identifier='My Screen1') + y.remove_section('Screen', identifier='My Screen1') # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen has 1 subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(len(screenSub0) == 1) + screenSub0 = y.get_subsections('Screen', 0) + self.assertEqual(1, len(screenSub0)) # Screen section 2 has 2 subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # print >> sys.stderr, str(y.globaldict) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(not y.globaldict['Screen'].get(1)) + self.assertFalse(y.globaldict['Screen'].get(1)) # check that the removed section doesn't have # a reference in y.identifiers any longer @@ -2810,25 +2822,25 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertFalse(hasIdentifier1) - y.writeFile(tempFile) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) - #y.writeFile(sys.stderr) + y = self.parser = xorgparser.Parser(tempFile) + #y.write(sys.stderr) - def testRemoveSection2(self): - '''by position def removeSection(self, section, identifier=None, position=None)''' + def test_remove_section2(self): + '''by position def remove_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2869,14 +2881,14 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(y.globaldict['Screen'].get(1)) + self.assertTrue(y.globaldict['Screen'].get(1)) # print >> sys.stderr, str(y.globaldict) # the screen sections should have a reference @@ -2889,29 +2901,29 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Remove Screen section 1 - y.removeSection('Screen', position=1) + y.remove_section('Screen', position=1) # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen has 1 subsection - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(len(screenSub0) == 1) + screenSub0 = y.get_subsections('Screen', 0) + self.assertEqual(1, len(screenSub0)) # Screen section 2 has no subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # print >> sys.stderr, str(y.globaldict) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(not y.globaldict['Screen'].get(1)) + self.assertFalse(y.globaldict['Screen'].get(1)) # check that the removed section doesn't have # a reference in y.identifiers any longer @@ -2923,24 +2935,24 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertFalse(hasIdentifier1) - y.writeFile(tempFile) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) - #y.writeFile(sys.stderr) + y = self.parser = xorgparser.Parser(tempFile) + #y.write(sys.stderr) - def testRemoveSection3(self): - '''by type def removeSection(self, section, identifier=None, position=None)''' + def test_remove_section3(self): + '''by type def remove_section(self, section, identifier=None, position=None)''' self.this_function_name = sys._getframe().f_code.co_name section = 'Screen' identifier = 'Display' option = 'Depth' confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -2981,16 +2993,16 @@ #EndSection -''' +''', file=confFile) confFile.close() y = xorgparser.Parser(tempFile) - self.assert_(y.globaldict['Screen'].get(0)) + self.assertTrue(y.globaldict['Screen'].get(0)) - self.assert_(y.globaldict['Screen'].get(1)) + self.assertTrue(y.globaldict['Screen'].get(1)) - self.assert_(y.globaldict['Device'].get(0)) + self.assertTrue(y.globaldict['Device'].get(0)) # print >> sys.stderr, str(y.globaldict) # the screen sections should have a reference @@ -3003,31 +3015,31 @@ elif elem[1] == 1: hasIdentifier1 = True - self.assert_(hasIdentifier0) - self.assert_(hasIdentifier1) + self.assertTrue(hasIdentifier0) + self.assertTrue(hasIdentifier1) # Remove any Screen section - y.removeSection('Screen') + y.remove_section('Screen') # the Device section doesn't have subsections - deviceSub = y.getSubSections('Device', 0) - self.assert_(not deviceSub) + deviceSub = y.get_subsections('Device', 0) + self.assertFalse(deviceSub) # the first Screen has no subsections - screenSub0 = y.getSubSections('Screen', 0) - self.assert_(not screenSub0) + screenSub0 = y.get_subsections('Screen', 0) + self.assertFalse(screenSub0) # Screen section 2 has no subsections - screenSub1 = y.getSubSections('Screen', 1) - self.assert_(not screenSub1) + screenSub1 = y.get_subsections('Screen', 1) + self.assertFalse(screenSub1) # print >> sys.stderr, str(y.globaldict) - self.assert_(not y.globaldict['Screen'].get(0)) + self.assertFalse(y.globaldict['Screen'].get(0)) - self.assert_(not y.globaldict['Screen'].get(1)) + self.assertFalse(y.globaldict['Screen'].get(1)) - self.assert_(y.globaldict['Device'].get(0)) + self.assertTrue(y.globaldict['Device'].get(0)) # check that the removed section doesn't have # a reference in y.identifiers any longer @@ -3042,14 +3054,14 @@ #print >> sys.stderr, "\n\nfound 1 in", str(elem) - self.assert_(not hasIdentifier0) - self.assert_(not hasIdentifier1) + self.assertFalse(hasIdentifier0) + self.assertFalse(hasIdentifier1) - y.writeFile(tempFile) + y.write(tempFile) # Make sure that the output validates - y = xorgparser.Parser(tempFile) - #y.writeFile(sys.stderr) + y = self.parser = xorgparser.Parser(tempFile) + #y.write(sys.stderr) def testOptionPrefix(self): '''Make sure that the option has quotation marks when required''' @@ -3058,17 +3070,17 @@ section = 'ServerFlags' - y.addOption(section, 'OffTime', 1, optiontype='Option', prefix='') - self.assert_(y.globaldict[section][0][0] == '\tOption\t"OffTime"\t1\n') + y.add_option(section, 'OffTime', 1, option_type='Option', prefix='') + self.assertEqual('\tOption\t"OffTime"\t1\n', y.globaldict[section][0][0]) - y.addOption(section, 'OffTime', 1, optiontype='Option', prefix='"') - self.assert_(y.globaldict[section][0][0] == '\tOption\t"OffTime"\t"1"\n') + y.add_option(section, 'OffTime', 1, option_type='Option', prefix='"') + self.assertEqual('\tOption\t"OffTime"\t"1"\n', y.globaldict[section][0][0]) - y.addOption(section, 'OffTime', 1, optiontype=None, prefix='') - self.assert_(y.globaldict[section][0][0] == '\tOffTime\t1\n') + y.add_option(section, 'OffTime', 1, option_type=None, prefix='') + self.assertEqual('\tOffTime\t1\n', y.globaldict[section][0][0]) - y.addOption(section, 'OffTime', 1) - self.assert_(y.globaldict[section][0][0] == '\tOffTime\t"1"\n') + y.add_option(section, 'OffTime', 1) + self.assertEqual('\tOffTime\t"1"\n', y.globaldict[section][0][0]) if __name__ == '__main__': diff -Nru x-kit-0.4.2.3build1/tests/1-test.py x-kit-0.5.0/tests/1-test.py --- x-kit-0.4.2.3build1/tests/1-test.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/tests/1-test.py 2012-06-05 10:58:56.000000000 +0000 @@ -17,8 +17,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -from XKit import xutils -from XKit.xutils import * +from __future__ import print_function +from __future__ import unicode_literals +from xkit import xutils +from xkit.xutils import * import sys import unittest import os @@ -38,15 +40,15 @@ def tearDown(self): self.parser.comments.insert(0, '\n-----' + self.this_function_name + '-----\n') - self.parser.writeFile(destinationFile, test=True) + self.parser.write(destinationFile, test=True) try: os.remove(tempFile) except(OSError, IOError): pass - def testCheckNFixSection1(self): + def test_fix_broken_references1(self): ''' - def checkNFixSection(self, section, position=None, identifier=None): + def fix_broken_references(self): ''' self.this_function_name = sys._getframe().f_code.co_name @@ -70,19 +72,19 @@ self.parser = xutils.XUtils(None) - screen1 = self.parser.makeSection('Screen', identifier='Default Screen Device') - self.parser.addReference('Screen', 'Device', 'Yet Another Video Device', position=screen1) + screen1 = self.parser.make_section('Screen', identifier='Default Screen Device') + self.parser.add_reference('Screen', 'Device', 'Yet Another Video Device', position=screen1) - screen2 = self.parser.makeSection('Screen', identifier='Another Screen Device') - self.parser.addReference('Screen', 'Device', 'Another Video Device', position=screen2) + screen2 = self.parser.make_section('Screen', identifier='Another Screen Device') + self.parser.add_reference('Screen', 'Device', 'Another Video Device', position=screen2) - layout = self.parser.makeSection('ServerLayout', identifier='A Layout') + layout = self.parser.make_section('ServerLayout', identifier='A Layout') - self.parser.addReference('ServerLayout', 'Screen', 'Screen1', position=layout) + self.parser.add_reference('ServerLayout', 'Screen', 'Screen1', position=layout) - self.parser.addReference('ServerLayout', 'InputDevice', 'Mouse 1', position=layout) + self.parser.add_reference('ServerLayout', 'InputDevice', 'Mouse 1', position=layout) - self.parser.checkNFixSection() + self.parser.fix_broken_references() screens = len(self.parser.globaldict['Screen']) @@ -95,56 +97,56 @@ self.failUnless(screens == expectedScreens and devices == expectedDevices and inputDevices == expectedInputDevices, 'Not all the broken sections were fixed!') - def testGetDriver(self): + def test_get_driver(self): ''' - def getDriver(self, section, position): + def get_driver(self, section, position): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' identifier = 'XKit Video Device' option = 'Driver' driver1 = 'xkit' - position = self.parser.makeSection(section, identifier=identifier) + position = self.parser.make_section(section, identifier=identifier) sect = self.parser.globaldict[section].get(position) self.failUnless(sect != None, 'Section not created!') - self.parser.addOption(section, option, driver1, position=position) + self.parser.add_option(section, option, driver1, position=position) - driver2 = self.parser.getDriver(section, position) + driver2 = self.parser.get_driver(section, position) self.failUnless(driver1 == driver2, 'Driver not correctly retrieved!') - def testSetDriver(self): + def test_set_driver(self): ''' - def setDriver(self, section, driver, position): + def set_driver(self, section, driver, position): ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' identifier = 'XKit Video Device' option = 'Driver' driver = 'xkit' - position = self.parser.makeSection(section, identifier=identifier) + position = self.parser.make_section(section, identifier=identifier) sect = self.parser.globaldict[section].get(position) self.failUnless(sect != None, 'Section not created!') - self.parser.addOption(section, option, driver, position=position) + self.parser.add_option(section, option, driver, position=position) - driver1 = self.parser.getDriver(section, position) + driver1 = self.parser.get_driver(section, position) self.setUp() - position = self.parser.makeSection(section, identifier=identifier) + position = self.parser.make_section(section, identifier=identifier) sect = self.parser.globaldict[section].get(position) self.failUnless(sect != None, 'Section not created!') - self.parser.setDriver(section, driver, position) - driver2 = self.parser.getDriver(section, position) + self.parser.set_driver(section, driver, position) + driver2 = self.parser.get_driver(section, position) self.failUnless(driver1 == driver2, 'Driver not correctly set!') - def testIsDriverInSection(self): + def test_section_has_driver(self): ''' - isDriverInSection(self, driver, sectionsList=None) + section_has_driver(self, driver, sections_list=None) ''' self.this_function_name = sys._getframe().f_code.co_name section = 'Device' @@ -154,23 +156,23 @@ self.parser = xutils.XUtils() - position = self.parser.makeSection(section, identifier=identifier) - self.parser.addOption(section, option, driver, position=position) + position = self.parser.make_section(section, identifier=identifier) + self.parser.add_option(section, option, driver, position=position) - status = self.parser.isDriverInSection(driver, sectionsList=[position]) + status = self.parser.section_has_driver(driver, sections_list=[position]) self.failUnless(status == True, 'Driver not in section!') - def testGetDevicesFromServerLayout1(self): + def test_get_devices_in_serverlayout1(self): ''' - getDevicesFromServerLayout(self, position) + get_devices_in_serverlayout(self, position) case: no references ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -206,17 +208,17 @@ Screen "Default Screen Device" Option "Whatever" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesFromServerLayout(0) + devices = self.parser.get_devices_in_serverlayout(0) self.failUnless(len(devices) == 1, 'Only one section should be found!') - def testGetDevicesFromServerLayout2(self): + def test_get_devices_in_serverlayout2(self): ''' - getDevicesFromServerLayout(self, position) + get_devices_in_serverlayout(self, position) case: good references (the sections referred to in the layout exist) @@ -225,7 +227,7 @@ self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -267,25 +269,25 @@ Screen "Default Screen Device" 0 0 Screen "Another Screen Device" RightOf "Default Screen Device" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesFromServerLayout(0) + devices = self.parser.get_devices_in_serverlayout(0) self.failUnless(len(devices) == 2, 'No section should be found!') - def testGetDevicesInUse1(self): + def test_get_devices_in_use1(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: No ServerLayout ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -316,26 +318,26 @@ Device "Another Video Device" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() devices.sort() - self.failUnless(devices == self.parser.globaldict['Device'].keys(), 'All the Device sections should be returned!') + self.failUnless(devices == list(self.parser.globaldict['Device'].keys()), 'All the Device sections should be returned!') - def testGetDevicesInUse2(self): + def test_get_devices_in_use2(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: 1 ServerLayout with no references to Screen sections ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -371,26 +373,26 @@ Screen "Yet Another Screen Device" LeftOf "Another Screen Device" Screen "Another Screen Device" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() devices.sort() self.failUnless(len(devices) == 2, 'Only 2 Device sections should have been returned!') - def testGetDevicesInUse3(self): + def test_get_devices_in_use3(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: 1 ServerLayout with references to Screen sections ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -432,24 +434,24 @@ Screen "Default Screen Device" 0 0 Screen "Another Screen Device" RightOf "Default Screen Device" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() self.failUnless(len(devices) == 2, 'Only 2 Device sections should be found!') - def testGetDevicesInUse4(self): + def test_get_devices_in_use4(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: More than 1 ServerLayout with no ServerFlags ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -493,24 +495,24 @@ Screen "New Screen Device" 0 0 EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() self.failUnless(len(devices) == 3, 'Only 3 Device sections should be found!') - def testGetDevicesInUse5(self): + def test_get_devices_in_use5(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: More than 1 ServerLayout with ServerFlags with no default layout ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -557,23 +559,23 @@ Section "ServerFlags" Option "Whatever" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() self.failUnless(len(devices) == 3, 'Only 3 Device sections should be found!') - def testGetDevicesInUse6(self): + def test_get_devices_in_use6(self): ''' - getDevicesInUse(self) + get_devices_in_use(self) case: More than 1 ServerLayout with ServerFlags with one default layout ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -620,22 +622,22 @@ Section "ServerFlags" Option "DefaultServerLayout" "A Layout" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - devices = self.parser.getDevicesInUse() + devices = self.parser.get_devices_in_use() self.failUnless(len(devices) == 2, 'Only 2 Device sections should be found!') - def testIsDriverEnabled1(self): + def test_is_driver_enabled1(self): ''' - isDriverEnabled1(self, driver) + is_driver_enabled1(self, driver) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -682,24 +684,24 @@ Section "ServerFlags" Option "DefaultServerLayout" "A Layout" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - enabled = self.parser.isDriverEnabled('foo') + enabled = self.parser.is_driver_enabled('foo') self.failUnless(enabled == False, 'The driver should not be enabled!') - enabled = self.parser.isDriverEnabled('bar') + enabled = self.parser.is_driver_enabled('bar') self.failUnless(enabled == False, 'The driver should not be enabled!') - def testIsDriverEnabled2(self): + def test_is_driver_enabled2(self): ''' - isDriverEnabled2(self, driver) + is_driver_enabled2(self, driver) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -709,24 +711,24 @@ Identifier "Another Video Device" Driver "bar" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - enabled = self.parser.isDriverEnabled('foo') + enabled = self.parser.is_driver_enabled('foo') self.failUnless(enabled == False, 'The driver should not be enabled!') - enabled = self.parser.isDriverEnabled('bar') + enabled = self.parser.is_driver_enabled('bar') self.failUnless(enabled == False, 'The driver should not be enabled!') - def testIsDriverEnabled3(self): + def test_is_driver_enabled3(self): ''' - isDriverEnabled3(self, driver) + is_driver_enabled3(self, driver) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -763,24 +765,24 @@ Screen "Default Screen Device" 0 0 Screen "Another Screen Device" RightOf "Default Screen Device" EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - enabled = self.parser.isDriverEnabled('foo') + enabled = self.parser.is_driver_enabled('foo') self.failUnless(enabled == True, 'The driver should be enabled!') - enabled = self.parser.isDriverEnabled('bar') + enabled = self.parser.is_driver_enabled('bar') self.failUnless(enabled == False, 'The driver should not be enabled!') - def testGetScreenDeviceRelationships(self): + def test_get_screen_device_relationships(self): ''' - getScreenDeviceRelationships(self) + get_screen_device_relationships(self) ''' self.this_function_name = sys._getframe().f_code.co_name confFile = open(tempFile, 'w') - print >> confFile, ''' + print(''' Section "Device" Identifier "Default Video Device" Driver "foo" @@ -823,10 +825,10 @@ Option "Whatever" Screen "New Screen Device" 0 0 EndSection -''' +''', file=confFile) confFile.close() self.parser = xutils.XUtils(tempFile) - relationships = self.parser.getScreenDeviceRelationships() + relationships = self.parser.get_screen_device_relationships() correct = {0: {'Screen': 0}, 1: {'Screen': 2}, 2: {'Screen': 1}} diff -Nru x-kit-0.4.2.3build1/tests/run x-kit-0.5.0/tests/run --- x-kit-0.4.2.3build1/tests/run 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/tests/run 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -'''Run self tests.''' - -# (c) 2008 Alberto Milone -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -import unittest, os.path, sys, logging, os -import getopt - -def usage(): - instructionsList = ['The only accepted (optional) parameters are:' - '\n -o, --output=', '\tthe directory where the results \n\ -\t\t\t\tof the tests are saved.' - - '\n -i, --input=', '\tthe xorg.conf used for the tests.' - - '\n -h, --help', '\t\t\thelp page.' - ] - print ''.join(instructionsList) - -def main(): - cwd = os.getcwd() - inputFile = os.path.join(cwd, 'xorg.conf') - outputDir = cwd - err = 'Error: parameters not recognised' - - try: - opts, args = getopt.getopt(sys.argv[1:], 'h:o:i:', ['help', 'output=', 'input=']) - except getopt.GetoptError, err: - # print help information and exit: - print str(err) # will print something like 'option -a not recognized' - usage() - sys.exit(2) - printonly = None - verbose = None - for o, a in opts: - if o in ('-i', '--input'): - inputFile = a - elif o in ('-o', '--output'): - outputDir = a - elif o in ('-h', '--help'): - usage() - sys.exit() - else: - assert False, 'unhandled option' - - - settingsFile = open('settings.py', 'w') - if inputFile == os.path.join(cwd, 'xorg.conf') and outputDir == cwd: - settingsFile.write('import os\ncwd = os.getcwd()\ninputFile = os.path.join(cwd, "xorg.conf")\noutputDir = cwd') - else: - settingsFile.write('inputFile = "%s"\noutputDir = "%s"' % (inputFile, outputDir)) - settingsFile.close() - - # run all tests in our directory - suite = unittest.TestLoader().loadTestsFromNames( - [t[:-3] for t in os.listdir(os.path.dirname(__file__)) - if t.endswith('.py') and t not in ['settings.py', '__init__.py']]) - res = unittest.TextTestRunner(verbosity=2).run(suite) - - -if __name__ == '__main__': - main() diff -Nru x-kit-0.4.2.3build1/tests/run2 x-kit-0.5.0/tests/run2 --- x-kit-0.4.2.3build1/tests/run2 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/tests/run2 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1,78 @@ +#!/usr/bin/python2 +# -*- coding: UTF-8 -*- + +'''Run self tests.''' + +# (c) 2008 Alberto Milone +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import unittest, os.path, sys, logging, os +import getopt + +def usage(): + instructionsList = ['The only accepted (optional) parameters are:' + '\n -o, --output=', '\tthe directory where the results \n\ +\t\t\t\tof the tests are saved.' + + '\n -i, --input=', '\tthe xorg.conf used for the tests.' + + '\n -h, --help', '\t\t\thelp page.' + ] + print(''.join(instructionsList)) + +def main(): + cwd = os.getcwd() + inputFile = os.path.join(cwd, 'xorg.conf') + outputDir = cwd + err = 'Error: parameters not recognised' + + try: + opts, args = getopt.getopt(sys.argv[1:], 'h:o:i:', ['help', 'output=', 'input=']) + except getopt.GetoptError as err: + # print help information and exit: + print(str(err)) # will print something like 'option -a not recognized' + usage() + sys.exit(2) + printonly = None + verbose = None + for o, a in opts: + if o in ('-i', '--input'): + inputFile = a + elif o in ('-o', '--output'): + outputDir = a + elif o in ('-h', '--help'): + usage() + sys.exit() + else: + assert False, 'unhandled option' + + + settingsFile = open('settings.py', 'w') + if inputFile == os.path.join(cwd, 'xorg.conf') and outputDir == cwd: + settingsFile.write('import os\ncwd = os.getcwd()\ninputFile = os.path.join(cwd, "xorg.conf")\noutputDir = cwd') + else: + settingsFile.write('inputFile = "%s"\noutputDir = "%s"' % (inputFile, outputDir)) + settingsFile.close() + + # run all tests in our directory + suite = unittest.TestLoader().loadTestsFromNames( + [t[:-3] for t in os.listdir(os.path.dirname(__file__)) + if t.endswith('.py') and t not in ['settings.py', '__init__.py']]) + res = unittest.TextTestRunner(verbosity=2).run(suite) + + +if __name__ == '__main__': + main() diff -Nru x-kit-0.4.2.3build1/tests/run3 x-kit-0.5.0/tests/run3 --- x-kit-0.4.2.3build1/tests/run3 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/tests/run3 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1,78 @@ +#!/usr/bin/python3 +# -*- coding: UTF-8 -*- + +'''Run self tests.''' + +# (c) 2008 Alberto Milone +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import unittest, os.path, sys, logging, os +import getopt + +def usage(): + instructionsList = ['The only accepted (optional) parameters are:' + '\n -o, --output=', '\tthe directory where the results \n\ +\t\t\t\tof the tests are saved.' + + '\n -i, --input=', '\tthe xorg.conf used for the tests.' + + '\n -h, --help', '\t\t\thelp page.' + ] + print(''.join(instructionsList)) + +def main(): + cwd = os.getcwd() + inputFile = os.path.join(cwd, 'xorg.conf') + outputDir = cwd + err = 'Error: parameters not recognised' + + try: + opts, args = getopt.getopt(sys.argv[1:], 'h:o:i:', ['help', 'output=', 'input=']) + except getopt.GetoptError as err: + # print help information and exit: + print(str(err)) # will print something like 'option -a not recognized' + usage() + sys.exit(2) + printonly = None + verbose = None + for o, a in opts: + if o in ('-i', '--input'): + inputFile = a + elif o in ('-o', '--output'): + outputDir = a + elif o in ('-h', '--help'): + usage() + sys.exit() + else: + assert False, 'unhandled option' + + + settingsFile = open('settings.py', 'w') + if inputFile == os.path.join(cwd, 'xorg.conf') and outputDir == cwd: + settingsFile.write('import os\ncwd = os.getcwd()\ninputFile = os.path.join(cwd, "xorg.conf")\noutputDir = cwd') + else: + settingsFile.write('inputFile = "%s"\noutputDir = "%s"' % (inputFile, outputDir)) + settingsFile.close() + + # run all tests in our directory + suite = unittest.TestLoader().loadTestsFromNames( + [t[:-3] for t in os.listdir(os.path.dirname(__file__)) + if t.endswith('.py') and t not in ['settings.py', '__init__.py']]) + res = unittest.TextTestRunner(verbosity=2).run(suite) + + +if __name__ == '__main__': + main() diff -Nru x-kit-0.4.2.3build1/xkit/xorgparser.py x-kit-0.5.0/xkit/xorgparser.py --- x-kit-0.4.2.3build1/xkit/xorgparser.py 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/xkit/xorgparser.py 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1,2068 @@ +# xorgparser.py -- Core class of X-Kit's parser +# +# Copyright 2008 Alberto Milone +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + +from __future__ import print_function +from __future__ import unicode_literals +import sys +from sys import stdout, stderr +import copy + +class IdentifierException(Exception): + '''Raise if no identifier can be found''' + pass + +class OptionException(Exception): + '''Raise when an option is not available.''' + pass + +class SectionException(Exception): + '''Raise when a section is not available.''' + pass + +class ParseException(Exception): + '''Raise when a postion is not available.''' + pass + +class Parser(object): + '''Only low-level methods here. + + See the xutils.XUtils subclass for higher-level methods.''' + def __init__(self, source=None): + '''source = can be an object or a file. If set to None (default) + Parser will start from scratch with an empty + configuration. + + Public: + + comments = name of the section which stores the commented lines + located outside of the sections in the xorg.conf. + + globaldict = a global dictionary containing all the sections and + options. For further information on globaldict, have a + look at __check_sanity() and at get_value(). + + globaldict['Comments'] = stores the commented lines located inside of + the sections in the xorg.conf. + + require_id = a list of the sections which require to have an + "Identifier" set in the xorg.conf (e.g. Device sections). + + identifiers = a dictionary of the sections which require identifiers. + + sections = a tuple containing the names of all the sections in + globaldict. Their names are not guaranteed to be all legal + in xorg.conf (see "valid_sections"). + + valid_sections = a tuple containing the names of all the sections + which __check_sanity() will look for in the + xorg.conf. Sections with other names will be ignored + by self._check_sanity(). + + references = a list containing the names of all the possible + references.''' + + self.subsection = 'SubSection' + self.commentsection = 'Comments' + self.source = source + self.sections = ('InputDevice', + 'Device', + 'Module', + 'Monitor', + 'Screen', + 'ServerLayout', + 'ServerFlags', + 'Extensions', + 'Files', + 'InputClass', + 'DRI', + 'VideoAdaptor', + 'Vendor', + 'Modes', + self.subsection, + self.commentsection) + # "Comments" is not a valid section + self.valid_sections = self.sections[:-1] + + self.require_id = [ + 'InputClass', + 'InputDevice', + 'Device', + 'Monitor', + 'Screen', + 'ServerLayout' + ] + self.references = [ + 'Device', + 'InputDevice', + 'Monitor', + 'Screen' + ] + + self.identifiers = {}.fromkeys(self.require_id) + + self.comments = [] + self._gdict = {}.fromkeys(self.sections, 0) + for elem in self._gdict: + self._gdict[elem] = {} + + self._check_sanity() + + def _get_global(self): + return self._gdict + + def _set_global(self, global_dict): + self._gdict = global_dict + + # Property to expose _gdict as globaldict + globaldict = property(_get_global, _set_global) + + def _check_sanity(self): + '''Perform a sanity check of the file and fill self.globaldict with + all the sections and subsections in the xorg.conf + + + empty = is the file empty? If yes, then don't check if: + * the last section is not complete + * there are duplicates + + has_section: + * == True: a section is already open + * == False: a section is closed and/or a new section can be opened + + has_subsection: + * == True: a subsection is already open + * == False: a section is closed and/or a new section can be opened + + section_flag: + * == '':a section is closed and/or a new section can be opened + * == the name the current section + + section_tags = counter of the number of Section and EndSection strings + + subsection_tags = counter of the number of SubSection and EndSubSection + strings + + lines_list = the list of the lines in the source object. + + global_iters = counts how many times each kind of section + (section_flag) is found in the xorg.conf''' + + #See if the source is a file or a file object + #and act accordingly + file = self.source + if file == None: + lines_list = [] + else: + if not hasattr(file, 'write'):#it is a file + myfile = open(file, 'r') + lines_list = myfile.readlines() + myfile.close() + else:#it is a file object + lines_list = file.readlines() + + + # Create a dictionary such as the following: + # {'Device': {}, 'InputDevice': {}} + + global_iters = {}.fromkeys(self.sections, 0) + + empty = True + + has_section = False + has_subsection = False + section_flag = '' + + section_tags = 0 + subsection_tags = 0 + + it = 0 + for line in lines_list: + if line.strip().startswith('#'): + if has_section == False: + self.comments.append(line) + else:#has_section == True + section_pos = global_iters[section_flag] + if has_subsection == False: + self._gdict[self.commentsection].setdefault(section_flag, {}) + temp_dict = self._gdict[self.commentsection][section_flag] + temp_dict.setdefault(section_pos, {}) + temp_dict[section_pos].setdefault('identifier', None) + temp_dict[section_pos].setdefault('position', section_pos) + temp_dict[section_pos].setdefault('section', None) + temp_dict[section_pos].setdefault('options', []) + temp_dict[section_pos]['options'].append(line.strip()) + else:#has_subsection == True + curlength = global_iters[self.subsection] + self._gdict[self.commentsection].setdefault(self.subsection, {}) + temp_dict = self._gdict[self.commentsection][self.subsection] + temp_dict.setdefault(curlength, {}) + temp_dict[curlength].setdefault('identifier', subsection_id) + temp_dict[curlength].setdefault('position', section_pos) + temp_dict[curlength].setdefault('section', section_flag) + temp_dict[curlength].setdefault('options', []) + temp_dict[curlength]['options'].append(line.strip()) + del temp_dict + + + # See if the name of the section is acceptable + # i.e. included in self.valid_sections + elif line.lower().strip().startswith('section'):#Begin Section + test_line_found = False + for sect in self.valid_sections: + if line.lower().find('"' + sect.lower() + '"') != -1: + test_line_found = True + section = sect + break + if not test_line_found: + # e.g. in case the name of the section is not + # recognised: + # Section "whatever" + error = ('The name in the following line is invalid for a ' + 'section:\n%s' % (line)) + raise ParseException(error) + else: + if has_section == False: + section_tags += 1 + + section_flag = section + empty = False + has_section = True + else: + error = 'Sections cannot be nested in other sections.' + raise ParseException(error) + elif line.lower().strip().startswith('endsection') == True: + #End Section + section_tags += 1 + if has_section == True and has_subsection == False: + global_iters[section_flag] += 1 + + section_flag = '' + has_section = False + else: + error = 'An EndSection is in the wrong place.' + raise ParseException(error) + elif line.lower().strip().startswith('subsection') == True: + #Begin SubSection + subsection_tags += 1 + + if has_section == True and has_subsection == False: + has_subsection = True + subsection_id = line[line.find('"') + 1: + line.rfind('"')].strip() + + self._gdict.setdefault(self.subsection, {}) + curlength = global_iters[self.subsection] + self._gdict[self.subsection][curlength] = {} + # self._gdict - keys: + # + # section = the section in which the subsection is + # located (e.g. "Screen") + # position = e.g. in key 0 of the + # self._gdict['Screen'] + # identifier = e.g. 'Display' (in SubSection "Display") + # options = a list of lines with the options + + temp_dict = self._gdict[self.subsection][curlength] + temp_dict['section'] = section_flag + try: + temp_dict['position'] = global_iters[section_flag] + except KeyError: + del temp_dict + error = ('SubSections can be nested only in well ' + 'formed sections.') + raise ParseException(error) + temp_dict['identifier'] = subsection_id + temp_dict['options'] = [] + del temp_dict + else: + error = ('SubSections can be nested only in well formed ' + 'sections.') + raise ParseException(error) + + elif line.lower().strip().startswith('endsubsection') == True: + #End SubSection + subsection_tags += 1 + + if has_subsection == True: + has_subsection = False + global_iters[self.subsection] += 1 + else: + error = ('SubSections can be closed only after being ' + 'previously opened.') + raise ParseException(error) + else: + if section_flag != '': + #any other line + if line.strip() != '': + #options + if has_subsection == True: + # section = the section in which the subsection + # is located (e.g. "Screen") + # position = e.g. in key 0 of the + # self._gdict['Screen'] + # identifier = e.g. 'Display' (in SubSection + # "Display") + # options = a list of lines with the options + self._gdict[self.subsection][curlength][ + 'options'].append('\t' + line.strip() + '\n') + else: + self._gdict.setdefault(section_flag, {}) + curlength = global_iters[section_flag] + self._gdict[section_flag].setdefault(curlength, + []).append('\t' + line.strip() + '\n') + it += 1 + + if not empty: + # If the last section is not complete + if section_tags % 2 != 0 or subsection_tags % 2 != 0: + error = 'The last section is incomplete.' + raise ParseException(error) + + # Fill self.identifiers + self._fill_identifiers() + + + # Make sure that the configuration file is compliant with + # the rules of xorg + + self._check_syntax() + + else: + self._fill_identifiers() + + def _check_syntax(self): + '''This method contains the several checks which can guarantee + compliance with the syntax rules of the xorg.conf''' + +# ''' +# Raise an exception if there are duplicate options i.e. +# options (not references) of the same kind with the same +# or with a different value. +# +# e.g. Driver "nvidia" and Driver "intel" cannot coexist in the +# same Device section. +# ''' +# if len(self.check_duplicate_options()) > 0: +# error = ('There cannot be Duplicate Options:\n%s' % +# (str(self.check_duplicate_options()))) +# raise ParseException(error) + + + # Raise an exception if there are duplicate sections i.e. + # sections of the same kind (e.g. "Device") with the same + # identifier. + # + # e.g. The following configuration is not allowed: + # + # Section "Device" + # Identifier "My Device" + # EndSection + # + # Section "Device" + # Identifier "My Device" + # EndSection + if len(self.get_duplicate_sections()) > 0: + error = ('There cannot be Duplicate Sections:\n%s' + % (str(self.get_duplicate_sections()))) + raise ParseException(error) + + + # One word entries are not acceptable as either options or references. + # If one is found, ParseException will be raised. + self._validate_options() + + + # Raise an exception if there are broken references i.e. references + # to sections which don't exist. + # + # For example, if the xorg.conf were the following: + # + # Section "Device" + # Identifier "Another Device" + # EndSection + # + # Section "Screen" + # Identifier "My Screen" + # Device "My Device" + # EndSection + # + # There would be no Device section which has "My Device" as an + # identifier + broken = self.get_broken_references() + + it = 0 + for section in broken: + it += len(broken[section]) + if it > 0: + error = 'There cannot be Broken References:\n%s' % (str(broken)) + raise ParseException(error) + + + # If there are sections which don't have an identifier + # but they should (i.e. they are in self.require_id) + # + # NOTE: if there are empty sections without an identifier + # e.g. Section "Device" + # EndSection + # + # they won't trigger the ParseException but won't + # cause any problem since they will be completely + # ignored and won't appear in the target file. + for section in self.require_id: + if len(self._gdict[section]) != len(self.identifiers[section]): + error = ('Not all the sections which require an identifier ' + 'have an identifier.') + raise ParseException(error) + + # The ServerLayout section must have at least 1 reference to a + # "Screen" section + if len(self._gdict['ServerLayout']) > 0: + for section in self._gdict['ServerLayout']: + screen_references = self.get_references('ServerLayout', + section, + reflist=['Screen']) + if len(screen_references['Screen']) == 0: + error = ('The ServerLayout section must have at ' + 'least 1 reference to a "Screen" section.') + raise ParseException(error) + + + # No more than one default ServerLayout can be specified in the + # ServerFlags section + default_layout = self.get_default_serverlayout() + if len(default_layout) > 0: + if len(default_layout) > 1: + error = ('No more than one default ServerLayout can be ' + 'specified in the ServerFlags section.') + raise ParseException(error) + + if not self.is_section('ServerLayout', position=default_layout[0]): + error = 'The default ServerLayout does not exist.' + raise ParseException(error) + + def _fill_identifiers(self): + '''Fill self.identifiers + + self.identifiers has the section types as keys and a list of tuples + as values. The tuples contain the identifier and the position of + each section. + + Here's a basic scheme: + + self.identifiers = {section_type1: [ + (identifier1, position1), + (identifier2, position2) + ], etc. + } + + Concrete example: + + self.identifiers = {'Device': [ + ('Configured Video Device', 0), + ('Another Video Device', 1) + ], + 'Screen': [ + ('Configured Screen Device', 0), + ('Another Screen Device', 1) + ], + } ''' + + for sect in self.require_id:#identifiers.keys(): + self.identifiers[sect] = [] + it = 0 + for elem in self._gdict[sect]: + try: + identifier = self.get_value(sect, 'Identifier', it) + except (OptionException, SectionException): + #if no identifier can be found + error = ('No Identifier for section %s, position %d, ' + 'can be found.' % (sect, elem)) + raise ParseException(error) + try: + identifier.append('') + identifier = identifier[0] + except AttributeError: + pass + + self.identifiers[sect].append((identifier, it)) + it += 1 + + def _validate_options(self): + '''One word entries are not acceptable as either options or references + + If a one word entry is found, ParseException will be raised.''' + + # Sections in sections_whitelist won't be validated + sections_whitelist = ['Files', 'Comments'] + options_whitelist = ['endmode'] + for section in self.sections: + if section not in sections_whitelist: + for position in self._gdict[section]: + if section == self.subsection:#'SubSection': + options = self._gdict[section][position]['options'] + else: + options = self._gdict[section][position] + + + for option in options: + option = option.strip() + if option.find('#') != -1:#remove comments + option = option[0: option.find('#')] + + error = ('The following option is invalid: %s' + % (option.strip())) + + optbits = self._clean_duplicates(option, + include_null=True) + + if (len(optbits) == 1 + and optbits[0].strip().lower() not + in options_whitelist): + raise ParseException(error) + + if not optbits[0][0].isalpha(): + raise ParseException(error) + + def get_duplicate_options(self, section, position): + '''See if there are duplicate options in a section + + It is ok to have duplicated references e.g. several Load options, or + Screen, etc. though''' + + blacklist = ['driver', 'busid', 'identifier'] + total = [] + duplicates = [] + + if section == 'SubSection': + options = self._gdict[section][position]['options'] + else: + options = self._gdict[section][position] + + for option in options: + option = option.strip() + if option.find('#') != -1:#remove comments + option = option[0: option.find('#')] + + optbits = self._clean_duplicates(option) + # optbits may look like this: + # + # ['Option', 'TestOption1', '0'] + # + # or + # ['Screen', 'My screen 1'] + try: + if optbits[0].lower() in blacklist: + total.append(optbits[0]) + elif optbits[0].lower() == 'option': + if len(optbits) > 1 and optbits[1] != None: + ''' + make sure it's not a broken option e.g. + Option + ''' + total.append(optbits[1]) + except (AttributeError, IndexError): + pass + final = {} + for option in total: + if final.get(option) != None: + duplicates.append(option) + else: + final[option] = option + return duplicates + + def check_duplicate_options(self): + '''Look for and return duplicate options in all sections''' + + duplicates = {} + for section in self._gdict: + for elem in self._gdict[section]: + duplopt = self.get_duplicate_options(section, elem) + if len(duplopt) > 0: + duplicates.setdefault(section, {}).setdefault(elem, + duplopt) + + return duplicates + + def _clean_duplicates(self, option, include_null=None): + '''Clean the option and return all its components in a list + + include_null - is used only by _validate_options() and makes + sure that options with a null value assigned in quotation + marks are not considered as one-word options''' + + #print '\nCLEAN', repr(option) + optbits = [] + optbit = '' + it = 0 + quotation = 0 + optcount = option.count('"') + if optcount > 0:#dealing with a section option + for i in option: + #print 'i', repr(i), 'optbit', optbit + if not i.isspace(): + if i == '"': + quotation += 1 + else: + optbit += i + else: + + if quotation % 2 != 0: + optbit += i + + else: + if len(optbit) > 0: + optbits.append(optbit) + #print 'i=', i, 'optbit=', optbit + optbit = '' + + if it == len(option) - 1: + if optbit != '': + optbits.append(optbit) + #print 'i=END', 'optbit=', optbit + it += 1 + else:#dealing with a subsection option + for i in option: + #print 'i', repr(i), 'optbit', optbit + if not i.isspace(): + optbit += i + else: + if len(optbit) > 0: + optbits.append(optbit) + #print 'i=', i, 'optbit=', optbit + optbit = '' + + if it == len(option) - 1: + if optbit != '': + optbits.append(optbit) + #print 'i=END', 'optbit=', optbit + else: + if include_null: + optbit = '' + optbits.append(optbit) + it += 1 + + if include_null and len(optbits) != optcount/2 +1: + # e.g. if the option looks like the following: + # + # Modelname "" + # + # add a '' which wouldn't be caught by this method otherwise. + optbit = '' + optbits.append(optbit) + + return optbits + + def get_duplicate_sections(self): + '''Return a dictionary with the duplicate sections i.e. sections + of the same kind, with the same identifier''' + + duplicates = {} + for section in self.identifiers: + temp = [] + for sect in self.identifiers[section]: + temp.append(sect[0]) + for elem in temp: + if temp.count(elem) > 1: + duplicates.setdefault(section, {}).setdefault(elem, + temp.count(elem)) + + return duplicates + + + def add_option(self, section, option, value, option_type=None, + position=None, reference=None, prefix='"'): + '''Add an option to a section + + section= the section which will have the option added + option= the option to add + value= the value which will be assigned to the option + position= e.g. 0 (i.e. the first element in the list of Screen + sections) + option_type= if set to "Option" it will cause the option to look like + the following: + Option "NameOfTheOption" "Value" + + Otherwise it will look like the following: + NameOfTheOption "Value" + position= e.g. 0 (i.e. the first element in the list of Screen + sections) + reference= used only in a particular case of reference (see + add_reference) + + prefix= usually quotation marks are used for the values (e.g. "True") + however sometimes they don't have to be used + (e.g. DefaultDepth 24) and prefix should be set to '' instead + of '"' ''' + refSections = ['device'] + #prefix = '"'#values are always in quotation marks + if position != None: + if self._gdict[section].get(position) == None: + raise SectionException + if reference: + # Remove an option if it has a certain assigned value. We want + # to do this when removing a reference. + self.remove_option(section, option, value=value, + position=position) + #print 'Remove', option, 'from', section, 'position', position + else: + # value has to be set to None, however there is no way to do + # so other than this since add_option() cannot be called with + # value=None. Hence the need for this ugly nested if-block. + self.remove_option(section, option, position=position) + else: + #print 'Remove', option, 'from all', section + self.remove_option(section, option) + if option_type == None: + if reference == None: + toadd = ('\t' + option + '\t' + prefix + str(value) + prefix + + '\n') + else: + if section.strip().lower() not in refSections: + # e.g. Screen "New Screen" + toadd = ('\t' + option + '\t' + prefix + str(value) + + prefix + '\n') + else: + # e.g. Screen 0 + # which is used for Xinerama setups in the Device section + toadd = '\t' + option + '\t' + str(value) + '\n' + else: + toadd = ('\t' + option_type + '\t' + '"' + option + '"' + '\t' + + prefix + str(value) + prefix + '\n') + + if len(self._gdict[section]) == 0: + self._gdict[section] = {} + self._gdict[section][0] = [] + if section in self.require_id: + identifier = '\tIdentifier\t"Default ' + section + '"\n' + self._gdict[section][0].append(identifier) + if position == None: + for elem in self._gdict[section]: + self._gdict[section][elem].append(toadd) + else: + self._gdict[section][position].append(toadd) + + def _get_options_to_blacklist(self, section, option, value=None, + position=None, reference=None): + '''Private method shared by remove_option and comment_out_option''' + to_remove = {} + if len(self._gdict[section]) != 0:#if the section exists + + if position == None: + #print 'Removing', option, 'from all', section, 'sections' + for elem in self._gdict[section]: + it = 0 + for line in self._gdict[section][elem]: + if value != None: + #print 'line =', line, 'option=', option, 'value', + # value + if (line.lower().find(option.lower()) != -1 + and line.lower().find(value.lower()) != -1): + to_remove.setdefault(elem, []).append(it) + else: + if line.lower().find(option.lower()) != -1: + to_remove.setdefault(elem, []).append(it) + it += 1 + else: + if self._gdict[section].get(position) == None: + return + else: + #print 'Removing', option, 'from', section, 'position', + # position + it = 0 + for line in self._gdict[section][position]: + if value != None: + # Remove the option only if it has a certain value + # assigned. This is useful in case we want to + # remove a reference to a certain Section from + # another section: + # e.g. Screen "Generic Screen". + if (line.lower().find(option.lower()) != -1 + and line.lower().find(value.lower()) != -1): + to_remove.setdefault(position, []).append(it) + else: + # Remove the option without caring about the + # assigned value + if line.lower().find(option.lower()) != -1: + to_remove.setdefault(position, []).append(it) + it += 1 + return to_remove + + def remove_option(self, section, option, value=None, position=None, + reference=None): + '''Remove an option from a section. + + section= the section which will have the option removed + option= the option to remove + value= if you want to remove an option only if it has a certain value + position= e.g. 0 (i.e. the first element in the list of Screen + sections)''' + + to_remove = self._get_options_to_blacklist(section, option, value, + position, reference) + for part in to_remove: + modded = 0 + for line in to_remove[part]: + realpos = line - modded + del self._gdict[section][part][realpos] + modded += 1 + + def make_section(self, section, identifier=None): + '''Create a new section and return the position of the section + + The position is relative to the list of sections of the same type + (e.g. "Screen") so as to make it available in case the user wants + to add some options to it. + + The identifier and the position of the new section is added to + self.identifiers[section] + + section= the section to create + identifier= the identifier of a section (if the section requires + an identifier)''' + + position = len(self._gdict[section]) + + if section in self.require_id: + if identifier != None: + option = 'Identifier' + # Don't create a new section if one of the same kind and + # with the same 'Identifier' is found + create = True + for sub in self._gdict[section]: + if self.get_value(section, option, sub): + try: + if (self.get_value(section, + option, + sub).strip().lower() + == identifier.strip().lower()): + create = False + break + except AttributeError: + for elem in self.get_value(section, option, sub): + #print 'elem=', elem, 'id=', identifier + if (elem.strip().lower() + == identifier.strip().lower()): + create = False + break + + if create: + self._gdict[section][position] = [] + self.add_option(section, option, value=identifier, + position=position) + # Add to identifiers + self.identifiers[section].append((identifier, position)) + #print 'Created section', section, 'id =', identifier, + # 'position =', position + #else: + #print section, 'Section labelled as', identifier, + #'already exists. None will be created.' + else: + raise IdentifierException(('%s Section requires an identifier' + %(section))) + else: + self._gdict[section][position] = [] + return position + + def remove_section(self, section, identifier=None, position=None): + '''Remove Sections by identifier, position or type''' + # Remove any section of "section" type with the same identifier + # currently sections of the same type cannot have the same id + # for obvious reasons + to_remove = {} + if identifier: + try: + pos = self.get_position(section, identifier) + to_remove.setdefault(pos, None) + except IdentifierException: + pass + + # Comment the section of "section" type at position "position" + elif position != None: + if self.is_section(section, position=position): + to_remove.setdefault(position, None) + + # Comment any section of "section" type + else: + allkeys = list(self._gdict[section].keys()) + to_remove = {}.fromkeys(allkeys) + + # If the section has an identifier i.e. if the section + # is in self.require_id + if section in self.require_id: + # Get the references to remove from self.identifiers + it = 0 + for reference in self.identifiers[section]: + try: + ref = list(to_remove.keys()).index(reference[1]) + to_remove[list(to_remove.keys())[ref]] = it + except ValueError: + pass + it += 1 + + sorted_remove = list(to_remove.keys()) + sorted_remove.sort() + + modded = 0 + for sect in sorted_remove: + subsections = self.get_subsections(section, sect) + + # Remove all its SubSections from SubSection + for sub in subsections: + try:#remove subsection + del self._gdict[self.subsection][sub] + except KeyError: + pass + + # Remember to remove any related entry from the "Comments" + # section + self._remove_comment_entries(section, sect) + + # Remove the section from _gdict + del self._gdict[section][sect] + + # Remove the reference from identifiers + # if such reference exists + identref = to_remove[sect] + if identref != None: + realpos = identref - modded + + del self.identifiers[section][realpos] + modded += 1 + + + def add_reference(self, section, reference, identifier, position=None): + '''Add a reference to a section from another section. + + For example: + to put a reference to the Screen section named "Default Screen" + in the ServerLayout section you should do: + + section='ServerLayout' + reference='Screen' + identifier='Default Screen' + position=0 #the first ServerLayout section + + NOTE: if position is set to None it will add such reference to any + instance of the section (e.g. to any ServerLayout section)''' + + self.add_option(section, reference, value=identifier, + position=position, reference=True) + + def remove_reference(self, section, reference, identifier, position=None): + '''Remove a reference to a section from another section. + + For example: + to remove a reference to Screen "Default Screen" from the + ServerLayout section you should do: + + section='ServerLayout' + reference='Screen' + identifier='Default Screen' + position=0 #the first ServerLayout section + + NOTE: if position is set to None it will remove such reference from + any instance of the section (e.g. from any ServerLayout section)''' + + self.remove_option(section, reference, value=identifier, + position=position, reference=True) + + def get_references(self, section, position, reflist=None): + '''Get references to other sections which are located in a section. + + section= the section (e.g. "Screen") + position= e.g. 0 stands for the 1st Screen section + reflist= a list of references which this function should look for. + The default list of references is self.require_id but this + list can be overridden by the reflist argument so that, for + example, if reflist is set to ['Device'], this function will + look for references to other devices only (references to, + say, screens, will be ignored).''' + + if reflist == None: + options = self.require_id + else: + # if the following operation fails + # an AttributeError will be raised + # since reflist must be a list + reflist.append('') + del reflist[-1] + options = reflist + references = {}.fromkeys(options) + for option in options: + references[option] = [] + reference_dict = {} + try: + ref = self.get_value(section, option, position, reference=True) + except OptionException: + ref = [] + if ref: + try:#if ref is already a list + ref.append('') + del ref[-1] + + for elem in ref: + try: + elem.append('') + del elem[-1] + for extref in elem: + if elem: + reference_dict.setdefault(extref) + except AttributeError:# if ref is a string + if elem: + reference_dict.setdefault(elem) + except AttributeError:# if ref is a string + if ref: + reference_dict.setdefault(ref) + for reference in list(reference_dict.keys()): + references[option].append(reference) + return references + + def make_subsection(self, section, identifier, position=None): + '''Create a new subsection inside of a section. + + section= the section to which the subsection will belong + identifier= the name of the subsection + position= the position of the section in the dictionary with the + sections (e.g. the 1st "Screen" section would be 0). + If set to None, it will create a new subsection in all + the instances of the said section (e.g. in all the + "Screen" sections)''' + + curlength = len(self._gdict[self.subsection]) + + if position == None: + for elem in self._gdict[section]: + # don't create a new subsection if one with the same + # 'section', 'identifier' and 'position' is found + create = True + for sub in self._gdict[self.subsection]: + if (self._gdict[self.subsection][sub].get('section') == + section and + self._gdict[self.subsection][sub].get('identifier') == + identifier and + self._gdict[self.subsection][sub].get('position') == + elem): + create = False + + if create: + temp_dict = self._gdict[self.subsection][curlength] = {} + temp_dict['section'] = section + temp_dict['identifier'] = identifier + temp_dict['options'] = [] + temp_dict['position'] = elem + del temp_dict + curlength += 1 + else: + # don't create a new subsection if one with the same + # 'section', 'identifier' and 'position' is found + create = True + for sub in self._gdict[self.subsection]: + if (self._gdict[self.subsection][sub].get('section') == + section and + self._gdict[self.subsection][sub].get('identifier') == + identifier and + self._gdict[self.subsection][sub].get('position') == + position): + create = False + + if create: + temp_dict = self._gdict[self.subsection][curlength] = {} + temp_dict['section'] = section + temp_dict['identifier'] = identifier + temp_dict['options'] = [] + temp_dict['position'] = position + del temp_dict + + def remove_subsection(self, section, identifier, position=None): + '''Remove a subsection from one or more sections. + + section= the section to which the subsection belongs + identifier= the name of the subsection + position= the position of the section in the dictionary with the + sections (e.g. the 1st "Screen" section would be 0). + If set to None it will remove a subsection from all the + instances of the said section (e.g. in all the "Screen" + sections)''' + + curlength = len(self._gdict[self.subsection]) + to_remove = [] + if position == None: + for elem in self._gdict[self.subsection]: + if (self._gdict[self.subsection][elem].get('section') == + section and + self._gdict[self.subsection][elem].get('identifier') == + identifier): + to_remove.append(elem) + else: + for elem in self._gdict[self.subsection]: + if (self._gdict[self.subsection][elem].get('section') == + section and + self._gdict[self.subsection][elem].get('identifier') == + identifier and + self._gdict[self.subsection][elem].get('position') == + position): + to_remove.append(elem) + for item in to_remove: + del self._gdict[self.subsection][item] + + def add_suboption(self, section, identifier, option, value, + option_type=None, position=None): + '''Add an option to one or more subsections. + + section= the section which contains the subsection + identifier= the identifier of the SubSection (e.g. Display) + option= the option to add + value= the value which will be assigned to the option + option_type= if set to "Option" it will cause the option to look like + the following: + Option "NameOfTheOption" "Value" + + Otherwise it will look like the following: + NameOfTheOption "Value" + position= e.g. 0 (i.e. the option will be added to a subsection which + is located in the first element in the list of Screen + sections)''' + + prefix = '"' + not_to_create = [] + to_modify = [] + if position == None: + self.remove_suboption(section, identifier, option) + else: + self.remove_suboption(section, identifier, option, + position=position) + if option_type == None: + toadd = '\t' + option + '\t' + str(value) + '\n' + else: + toadd = ('\t' + option_type + '\t' + prefix + option + prefix + + '\t' + prefix + str(value) + prefix + '\n') + + curlength = len(self._gdict[self.subsection]) + if curlength == 0: + self._gdict[self.subsection][0] = {'section': section, + 'identifier': identifier, 'options': []} + + if position == None: + # if there is not a subsection for each selected section then + # create it + cursect_length = len(self._gdict[section]) + it = 0 + while it < cursect_length: + for elem in self._gdict[self.subsection]: + if (self._gdict[self.subsection][elem].get("position") == + it and + self._gdict[self.subsection][elem].get("section") == + section and + self._gdict[self.subsection][elem].get("identifier") == + identifier): + not_to_create.append(it) + it += 1 + for i in range(cursect_length + 1): + if i not in not_to_create: + self.make_subsection(section, identifier, position=i) + + for elem in self._gdict[self.subsection]: + if (self._gdict[self.subsection][elem].get("identifier") == + identifier and + self._gdict[self.subsection][elem].get("section") == + section): + to_modify.append(elem) + else: + for elem in self._gdict[self.subsection]: + if (self._gdict[self.subsection][elem].get("position") == + position and + self._gdict[self.subsection][elem].get("identifier") == + identifier): + to_modify.append(elem) + if len(to_modify) == 0: + curlength = len(self._gdict[self.subsection]) + self._gdict[self.subsection][ + len(self._gdict[self.subsection])] = \ + {'section': section, 'identifier': identifier, + 'options': [], 'position': position} + to_modify.append(curlength) + + for elem in to_modify: + self._gdict[self.subsection][elem]['options'].append(toadd) + + + def _get_suboptions_to_blacklist(self, section, identifier, option, + position=None): + '''Get a dictionay of the suboptions to blacklist. + + See add_suboption() for an explanation on the arguments. + + Used in both remove_option() and remove_suboption()''' + to_remove = {} + if len(self._gdict[section]) != 0:#if the section exists + if len(self._gdict[self.subsection]) != 0: + for elem in self._gdict[self.subsection]: + temp_elem = self._gdict[self.subsection][elem] + if position == None: + if (temp_elem.get('section') == section and + temp_elem.get('identifier') == identifier): + it = 0 + for opt in temp_elem['options']: + if (opt.strip().lower() + .find(option.strip().lower()) != -1): + to_remove.setdefault(elem, []).append(it) + it += 1 + else: + if (temp_elem.get('section') == section and + temp_elem.get('identifier') == identifier and + temp_elem.get('position') == position): + it = 0 + for opt in temp_elem['options']: + if (opt.strip().lower() + .find(option.strip().lower()) != -1): + to_remove.setdefault(elem, []).append(it) + it += 1 + del temp_elem + return to_remove + + + def remove_suboption(self, section, identifier, option, position=None): + '''Remove an option from a subsection.''' + + to_remove = self._get_suboptions_to_blacklist(section, identifier, + option, position) + for elem in to_remove: + modded = 0 + for part in to_remove[elem]: + real_pos = part - modded + del self._gdict[self.subsection][elem]['options'][real_pos] + modded += 1 + + def get_identifier(self, section, position): + '''Get the identifier of a specific section from its position.''' + + error_msg = ('No identifier can be found for section "%s" No %d' + % (section, position)) + try: + for sect in self.identifiers[section]: + if sect[1] == position: + return sect[0] + except KeyError: + raise SectionException + raise IdentifierException(error_msg) + + + def _clean_option(self, option, optname, reference=None, section=None): + '''Clean the option and return the value + + This returns the last item of the list which this method generates. + + If no value can be found, return False.''' + + if reference: + # If it's a reference to another section then options such as + # Option "Device" "/dev/psaux" should not be taken into + # account. + if 'option' in option.strip().lower(): + return False + + # Do not confuse Device "Configure device" with InputDevice + # "device" + if not option.strip().lower().startswith(optname.strip().lower()): + return False + + optbits = [] + optbit = '' + it = 0 + quotation = 0 + optcount = option.count('"') + if optcount > 0:#dealing with a section option + for i in option: + if optcount in [2, 4] and section == 'ServerLayout': + if not i.isspace(): + if i == '"': + if quotation != 0 and quotation % 2 != 0: + if len(optbit) > 0: + optbits.append(optbit) + optbit = '' + quotation += 1 + else: + if quotation % 2 != 0: + optbit += i + else: + + if quotation % 2 != 0: + optbit += i + else: + #print 'i', repr(i), 'optbit', optbit + if not i.isspace(): + if i == '"': + quotation += 1 + else: + optbit += i + else: + + if quotation % 2 != 0: + optbit += i + + else: + if len(optbit) > 0: + optbits.append(optbit) + #print 'i=', i, 'optbit=', optbit + optbit = '' + + if it == len(option) - 1: + if optbit != '': + optbits.append(optbit) + #print 'i=END', 'optbit=', optbit + it += 1 + else:#dealing with a subsection option + for i in option: + #print 'i', repr(i), 'optbit', optbit + if not i.isspace(): + optbit += i + else: + if len(optbit) > 0: + optbits.append(optbit) + #print 'i=', i, 'optbit=', optbit + optbit = '' + + if it == len(option) - 1: + if optbit != '': + optbits.append(optbit) + #print 'i=END', 'optbit=', optbit + it += 1 + + optlen = len(optbits) + + if optlen > 1: + # Let's make sure that the option is the one we're looking for + # e.g. if we're looking for a reference to Device we are not + # interested in getting references to InputDevice + + references_list = [x.lower().strip() for x in self.references] + + if (section != 'ServerLayout' and + quotation == 0 and optlen == 2 and + optbits[0].lower().strip() in references_list): + # e.g. Screen 1 -> 1 stands for the position, therefore the + # identifier of the section at position 1 should be returned + # instead of the number (if possible). + # + # return [Screen, identifier] + try: + sect = '' + value = int(optbits[1].strip()) + for item in self.require_id: + if optbits[0].lower().strip() == item.lower().strip(): + sect = item + break + try: + identifier = self.get_identifier(sect, value) + return [identifier] + except (IdentifierException): + return False + except ValueError: + pass + + if optcount != 4 and section != 'ServerLayout': + status = False + for elem in optbits: + if elem.lower() == optname.lower(): + status = True + if status == False: + return False + + if optlen == 2 and optbits[0].lower().strip() == 'option': + # e.g. Option "AddARGBGLXVisuals" + # (The value was omitted but it will be interpreted as True by + # Xorg) + return 'True' + + sections = [sect.strip().lower() for sect in self.sections] + +# if optlen == 2 and optbits[0].lower().strip() in sections: +# # Do not confuse Device "Configure device" with InputDevice +# # "device" +# if optbits[0].lower().strip() != optname.strip().lower(): +# return False + + if optcount == 4 and section == 'ServerLayout': + #If it's something like InputDevice "stylus" "SendCoreEvents" + if (optname.lower().strip() == 'inputdevice' and + len(optbits) == 2): + del optbits[1] + server_dict = {} + for elem in optbits: + server_dict.setdefault(elem) + return list(server_dict.keys()) + elif optcount > 0 and optcount <= 4: + #dealing with a section option + return optbits[optlen -1] + elif optcount > 4: + del optbits[0] + return optbits + elif optcount == 0: + del optbits[0] + return ' '.join(optbits) + else: + if optcount in [2, 4] and section == 'ServerLayout': + return optbits + return False + + def get_value(self, section, option, position, identifier=None, + sect=None, reference=None): + '''Get the value which is assigned to an option. + + Return types: + * string (if only one value is available) + - usually in options + * list (if more than one option is found) + - having multiple references of the same type is allowed. + for example it is not unusual to have 2 references to + Screen sections in the ServerLayout section (in case of + Xinerama) + - if the options are actually options and not references + then there are duplicate options, which should be detected + in advance with get_duplicate_options() + * None (if no value can be found) - Not always true -> See below. + + Use-case for returning None + * When dealing with incomplete references. For example: + Screen "Configured Screen" + is different from: + Screen + (which is an incomplete reference) + * When dealing with incomplete options. For example: + Depth 24 + is different from: + Depth + (which is an incomplete option) + * Exception: + Some options (with the "Option" prefix) (not references) + can be used with no value (explicitly) assigned and are + considered as True by the Xserver. In such case get_value() + will return "True". For example: + Option "AddARGBGLXVisuals" + is the same as: + Option "AddARGBGLXVisuals" "True" + + Meaning of keys in Sections and SubSections: + * When dealing with a Section: + section= e.g. 'Screen', 'Device', etc. + option= the option + position= e.g. 0 (i.e. the first element in the list of Screen + sections) + reference= used only by get_references() + + * When dealing with a SubSection: + section= 'SubSection' (this is mandatory) + option= the option + position= e.g. 0 would mean that the subsection belongs to + the 1st item of the list of, say, "Screen" sections. + (i.e. the first element in the list of Screen + sections) + ["position" is a key of an item of the list of + subsections see below] + identifier= the name of the subsection e.g. 'Display' + sect = the 'section' key of an item of the list of + subsections e.g. the "Display" subsection can be + found in the "Screen" section ('sect' is the latter) + + Anatomy of Sections and SubSections: + * Anatomy of subsections: + self.globaldict['SubSection'] = + {0: {'section': 'Screen', 'identifier': 'Display', + 'position': 0, 'options': [option1, option2, etc.], + etc.} + In this case we refer to the 'Display' subsection + which is located in the first 'Screen' section. + + * Anatomy of a section: + self.globaldict['Screen'] = + {0: [option1, option2, etc.], 1: [...], ...} + 0, 1, etc. is the position ''' + + values = [] + + if self._gdict[section].get(position) == None: + raise SectionException + + #if len(values) == 0: + #raise OptionException + + #return values + + else: + try: + # see if it's a dictionary (e.g. in case of a subsection) + # or a list (in case of a normal section) and act + # accordingly + self._gdict[section][position].index('foo') + except AttributeError:#dict + if identifier == None: + raise Exception('An identifier is required for ' + 'subsections') + else: + for elem in self._gdict[section]: + if (self._gdict[section][elem].get('identifier') == + identifier and + self._gdict[section][elem].get('position') == + position and + self._gdict[section][elem].get('section') == sect): + for opt in self._gdict[section][elem]['options']: + if (option.strip().lower() in + opt.strip().lower()): + if opt.strip().find('#') != -1: + stropt = opt.strip()[0: opt + .strip().find('#')] + else: + stropt = opt.strip() + # clean the option and return the value + values.append(self._clean_option(stropt, + option, reference=reference)) + + if len(values) == 0: + raise OptionException + + if len(values) > 1: + return values + else: + try: + return values[0] + except IndexError: + return None + + except ValueError:#list + for elem in self._gdict[section][position]: + if option.strip().lower() in elem.strip().lower(): + # clean the option and return the value + if elem.strip().find('#') != -1: + stropt = elem.strip()[0: elem.strip().find('#')] + else: + stropt = elem.strip() + values.append(self._clean_option(stropt, option, + reference=reference, section=section)) + + if len(values) == 0: + raise OptionException + + if len(values) > 1: + return values + else: + try: + return values[0] + except IndexError: + return None + except KeyError:#not found + raise OptionException + + def is_section(self, section, identifier=None, position=None): + '''See if a section with a certain identifier exists. + + NOTE: either identifier or position must be provided.''' + + if identifier != None: + try: + self.get_position(section, identifier) + return True + except IdentifierException: + return False + elif position != None: + return self._gdict[section].get(position) != None + else: + error_msg = 'Either identifier or position must be provided' + raise Exception(error_msg) + + def get_position(self, section, identifier): + '''Get the position of a specific section from its identifier.''' + + error_msg = ('No %s section named "%s" can be found' % + (section, identifier)) + for sect in self.identifiers[section]: + try: + if sect[0].strip().lower() == identifier.strip().lower(): + return sect[1] + except AttributeError: + pass + raise IdentifierException(error_msg) + + def get_broken_references(self): + '''Look for references to sections which don't exist + + This returns a dictionary having the items of self.require_id as keys + and a dictionary with the identifiers of the sections which are + being referred to by the broken references. + + For example: + + broken_references = { + 'InputDevice': {'InputDevice 1': None, + 'Another input device': None}, + 'Device': {...}, + 'Monitor' {...}, + 'Screen' {...}, + 'ServerLayout' {...} + }''' + + broken_references = {}.fromkeys(self.require_id) + references_tree = {} + for section in self.require_id:#['Screen', 'ServerLayout'] + references_tree[section] = {} + broken_references[section] = {} + for sect in self._gdict[section]: + references_tree[section][sect] = self.get_references(section, + sect) + #print >> stderr, 'REFERENCES = %s' % (str(references_tree)) + for section in references_tree: + for elem in references_tree[section]: + for refsect in references_tree[section][elem]: + if len(references_tree[section][elem][refsect]) > 0: + #references_tree[section][elem][refsect] + for ref in references_tree[section][elem][refsect]: + for sect in self.sections: + if sect.lower() == refsect.strip().lower(): + refsect = sect + if not self.is_section(refsect, ref): + #print '*****WARNING:', refsect, 'Section', + # ref, 'does not exist!*****' + broken_references[refsect].setdefault(ref) + #print 'FIX: Creating', refsect, 'Section', + # ref self.make_section(refsect, + # identifier=ref) + return broken_references + + + def get_default_serverlayout(self): + '''Return a list with the position of default ServerLayout sections + + NOTE: If the section set as the default ServerLayout doesn't exist + it will raise a ParseException.''' + + default = [] + serverflags = self._gdict['ServerFlags'] + it = 0 + for flag in serverflags: + try: + default_layout = self.get_value('ServerFlags', + 'DefaultServerLayout', it) + if default_layout: + def_it = 0 + for identifier in self.identifiers['ServerLayout']: + if (identifier[0].lower().strip() == + default_layout.lower().strip()): + default.append(identifier[1])#LayoutPosition + def_it += 1 + if def_it == 0: + # If the section set as the default ServerLayout + # doesn't exist raise a ParseException + error = 'The default ServerLayout does not exist.' + raise ParseException(error) + except OptionException:#no default_layout + pass + it += 1 + return default + + + def _merge_subsections(self, temp_dict): + '''Put SubSections back into the sections to which they belong.''' + + for sect in temp_dict['SubSection']: + section = temp_dict['SubSection'][sect]['section'] + identifier = temp_dict['SubSection'][sect]['identifier'] + position = temp_dict['SubSection'][sect].get('position') + options = temp_dict['SubSection'][sect]['options'] + temp_dict[section].setdefault(position, []).append( + '\tSubSection ' + + '"' + identifier + + '"' + '\n') + if len(options) > 0: + temp_dict[section][position].append('\t' + + '\t'.join(options) + + '\tEndSubSection\n') + else: + temp_dict[section][position].append('\t'.join(options) + + '\tEndSubSection\n') + try: + #remove subsection since it was merged + del temp_dict['SubSection'] + except KeyError: + pass + + return temp_dict + + + def write(self, destination, test=None): + '''Write the changes to the destination + + The destination can be either a file (e.g. /etc/X11/xorg.conf) + or a file object (e.g. sys.stdout). + + destination = the destination file or file object (mandatory) + test = if set to True write will append the result to the + destination file instead of overwriting it. It has no + effect on file objects. Useful for testing.''' + + temp_dict = copy.deepcopy(self._gdict) + + # Commented options must be dealt with first + temp_dict = self._merge_commented_options(temp_dict) + + # Merge all the non-commented subsections + temp_dict = self._merge_subsections(temp_dict) + lines = [] + comments = ''.join(self.comments) + '\n' + lines.append(comments) + for section in temp_dict: + if section != self.commentsection: + if len(temp_dict[section]) > 0: + for elem in temp_dict[section]: + lines.append('Section ' + '"' + section + '"' + '\n') + lines.append(''.join(temp_dict[section][elem]) + + 'EndSection\n\n') + + del temp_dict + + if not hasattr(destination, 'write'):#it is a file + if test: + destination = open(destination, 'a') + else: + destination = open(destination, 'w') + destination.write(''.join(lines)) + destination.close() + else:#it is a file object + try: + destination.write(str(bytes(''.join(lines), 'UTF-8'))) + except TypeError: + destination.write(b''.join(lines)) + + def get_subsections(self, section, position): + '''Get all the subsections contained in a section''' + # loop through subsections and see what subsections match + # the section + subsections = [] + for sub in self._gdict[self.subsection]: + if (self._gdict[self.subsection][sub]['section'] == section + and self._gdict[self.subsection][sub]['position'] == position): + subsections.append(sub) + + return subsections + + def _permanent_merge_subsections(self, subsections): + '''Put SubSections back into their sections and comment them out + + This alters globaldict and should be used only in + comment_out_section() i.e. when the whole section is being + commented out. + + subsections = the list of the indices subsections to merge and + remove''' + + for sect in subsections: + section = self._gdict[self.subsection][sect]['section'] + identifier = self._gdict[self.subsection][sect]['identifier'] + position = self._gdict[self.subsection][sect].get('position') + options = self._gdict[self.subsection][sect]['options'] + self.comments.append('#\tSubSection ' + '"' + identifier + '"' + + '\n') + + for option in options: + opt = '#\t\t%s\n' % (option.strip()) + self.comments.append(opt) + self.comments.append('#\tEndSubSection\n') + + try:#remove subsection since it was merged + del self._gdict[self.subsection][sect] + except KeyError: + pass + + def _get_comments(self, section, position): + '''Return the index of the entry in the Comments section of a section''' + + comments = [] + if self._gdict[self.commentsection].get(section): + for sect in self._gdict[self.commentsection][section]: + if (self._gdict[self.commentsection][section][sect] + .get('position') == position): + comments.append(sect) + + return comments + + def _merge_subsections_with_comments(self, subsections): + '''Put SubSections back into their sections and comment them out + + This alters globaldict and should be used only to comment out + subsections (i.e. in comment_out_subsection()) when the whole section + is not being commented out. + + subsections = the list of the indices subsections to merge and + remove''' + + end_subsection = '#\tEndSubSection\n' + + for sect in subsections: + section = self._gdict[self.subsection][sect]['section'] + identifier = self._gdict[self.subsection][sect]['identifier'] + position = self._gdict[self.subsection][sect].get('position') + options = self._gdict[self.subsection][sect]['options'] + + start_subsection = '#\tSubSection "%s"\n' % (identifier) + + comments = self._get_comments(section, position) + if not comments: + self._gdict[self.commentsection][section] = {} + self._gdict[self.commentsection][section][position] = {} + temp_dict = self._gdict[self.commentsection][section][position] + temp_dict['identifier'] = None + temp_dict['position'] = position + temp_dict['section'] = None + temp_dict['options'] = [] + del temp_dict + + comments_options = self._gdict[self.commentsection][section + ][position]['options'] + + comments_options.append(start_subsection) + for option in options: + opt = '#\t\t%s\n' % (option.strip()) + comments_options.append(opt) + + comments_options.append(end_subsection) + + #remove subsection since it was merged + del self._gdict[self.subsection][sect] + + def _comment_out_subsections(self, section, position): + '''Comment out all the subsections of a section.''' + + subsections = self.get_subsections(section, position) + self._permanent_merge_subsections(subsections) + + def _remove_comment_entries(self, section, position): + '''Remove comment sections of a "section" from the "Comments" section''' + + comments = self._get_comments(section, position) + for comment_section in comments: + del self._gdict[self.commentsection][section][comment_section] + + def comment_out_section(self, section, identifier=None, position=None): + '''Comment out a section and all its subsections.''' + + start_section = '\n#Section "%s"\n' % (section) + end_section = '#EndSection\n' + + # Comment any section of "section" type with the same identifier + # currently sections of the same type cannot have the same id + # for obvious reasons + to_remove = {} + if identifier: + try: + pos = self.get_position(section, identifier) + to_remove.setdefault(pos, None) + except IdentifierException: + pass + + # Comment the section of "section" type at position "position" + elif position != None: + if self.is_section(section, position=position): + to_remove.setdefault(position, None) + + # Comment any section of "section" type + else: + all_keys = list(self._gdict[section].keys()) + to_remove = {}.fromkeys(all_keys) + + # If the section has an identifier i.e. if the section + # is in self.require_id + if section in self.require_id: + # Get the references to remove from self.identifiers + it = 0 + for reference in self.identifiers[section]: + try: + ref = list(to_remove.keys()).index(reference[1]) + to_remove[list(to_remove.keys())[ref]] = it + except ValueError: + pass + it += 1 + + sorted_remove = list(to_remove.keys()) + sorted_remove.sort() + + modded = 0 + for sect in sorted_remove: + self.comments.append(start_section) + for option in self._gdict[section][sect]: + commented_option = '#\t%s\n' % (option.strip()) + self.comments.append(commented_option) + + # Append all its SubSections (automatically commented + # out) and remove them from SubSection + self._comment_out_subsections(section, sect) + self.comments.append(end_section) + + # Remember to remove any related entry from the "Comments" + # section + self._remove_comment_entries(section, sect) + + # Remove the section from _gdict + del self._gdict[section][sect] + + # Remove the reference from identifiers + # if such reference exists + ident_ref = to_remove[sect] + if ident_ref != None: + realpos = ident_ref - modded + + del self.identifiers[section][realpos] + modded += 1 + + + def comment_out_subsection(self, section, identifier, position): + '''Comment out a subsection. + + section= the type of the section which contains the subsection + identifier= the identifier of the subsection + position= the position of the section''' + + subsections = [] + for subsection in self._gdict[self.subsection]: + temp_dict = self._gdict[self.subsection][subsection] + if (temp_dict['section'] == section + and temp_dict['identifier'] == identifier + and temp_dict['position'] == position): + subsections.append(subsection) + break + del temp_dict + # Add the subsection to the Comments section + self._merge_subsections_with_comments(subsections) + + + def comment_out_option(self, section, option, value=None, position=None, + reference=None): + '''Comment out an option in a section. + + section= the section which will have the option commented out + option= the option to comment out + value= if you want to comment out an option only if it has a + certain value + position= e.g. 0 (i.e. the first element in the list of Screen + sections)''' + + to_remove = self._get_options_to_blacklist(section, option, value, + position, reference) + for part in to_remove: + modded = 0 + for line in to_remove[part]: + realpos = line - modded + self._gdict[section][part][realpos] = ('#%s' + % (self._gdict[section][part][realpos].strip())) + + self._gdict[self.commentsection].setdefault(section, {}) + curlength = len(self._gdict[self.commentsection][section]) + temp_dict = self._gdict[self.commentsection][section] + temp_dict.setdefault(part, {}) + temp_dict[part].setdefault('identifier', None) + temp_dict[part].setdefault('position', part) + temp_dict[part].setdefault('section', None) + temp_dict[part].setdefault('options', []) + # Copy the option to the Comments section + temp_dict[part]['options'].append( + self._gdict[section][part][realpos]) + del temp_dict + + #Remove it from its section in _gdict + del self._gdict[section][part][realpos] + + modded += 1 + + + def comment_out_suboption(self, section, identifier, option, position=None): + '''Comment out an option in a subsection. + + section= the section which contains the subsection + identifier= the identifier of the subsection + option= the option to comment out + position= the position of the section which contains the subsection + e.g. 0 (i.e. the first element in the list of Screen + sections)''' + + to_remove = self._get_suboptions_to_blacklist(section, identifier, + option, position) + for elem in to_remove: + modded = 0 + for part in to_remove[elem]: + realpos = part - modded + + self._gdict[self.subsection][part]['options'][realpos] = ('#%s' + % (self._gdict[self.subsection][part]['options'][realpos] + .strip())) + + self._gdict[self.commentsection].setdefault(self.subsection, + {}) + temp_dict = self._gdict[self.commentsection][self.subsection] + + temp_dict.setdefault(part, {}) + temp_dict[part].setdefault('identifier', identifier) + temp_dict[part].setdefault('position', part) + temp_dict[part].setdefault('section', section) + temp_dict[part].setdefault('options', []) + # Copy the option to the Comments section + comments_options = temp_dict[part]['options'] + commented_option = self._gdict[self.subsection][part][ + 'options'][realpos] + comments_options.append(commented_option) + + del temp_dict + + #Remove the option from its section in _gdict + del self._gdict[self.subsection][elem]['options'][realpos] + modded += 1 + + + def _merge_commented_options(self, temp_dict): + '''Put commented out options back into their sections or subsections''' + + for sect in temp_dict[self.commentsection]: + section_options = None + for section_instance in temp_dict[self.commentsection][sect]: + section = temp_dict[self.commentsection][sect][ + section_instance].get('section') + identifier = temp_dict[self.commentsection][sect][ + section_instance].get('identifier') + position = temp_dict[self.commentsection][sect][ + section_instance].get('position') + options = temp_dict[self.commentsection][sect][ + section_instance]['options'] + if section == self.subsection: + for sub in temp_dict[sect]: + subsection = temp_dict[sect][sub] + if (subsection['identifier'] == identifier + and subsection['position'] == position + and subsection['section'] == section): + section_options = temp_dict[sect][sub]['options'] + break + else: + section_options = temp_dict[sect].get(position) + + if section_options: + for option in options: + option = '\t%s\n' % (option.strip()) + if sect == self.subsection: + section_options.setdefault('options', + []).append(option) + else: + section_options.append(option) + + return temp_dict + diff -Nru x-kit-0.4.2.3build1/xkit/xutils.py x-kit-0.5.0/xkit/xutils.py --- x-kit-0.4.2.3build1/xkit/xutils.py 1970-01-01 00:00:00.000000000 +0000 +++ x-kit-0.5.0/xkit/xutils.py 2012-06-05 10:58:56.000000000 +0000 @@ -0,0 +1,181 @@ +# xutils.py -- Enhanced class of X-Kit's parser +# +# Copyright 2008 Alberto Milone +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + +from __future__ import print_function +from __future__ import unicode_literals +from .xorgparser import * +import sys + +class XUtils(Parser): + '''Subclass with higher-level methods + + See xorgparser.Parser for the low-level methods''' + def __init__(self, source=None): + super(XUtils, self).__init__(source) + + def fix_broken_references(self): + '''Fix broken references to non-existent sections''' + broken_references = self.get_broken_references() + for section in broken_references: + for reference in broken_references[section]: + self.make_section(section, identifier=reference) + + def get_driver(self, section, position): + '''Get the driver in use in a section + + If no driver is found it will return False. + + For further information see get_value()''' + option = 'Driver' + return self.get_value(section, option, position) + + def set_driver(self, section, driver, position): + '''Set the driver in use in a section''' + option = 'Driver' + self.add_option(section, option, driver, position=position) + + def section_has_driver(self, driver, sections_list=None): + '''Look for a driver in the Device sections + + Return True if the driver is found in each of the specified + sections, otherwise return False. + + if sections_list == None check all the Device sections''' + if sections_list == None: + sections_list = list(self.globaldict['Device'].keys()) + + for section in sections_list: + try: + if self.get_driver('Device', section) != driver: + return False + except OptionException: + #no references to the Device section + return False + return True + + def get_devices_in_serverlayout(self, position): + '''Return a list of references to the Device sections in ServerLayout + + This method looks for references to Device sections in the Screen + sections referred to in the ServerLayout[position] section.''' + devices_to_check = [] + references = self.get_references('ServerLayout', position, ['Screen']) + if len(references['Screen']) > 0: + # Check all the device sections related to these Screen sections + # + # references will look like {'Screen': ['Screen1', '0']} + for reference in references['Screen']: + try: + screen_position = self.get_position('Screen', reference) + except IdentifierException: + continue + # Get references to the Device sections in the Screen sections + try: + device_references = self.get_references('Screen', + screen_position, ['Device']) + for device in device_references['Device']: + device_position = self.get_position('Device', device) + devices_to_check.append(device_position) + except OptionException: + #no references to the Device section + pass + return devices_to_check + + def get_devices_in_use(self): + '''Return the Device sections in use + + If no Device sections are referenced in ServerLayout then all of + the available Device sections are returned. + + This method supports old Xinerama setups and therefore looks for + references to Device sections in the ServerLayout section(s) and + checks only the default ServerLayout section provided than one is + set in the ServerFlags section.''' + devices_to_check = [] + driver_enabled = False + + serverlayout = self.globaldict['ServerLayout'] + serverflags = self.globaldict['ServerFlags'] + serverlayout_length = len(serverlayout) + serverflags_length = len(serverflags) + + if serverlayout_length > 0: + if serverlayout_length > 1:#More than 1 ServerLayout? + if serverflags_length > 0:#has ServerFlags + # If the ServerFlags section exists there is a chance that + # a default ServerLayout is set. + # + # If no ServerLayout is set, this might be intentional + # since the user might start X with the -layout command + # line option. + + # See if it has a default ServerLayout + default = self.get_default_serverlayout() + + if len(default) == 1: + devices_to_check = \ + self.get_devices_in_serverlayout(default[0]) + else: + for layout in serverlayout: + devices_to_check += \ + self.get_devices_in_serverlayout(layout) + else: + for layout in serverlayout: + devices_to_check += \ + self.get_devices_in_serverlayout(layout) + else: + devices_to_check = self.get_devices_in_serverlayout(0) + + if len(devices_to_check) == 0: + # Check all the Device sections + devices_to_check = list(self.globaldict['Device'].keys()) + + return devices_to_check + + def is_driver_enabled(self, driver): + '''See if a driver is enabled in the Device sections + + When possible, this method checks only the Device sections in use, + otherwise it checks any available Device section. + + This method supports old Xinerama setups and therefore looks for + references to Device sections in the ServerLayout section(s) and + checks only the default ServerLayout section provided than one is + set in the ServerFlags section.''' + devices_to_check = self.get_devices_in_use() + driver_enabled = self.section_has_driver(driver, + sections_list=devices_to_check) + + return driver_enabled + + def get_screen_device_relationships(self): + '''See which Screen sections are related to which Device sections''' + relationships = {} + it = 0 + for screen in self.globaldict['Screen']: + references = self.get_references('Screen', it, reflist=['Device']) + device = references['Device'][0] + device = self.get_position('Device', device) + relationships.setdefault(device) + relationships[device] = {} + relationships[device]['Screen'] = it + it += 1 + + return relationships + diff -Nru x-kit-0.4.2.3build1/XKit/xorgparser.py x-kit-0.5.0/XKit/xorgparser.py --- x-kit-0.4.2.3build1/XKit/xorgparser.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/XKit/xorgparser.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,1918 +0,0 @@ -# xorgparser.py -- Core class of X-Kit's parser -# -# Copyright 2008 Alberto Milone -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301, USA. - -import sys -from sys import stdout, stderr -import copy - - -class IdentifierException(Exception): - '''Raise if no identifier can be found''' - pass - -class OptionException(Exception): - '''Raise when an option is not available.''' - pass - -class SectionException(Exception): - '''Raise when a section is not available.''' - pass - -class ParseException(Exception): - '''Raise when a postion is not available.''' - pass - -class Parser: - '''Only low-level methods here. - - See the xutils.XUtils subclass for higher-level methods.''' - def __init__(self, source=None): - '''source = can be an object or a file. If set to None (default) - Parser will start from scratch with an empty - configuration. - - Public: - - self.comments = stores the commented lines located outside of the - sections in the xorg.conf. - - self.globaldict['Comments'] = stores the commented lines located - inside of the sections in the xorg.conf. - - self.globaldict = a global dictionary containing all the sections - and options. For further information on - self.globaldict, have a look at self.__process() - and at getValue(). - - self.requireid = a list of the sections which require to have an - "Identifier" set in the xorg.conf (e.g. Device - sections). - - self.identifiers = a dictionary of the sections which require identi - fiers. - - self.sections = a tuple containing the names of all - the sections which self.__process() will look for - in the xorg.conf. Sections with other names - will be ignored by self.__process(). - - self.references = a list containing the names of all the possible - references.''' - - self.subsection = 'SubSection' - self.commentsection = 'Comments' - self.source = source - self.sections = ('InputDevice', - 'Device', - 'Module', - 'Monitor', - 'Screen', - 'ServerLayout', - 'ServerFlags', - 'Extensions', - 'Files', - 'InputClass', - 'DRI', - 'VideoAdaptor', - 'Vendor', - 'Modes', - 'SubSection', - 'Comments') - self.requireid = [ - 'InputDevice', - 'Device', - 'Monitor', - 'Screen', - 'ServerLayout' - ] - self.references = [ - 'Device', - 'InputDevice', - 'Monitor', - 'Screen' - ] - - self.identifiers = {}.fromkeys(self.requireid) - - self.comments = [] - self.globaldict = {}.fromkeys(self.sections, 0) - for elem in self.globaldict: - self.globaldict[elem] = {} - - self.__process() - - - - def __process(self): - '''Perform a sanity check of the file and fill self.globaldict with - all the sections and subsections in the xorg.conf - - - empty = is the file empty? If yes, then don't check if: - * the last section is not complete - * there are duplicates - - hasSection: - * == True: a section is already open - * == False: a section is closed and/or a new section can be opened - - hasSubSection: - * == True: a subsection is already open - * == False: a section is closed and/or a new section can be opened - - sectionFlag: - * == '':a section is closed and/or a new section can be opened - * == the name the current section - - sectionTags = counter of the number of Section and EndSection strings - subSectionTags = counter of the number of SubSection and EndSubSection - strings - - linesList = the list of the lines in the source object. - - globaliters = counts how many times each kind of section - (sectionFlag) is found in the xorg.conf''' - - #See if the source is a file or a file object - #and act accordingly - file = self.source - if file == None: - linesList = [] - else: - if not hasattr(file, 'write'):#it is a file - myfile = open(file, 'r') - linesList = myfile.readlines() - myfile.close() - else:#it is a file object - linesList = file.readlines() - - - # Create a dictionary such as the following: - # {'Device': {}, 'InputDevice': {}} - - globaliters = {}.fromkeys(self.sections, 0) - - empty = True - - hasSection = False - hasSubSection = False - sectionFlag = '' - - sectionTags = 0 - subSectionTags = 0 - - it = 0 - for line in linesList: - if line.strip().startswith('#'): - if hasSection == False: - self.comments.append(line) - else:#hasSection == True - sectionposition = globaliters[sectionFlag] - if hasSubSection == False: - self.globaldict[self.commentsection].setdefault(sectionFlag, {}) - self.globaldict[self.commentsection][sectionFlag].setdefault(sectionposition, {}) - self.globaldict[self.commentsection][sectionFlag][sectionposition].setdefault('identifier', None) - self.globaldict[self.commentsection][sectionFlag][sectionposition].setdefault('position', sectionposition) - self.globaldict[self.commentsection][sectionFlag][sectionposition].setdefault('section', None) - self.globaldict[self.commentsection][sectionFlag][sectionposition].setdefault('options', []) - self.globaldict[self.commentsection][sectionFlag][sectionposition]['options'].append(line.strip()) - else:#hasSubSection == True - curlength = globaliters[self.subsection] - self.globaldict[self.commentsection].setdefault(self.subsection, {}) - self.globaldict[self.commentsection][self.subsection].setdefault(curlength, {}) - self.globaldict[self.commentsection][self.subsection][curlength].setdefault('identifier', subSectionId) - self.globaldict[self.commentsection][self.subsection][curlength].setdefault('position', sectionposition) - self.globaldict[self.commentsection][self.subsection][curlength].setdefault('section', sectionFlag) - self.globaldict[self.commentsection][self.subsection][curlength].setdefault('options', []) - self.globaldict[self.commentsection][self.subsection][curlength]['options'].append(line.strip()) - - - - # See if the name of the section is acceptable - # i.e. included in self.sections - elif line.lower().strip().startswith('section'):#Begin Section - testLineFound = False - for sect in self.sections: - if line.lower().find('"' + sect.lower() + '"') != -1: - testLineFound = True - section = sect - break - if not testLineFound: - # e.g. in case the name of the section is not - # recognised: - # Section "whatever" - error = 'The name in the following line is invalid for a section:\n%s' % (line) - raise ParseException(error) - else: - if hasSection == False: - sectionTags += 1 - - sectionFlag = section - empty = False - hasSection = True - else: - error = 'Sections cannot be nested in other sections.' - raise ParseException(error) - elif line.lower().strip().startswith('endsection') == True:#End Section - sectionTags += 1 - if hasSection == True and hasSubSection == False: - globaliters[sectionFlag] += 1 - - sectionFlag = '' - hasSection = False - else: - error = 'An EndSection is in the wrong place.' - raise ParseException(error) - elif line.lower().strip().startswith('subsection') == True:#Begin SubSection - subSectionTags += 1 - - if hasSection == True and hasSubSection == False: - hasSubSection = True - subSectionId = line[line.find('"')+1: line.rfind('"')].strip() - - self.globaldict.setdefault(self.subsection, {}) - curlength = globaliters[self.subsection] - self.globaldict[self.subsection][curlength] = {} - '''self.globaldict - keys: - - section = the section in which the subsection is - located (e.g. "Screen") - position = e.g. in key 0 of the - self.globaldict['Screen'] - identifier = e.g. 'Display' (in SubSection "Display") - options = a list of lines with the options''' - - self.globaldict[self.subsection][curlength]['section'] = sectionFlag - try: - self.globaldict[self.subsection][curlength]['position'] = globaliters[sectionFlag] - except KeyError: - error = 'SubSections can be nested only in well formed sections.' - raise ParseException(error) - self.globaldict[self.subsection][curlength]['identifier'] = subSectionId - self.globaldict[self.subsection][curlength]['options'] = [] - - else: - error = 'SubSections can be nested only in well formed sections.' - raise ParseException(error) - - elif line.lower().strip().startswith('endsubsection') == True:#End SubSection - subSectionTags += 1 - - if hasSubSection == True: - hasSubSection = False - globaliters[self.subsection] += 1 - else: - error = 'SubSections can be closed only after being previously opened.' - raise ParseException(error) - else: - if sectionFlag != '':#any other line - if line.strip() != '':#options - if hasSubSection == True: - ''' - section = the section in which the subsection is - located (e.g. "Screen") - position = e.g. in key 0 of the - self.globaldict['Screen'] - identifier = e.g. 'Display' (in SubSection "Display") - options = a list of lines with the options - ''' - self.globaldict[self.subsection][curlength]['options'].append('\t' + line.strip() + '\n') - else: - self.globaldict.setdefault(sectionFlag, {}) - curlength = globaliters[sectionFlag] - self.globaldict[sectionFlag].setdefault(curlength, []).append('\t' + line.strip() + '\n') - it += 1 - - if not empty: - # If the last section is not complete - if sectionTags % 2 != 0 or subSectionTags % 2 != 0: - error = 'The last section is incomplete.' - raise ParseException(error) - - # Fill self.identifiers - self.getIds() - - - # Make sure that the configuration file is compliant with - # the rules of xorg - - self.__complianceRules() - - else: - self.getIds() - - def __complianceRules(self): - '''This method contains the several checks which can guarantee - compliance with the syntax rules of the xorg.conf''' - -# ''' -# Raise an exception if there are duplicate options i.e. -# options (not references) of the same kind with the same -# or with a different value. -# -# e.g. Driver "nvidia" and Driver "intel" cannot coexist in the -# same Device section. -# ''' -# if len(self.checkDuplicateOptions()) > 0: -# error = 'There cannot be Duplicate Options:\n%s' % (str(self.checkDuplicateOptions())) -# raise ParseException(error) - - - # Raise an exception if there are duplicate sections i.e. - # sections of the same kind (e.g. "Device") with the same - # identifier. - # - # e.g. The following configuration is not allowed: - # - # Section "Device" - # Identifier "My Device" - # EndSection - # - # Section "Device" - # Identifier "My Device" - # EndSection - if len(self.getDuplicateSections()) > 0: - error = 'There cannot be Duplicate Sections:\n%s' % (str(self.getDuplicateSections())) - raise ParseException(error) - - - # One word entries are not acceptable as either options or references. - # If one is found, ParseException will be raised. - self.validateOptions() - - - # Raise an exception if there are broken references i.e. references - # to sections which don't exist. - # - # For example, if the xorg.conf were the following: - # - # Section "Device" - # Identifier "Another Device" - # EndSection - # - # Section "Screen" - # Identifier "My Screen" - # Device "My Device" - # EndSection - # - # There would be no Device section which has "My Device" as an identifier - broken = self.getBrokenReferences() - - it = 0 - for section in broken: - it += len(broken[section]) - if it > 0: - error = 'There cannot be Broken References:\n%s' % (str(broken)) - raise ParseException(error) - - - # If there are sections which don't have an identifier - # but they should (i.e. they are in self.requireid) - # - # NOTE: if there are empty sections without an identifier - # e.g. Section "Device" - # EndSection - # - # they won't trigger the ParseException but won't - # cause any problem since they will be completely - # ignored and won't appear in the target file. - for section in self.requireid: - if len(self.globaldict[section]) != len(self.identifiers[section]): - error = 'Not all the sections which require an identifier have an identifier.' - raise ParseException(error) - - # The ServerLayout section must have at least 1 reference to a "Screen" - # section - if len(self.globaldict['ServerLayout']) > 0: - for section in self.globaldict['ServerLayout']: - screenReferences = self.getReferences('ServerLayout', section, reflist=['Screen']) - if len(screenReferences['Screen']) == 0: - error = 'The ServerLayout section must have at least 1 reference to a "Screen" section.' - raise ParseException(error) - - - # No more than one default ServerLayout can be specified in the - # ServerFlags section - defaultLayout = self.getDefaultServerLayout() - if len(defaultLayout) > 0: - if len(defaultLayout) > 1: - error = 'No more than one default ServerLayout can be specified in the ServerFlags section.' - raise ParseException(error) - - if not self.isSection('ServerLayout', position=defaultLayout[0]): - error = 'The default ServerLayout does not exist' - raise ParseException(error) - - def getIds(self): - '''Fill self.identifiers so that it has the section types as keys and a - list of tuples as values. The tuples contain the identifier and the - position of each section. - - NOTE: this method is called automatically in xutils when a section is - created but in xorgparser it is necessary to call it manually after - creating a new section which requires an identifier - - Here's a basic scheme: - - self.identifiers = {section_type1: [ - (identifier1, position1), - (identifier2, position2) - ], etc. - } - - Concrete example: - - self.identifiers = {'Device': [ - ('Configured Video Device', 0), - ('Another Video Device', 1) - ], - 'Screen': [ - ('Configured Screen Device', 0), - ('Another Screen Device', 1) - ], - } ''' - - for sect in self.requireid:#identifiers.keys(): - self.identifiers[sect] = [] - it = 0 - for elem in self.globaldict[sect]: - try: - identifier = self.getValue(sect, 'Identifier', it) - except (OptionException, SectionException):#if no identifier can be found - error = 'No Identifier for section %s, position %d, can be found.' % (sect, elem) - raise ParseException(error) - try: - identifier.append('') - identifier = identifier[0] - except AttributeError: - pass - - self.identifiers[sect].append((identifier, it)) - it += 1 - - def validateOptions(self): - '''One word entries are not acceptable as either options or references. - If one is found, ParseException will be raised.''' - - # Sections in sectionsWhitelist won't be validated - sectionsWhitelist = ['Files', 'Comments'] - optionsWhitelist = ['endmode'] - for section in self.sections: - if section not in sectionsWhitelist: - for position in self.globaldict[section]: - if section == self.subsection:#'SubSection': - options = self.globaldict[section][position]['options'] - else: - options = self.globaldict[section][position] - - - for option in options: - option = option.strip() - if option.find('#') != -1:#remove comments - option = option[0: option.find('#')] - - error = 'The following option is invalid: %s' % (option.strip()) - - optbits = self.__cleanForDuplicates(option, includenull=True) - - if len(optbits) == 1 and optbits[0].strip().lower() not in optionsWhitelist:#ERROR - - raise ParseException(error) - - if not optbits[0][0].isalpha(): - raise ParseException(error) - - def getDuplicateOptions(self, section, position): - '''See if there are duplicate options in a section (it is ok to have duplicated - references) e.g. several Load options, or Screen, etc.''' - - blacklist = ['driver', 'busid', 'identifier'] - total = [] - duplicates = [] - - if section == 'SubSection': - options = self.globaldict[section][position]['options'] - else: - options = self.globaldict[section][position] - - - for option in options: - option = option.strip() - if option.find('#') != -1:#remove comments - option = option[0: option.find('#')] - - optbits = self.__cleanForDuplicates(option) - - # optbits may look like this: - # - # ['Option', 'TestOption1', '0'] - # - # or - # ['Screen', 'My screen 1'] - try: - if optbits[0].lower() in blacklist: - total.append(optbits[0]) - elif optbits[0].lower() == 'option': - if len(optbits) > 1 and optbits[1] != None: - ''' - make sure it's not a broken option e.g. - Option - ''' - total.append(optbits[1]) - except (AttributeError, IndexError): - pass - final = {} - for option in total: - if final.get(option) != None: - duplicates.append(option) - else: - final[option] = option - return duplicates - - def checkDuplicateOptions(self): - '''Look for and return duplicate options in all sections''' - - duplicates = {} - for section in self.globaldict: - for elem in self.globaldict[section]: - duplopt = self.getDuplicateOptions(section, elem) - if len(duplopt) > 0: - duplicates.setdefault(section, {}).setdefault(elem, duplopt) - - return duplicates - - def __cleanForDuplicates(self, option, includenull=None): - '''Clean the option and return all its components in a list - - includenull - is used only by validateOptions() and makes - sure that options with a null value assigned in quotation - marks are not considered as one-word options''' - - #print '\nCLEAN', repr(option) - optbits = [] - optbit = '' - it = 0 - quotation = 0 - optcount = option.count('"') - if optcount > 0:#dealing with a section option - for i in option: - #print 'i', repr(i), 'optbit', optbit - if not i.isspace(): - if i == '"': - quotation += 1 - else: - optbit += i - else: - - if quotation % 2 != 0: - optbit += i - - else: - if len(optbit) > 0: - optbits.append(optbit) - #print 'i=', i, 'optbit=', optbit - optbit = '' - - if it == len(option) - 1: - if optbit != '': - optbits.append(optbit) - #print 'i=END', 'optbit=', optbit - it += 1 - else:#dealing with a subsection option - for i in option: - #print 'i', repr(i), 'optbit', optbit - if not i.isspace(): - optbit += i - else: - if len(optbit) > 0: - optbits.append(optbit) - #print 'i=', i, 'optbit=', optbit - optbit = '' - - if it == len(option) - 1: - if optbit != '': - optbits.append(optbit) - #print 'i=END', 'optbit=', optbit - else: - if includenull: - optbit = '' - optbits.append(optbit) - it += 1 - - if includenull and len(optbits) != optcount/2 +1: - # e.g. if the option looks like the following: - # - # Modelname "" - # - # add a '' which wouldn't be caught by this method otherwise. - optbit = '' - optbits.append(optbit) - - return optbits - - def getDuplicateSections(self): - '''Return a dictionary with the duplicate sections i.e. sections - of the same kind, with the same identifier''' - - duplicates = {} - for section in self.identifiers: - temp = [] - for sect in self.identifiers[section]: - temp.append(sect[0]) - for elem in temp: - if temp.count(elem) > 1: - duplicates.setdefault(section, {}).setdefault(elem, temp.count(elem)) - - return duplicates - - - def addOption(self, section, option, value, optiontype=None, position=None, reference=None, prefix='"'): - '''Add an option to a section - - section= the section which will have the option added - option= the option to add - value= the value which will be assigned to the option - position= e.g. 0 (i.e. the first element in the list of Screen - sections) - optiontype= if set to "Option" it will cause the option to look like - the following: - Option "NameOfTheOption" "Value" - - Otherwise it will look like the following: - NameOfTheOption "Value" - position= e.g. 0 (i.e. the first element in the list of Screen - sections) - reference= used only in a particular case of reference (see addReference) - - prefix= usually quotation marks are used for the values (e.g. "True") - however sometimes they don't have to be used - (e.g. DefaultDepth 24) and prefix should be set to '' instead of - '"' ''' - refSections = ['device'] - #prefix = '"'#values are always in quotation marks - if position != None: - if self.globaldict[section].get(position) == None: - raise SectionException - if reference: - # Remove an option if it has a certain assigned value. We want - # to do this when removing a reference. - self.removeOption(section, option, value=value, position=position) - #print 'Remove', option, 'from', section, 'position', position - else: - # value has to be set to None, however there is no way to do so - # other than this since addOption() cannot be called with - # value=None. Hence the need for this ugly nested if-block. - self.removeOption(section, option, position=position) - else: - #print 'Remove', option, 'from all', section - self.removeOption(section, option) - if optiontype == None: - if reference == None: - toadd = '\t' + option + '\t' + prefix + str(value) + prefix + '\n' - else: - if section.strip().lower() not in refSections: - # e.g. Screen "New Screen" - toadd = '\t' + option + '\t' + prefix + str(value) + prefix + '\n' - else: - # e.g. Screen 0 - # which is used for Xinerama setups in the Device section - toadd = '\t' + option + '\t' + str(value) + '\n' - else: - toadd = '\t' + optiontype + '\t' + '"' + option + '"' + '\t' \ - + prefix + str(value) + prefix + '\n' - - if len(self.globaldict[section]) == 0: - self.globaldict[section] = {} - self.globaldict[section][0] = [] - if section in self.requireid: - identifier = '\tIdentifier\t"Default ' + section + '"\n' - self.globaldict[section][0].append(identifier) - if position == None: - for elem in self.globaldict[section]: - self.globaldict[section][elem].append(toadd) - else: - self.globaldict[section][position].append(toadd) - - def __getOptionsToBlacklist(self, section, option, value=None, position=None, reference=None): - '''Private method shared by RemoveOption and CommentOutOption''' - toremove = {} - if len(self.globaldict[section]) != 0:#if the section exists - - if position == None: - #print 'Removing', option, 'from all', section, 'sections' - for elem in self.globaldict[section]: - it = 0 - for line in self.globaldict[section][elem]: - if value != None: - #print 'line =', line, 'option=', option, 'value', value - if line.lower().find(option.lower()) != -1 and line.lower().find(value.lower()) != -1: - toremove.setdefault(elem, []).append(it) - else: - if line.lower().find(option.lower()) != -1: - toremove.setdefault(elem, []).append(it) - it += 1 - else: - if self.globaldict[section].get(position) == None: - return - else: - #print 'Removing', option, 'from', section, 'position', position - it = 0 - for line in self.globaldict[section][position]: - if value != None: - # Remove the option only if it has a certain value - # assigned. This is useful in case we want to remove - # a reference to a certain Section from another section: - # e.g. Screen "Generic Screen". - if line.lower().find(option.lower()) != -1 and line.lower().find(value.lower()) != -1: - toremove.setdefault(position, []).append(it) - else: - # Remove the option without caring about the assigned - # value - if line.lower().find(option.lower()) != -1: - toremove.setdefault(position, []).append(it) - it += 1 - return toremove - - def removeOption(self, section, option, value=None, position=None, reference=None): - '''Remove an option from a section. - - section= the section which will have the option removed - option= the option to remove - value= if you want to remove an option only if it has a certain value - position= e.g. 0 (i.e. the first element in the list of Screen - sections)''' - - toremove = self.__getOptionsToBlacklist(section, option, value, position, reference) - for part in toremove: - modded = 0 - for line in toremove[part]: - realpos = line - modded - del self.globaldict[section][part][realpos] - modded += 1 - - def makeSection(self, section, identifier=None): - '''Create a new section and return the position of the section in the list - of sections of the same type (e.g. "Screen") so as to make it available - in case the user wants to add some options to it. - - The identifier and the position of the new section is added to - self.identifiers[section] - - section= the section to create - identifier= the identifier of a section (if the section requires an - identifier)''' - - position = len(self.globaldict[section]) - - if section in self.requireid: - if identifier != None: - option = 'Identifier' - # Don't create a new section if one of the same kind and with the same - # 'Identifier' is found - create = True - for sub in self.globaldict[section]: - if self.getValue(section, option, sub): - try: - if self.getValue(section, option, sub).strip().lower() == identifier.strip().lower(): - create = False - break - except AttributeError: - for elem in self.getValue(section, option, sub): - #print 'elem=', elem, 'id=', identifier - if elem.strip().lower() == identifier.strip().lower(): - create = False - break - - if create: - self.globaldict[section][position] = [] - self.addOption(section, option, value=identifier, position=position) - self.identifiers[section].append((identifier, position))#ADD to identifiers - #print 'Created section', section, 'id =', identifier, 'position =', position - #else: - #print section, 'Section labelled as', identifier, 'already exists. None will be created.' - else: - raise IdentifierException('%s Section requires an identifier' %(section)) - else: - self.globaldict[section][position] = [] - return position - - def removeSection(self, section, identifier=None, position=None): - '''Remove Sections by identifier, position or type''' - # Remove any section of "section" type with the same identifier - # currently sections of the same type cannot have the same id - # for obvious reasons - toremove = {} - if identifier: - try: - pos = self.getPosition(section, identifier) - toremove.setdefault(pos, None) - except IdentifierException: - pass - - # Comment the section of "section" type at position "position" - elif position != None: - if self.isSection(section, position=position): - toremove.setdefault(position, None) - - # Comment any section of "section" type - else: - allkeys = self.globaldict[section].keys() - toremove = {}.fromkeys(allkeys) - - # If the section has an identifier i.e. if the section - # is in self.requireid - if section in self.requireid: - # Get the references to remove from self.identifiers - it = 0 - for reference in self.identifiers[section]: - try: - ref = toremove.keys().index(reference[1]) - toremove[toremove.keys()[ref]] = it - except ValueError: - pass - it += 1 - - sortedRemove = toremove.keys() - sortedRemove.sort() - - modded = 0 - for sect in sortedRemove: - subsections = self.getSubSections(section, sect) - - # Remove all its SubSections from SubSection - for sub in subsections: - try:#remove subsection - del self.globaldict[self.subsection][sub] - except KeyError: - pass - - # Remember to remove any related entry from the "Comments" - # section - self.__removeCommentEntries(section, sect) - - # Remove the section from globaldict - del self.globaldict[section][sect] - - # Remove the reference from identifiers - # if such reference exists - identref = toremove[sect] - if identref != None: - realpos = identref - modded - - del self.identifiers[section][realpos] - modded += 1 - - - def addReference(self, section, reference, identifier, position=None): - '''Add a reference to a section from another section. - - For example: - to put a reference to the Screen section named "Default Screen" - in the ServerLayout section you should do: - - section='ServerLayout' - reference='Screen' - identifier='Default Screen' - position=0 #the first ServerLayout section - - NOTE: if position is set to None it will add such reference to any - instance of the section (e.g. to any ServerLayout section)''' - - self.addOption(section, reference, value=identifier, position=position, reference=True) - - def removeReference(self, section, reference, identifier, position=None): - '''Remove a reference to a section from another section. - - For example: - to remove a reference to Screen "Default Screen" from the - ServerLayout section you should do: - - section='ServerLayout' - reference='Screen' - identifier='Default Screen' - position=0 #the first ServerLayout section - - NOTE: if position is set to None it will remove such reference from any - instance of the section (e.g. from any ServerLayout section)''' - - self.removeOption(section, reference, value=identifier, position=position, reference=True) - - def getReferences(self, section, position, reflist=None): - '''Get the references to other sections which are located in a section. - - section= the section (e.g. "Screen") - position= e.g. 0 stands for the 1st Screen section - reflist= a list of references which this function should look for. - The default list of references is self.requireid but this - list can be overridden by the reflist argument so that, for - example, if reflist is set to ['Device'], this function will - look for references to other devices only (references to, say, - screens, will be ignored).''' - - if reflist == None: - options = self.requireid - else: - # if the following operation fails - # an AttributeError will be raised - # since reflist must be a list - reflist.append('') - del reflist[-1] - options = reflist - references = {}.fromkeys(options) - for option in options: - references[option] = [] - referenceDict = {} - try: - ref = self.getValue(section, option, position, reference=True) - except OptionException: - ref = [] - if ref: - try:#if ref is already a list - ref.append('') - del ref[-1] - - for elem in ref: - try: - elem.append('') - del elem[-1] - for extref in elem: - if elem: - referenceDict.setdefault(extref) - except AttributeError:# if ref is a string - if elem: - referenceDict.setdefault(elem) - except AttributeError:# if ref is a string - if ref: - referenceDict.setdefault(ref) - for reference in referenceDict.keys(): - references[option].append(reference) - return references - - def makeSubSection(self, section, identifier, position=None): - '''Create a new subsection inside of a section. - - section= the section to which the subsection will belong - identifier= the name of the subsection - position= the position of the section in the dictionary with the - sections (e.g. the 1st "Screen" section would be 0). If set to - None it will create a new subsection in all the instances of - the said section (e.g. in all the "Screen" sections)''' - - curlength = len(self.globaldict[self.subsection]) - - if position == None: - for elem in self.globaldict[section]: - # don't create a new subsection if one with the same 'section', 'identifier' - # and 'position' is found - create = True - for sub in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][sub].get('section') == section and \ - self.globaldict[self.subsection][sub].get('identifier') == identifier and\ - self.globaldict[self.subsection][sub].get('position') == elem: - create = False - - if create: - self.globaldict[self.subsection][curlength] = {} - self.globaldict[self.subsection][curlength]['section'] = section - self.globaldict[self.subsection][curlength]['identifier'] = identifier - self.globaldict[self.subsection][curlength]['options'] = [] - self.globaldict[self.subsection][curlength]['position'] = elem - curlength += 1 - else: - # don't create a new subsection if one with the same 'section', 'identifier' - # and 'position' is found - create = True - for sub in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][sub].get('section') == section and \ - self.globaldict[self.subsection][sub].get('identifier') == identifier and\ - self.globaldict[self.subsection][sub].get('position') == position: - create = False - - if create: - self.globaldict[self.subsection][curlength] = {} - self.globaldict[self.subsection][curlength]['section'] = section - self.globaldict[self.subsection][curlength]['identifier'] = identifier - self.globaldict[self.subsection][curlength]['options'] = [] - self.globaldict[self.subsection][curlength]['position'] = position - - def removeSubSection(self, section, identifier, position=None): - '''Remove a subsection from one or more sections. - - section= the section to which the subsection belongs - identifier= the name of the subsection - position= the position of the section in the dictionary with the - sections (e.g. the 1st "Screen" section would be 0). If set to - None it will remove a subsection from all the instances of - the said section (e.g. in all the "Screen" sections)''' - - curlength = len(self.globaldict[self.subsection]) - toremove = [] - if position == None: - for elem in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][elem].get('section') == section \ - and self.globaldict[self.subsection][elem].get('identifier') == identifier: - toremove.append(elem) - - else: - for elem in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][elem].get('section') == section \ - and self.globaldict[self.subsection][elem].get('identifier') == identifier \ - and self.globaldict[self.subsection][elem].get('position') == position: - toremove.append(elem) - for item in toremove: - del self.globaldict[self.subsection][item] - - def addSubOption(self, section, identifier, option, value, optiontype=None, position=None): - '''Add an option to one or more subsections. - - section= the section which contains the subsection - identifier= the identifier of the SubSection (e.g. Display) - option= the option to add - value= the value which will be assigned to the option - optiontype= if set to "Option" it will cause the option to look like - the following: - Option "NameOfTheOption" "Value" - - Otherwise it will look like the following: - NameOfTheOption "Value" - position= e.g. 0 (i.e. the option will be added to a subsection which - is located in the first element in the list of Screen - sections)''' - - prefix = '"' - donotcreate = [] - tomodify = [] - if position == None: - self.removeSubOption(section, identifier, option) - else: - self.removeSubOption(section, identifier, option, position=position) - if optiontype == None: - toadd = '\t' + option + '\t' + str(value) + '\n' - else: - toadd = '\t' + optiontype + '\t' + prefix + option + prefix + '\t' \ - + prefix + str(value) + prefix + '\n' - - curlength = len(self.globaldict[self.subsection]) - if curlength == 0: - self.globaldict[self.subsection][0] = {'section': section, - 'identifier': identifier, 'options': []} - - if position == None: - # if there is not a subsection for each selected section then - # create it - cursectlength = len(self.globaldict[section]) - it = 0 - while it < cursectlength: - for elem in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][elem].get("position") == it and \ - self.globaldict[self.subsection][elem].get("section") == section and \ - self.globaldict[self.subsection][elem].get("identifier") == identifier: - donotcreate.append(it) - it += 1 - for i in range(cursectlength+1): - if i not in donotcreate: - self.makeSubSection(section, identifier, position=i) - - for elem in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][elem].get("identifier") == identifier and \ - self.globaldict[self.subsection][elem].get("section") == section: - tomodify.append(elem) - - else: - for elem in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][elem].get("position") == position and \ - self.globaldict[self.subsection][elem].get("identifier") == identifier: - tomodify.append(elem) - if len(tomodify) == 0: - curlength = len(self.globaldict[self.subsection]) - self.globaldict[self.subsection][len(self.globaldict[self.subsection])] = \ - {'section': section, 'identifier': identifier, - 'options': [], 'position': position} - tomodify.append(curlength) - - for elem in tomodify: - self.globaldict[self.subsection][elem]['options'].append(toadd) - - - def __getSubOptionsToBlacklist(self, section, identifier, option, position=None): - '''Get a dictionay of the suboptions to blacklist. - - See addSubOption() for an explanation on the arguments. - - Used in both removeOption() and removeSubOption() - ''' - toremove = {} - if len(self.globaldict[section]) != 0:#if the section exists - if len(self.globaldict[self.subsection]) != 0: - for elem in self.globaldict[self.subsection]: - if position == None: - if self.globaldict[self.subsection][elem].get('section') == section \ - and self.globaldict[self.subsection][elem].get('identifier') == identifier: - it = 0 - for opt in self.globaldict[self.subsection][elem]['options']: - if opt.strip().lower().find(option.strip().lower()) != -1: - toremove.setdefault(elem, []).append(it) - it += 1 - else: - if self.globaldict[self.subsection][elem].get('section') == section \ - and self.globaldict[self.subsection][elem].get('identifier') == identifier \ - and self.globaldict[self.subsection][elem].get('position') == position: - it = 0 - for opt in self.globaldict[self.subsection][elem]['options']: - if opt.strip().lower().find(option.strip().lower()) != -1: - toremove.setdefault(elem, []).append(it) - it += 1 - return toremove - - - def removeSubOption(self, section, identifier, option, position=None): - '''Remove an option from a subsection.''' - - toremove = self.__getSubOptionsToBlacklist(section, identifier, option, position) - for elem in toremove: - modded = 0 - for part in toremove[elem]: - realpos = part - modded - del self.globaldict[self.subsection][elem]['options'][realpos] - modded += 1 - - def getIdentifier(self, section, position): - '''Get the identifier of a specific section from its position.''' - - errorMsg = 'No identifier can be found for section "%s" No %d' %(section, position) - try: - for sect in self.identifiers[section]: - if sect[1] == position: - return sect[0] - except KeyError: - raise SectionException - raise IdentifierException, errorMsg - - - def __cleanOption(self, option, optname, reference=None, section=None): - '''Clean the option and return the value (i.e. the last item of the list - which this method generates). - - If no value can be found, return False.''' - - if reference: - # If it's a reference to another section then options such as - # Option "Device" "/dev/psaux" should not be taken into - # account. - if 'option' in option.strip().lower(): - return False - - # Do not confuse Device "Configure device" with InputDevice "device" - if not option.strip().lower().startswith(optname.strip().lower()): - return False - - optbits = [] - optbit = '' - it = 0 - quotation = 0 - optcount = option.count('"') - if optcount > 0:#dealing with a section option - for i in option: - if optcount in [2, 4] and section == 'ServerLayout': - if not i.isspace(): - if i == '"': - if quotation != 0 and quotation % 2 != 0: - if len(optbit) > 0: - optbits.append(optbit) - optbit = '' - quotation += 1 - else: - if quotation % 2 != 0: - optbit += i - else: - - if quotation % 2 != 0: - optbit += i - else: - #print 'i', repr(i), 'optbit', optbit - if not i.isspace(): - if i == '"': - quotation += 1 - else: - optbit += i - else: - - if quotation % 2 != 0: - optbit += i - - else: - if len(optbit) > 0: - optbits.append(optbit) - #print 'i=', i, 'optbit=', optbit - optbit = '' - - if it == len(option) - 1: - if optbit != '': - optbits.append(optbit) - #print 'i=END', 'optbit=', optbit - it += 1 - else:#dealing with a subsection option - for i in option: - #print 'i', repr(i), 'optbit', optbit - if not i.isspace(): - optbit += i - else: - if len(optbit) > 0: - optbits.append(optbit) - #print 'i=', i, 'optbit=', optbit - optbit = '' - - if it == len(option) - 1: - if optbit != '': - optbits.append(optbit) - #print 'i=END', 'optbit=', optbit - it += 1 - - optlen = len(optbits) - - if optlen > 1: - # Let's make sure that the option is the one we're looking for - # e.g. if we're looking for a reference to Device we are not - # interested in getting references to InputDevice - - referencesList = [x.lower().strip() for x in self.references] - - if section != 'ServerLayout' and quotation == 0 and optlen == 2 and optbits[0].lower().strip() in referencesList: - # e.g. Screen 1 -> 1 stands for the position, therefore the - # identifier of the section at position 1 should be returned - # instead of the number (if possible). - # - # return [Screen, identifier] - try: - sect = '' - value = int(optbits[1].strip()) - for item in self.requireid: - if optbits[0].lower().strip() == item.lower().strip(): - sect = item - break - try: - identifier = self.getIdentifier(sect, value) - return [identifier] - except (IdentifierException): - return False - except ValueError: - pass - - if optcount != 4 and section != 'ServerLayout': - status = False - for elem in optbits: - if elem.lower() == optname.lower(): - status = True - if status == False: - return False - - if optlen == 2 and optbits[0].lower().strip() == 'option': - # e.g. Option "AddARGBGLXVisuals" - # (The value was omitted but it will be interpreted as True by - # Xorg) - return 'True' - - sections = [sect.strip().lower() for sect in self.sections] - - -# if optlen == 2 and optbits[0].lower().strip() in sections: -# ''' -# Do not confuse Device "Configure device" with InputDevice "device" -# ''' -# if optbits[0].lower().strip() != optname.strip().lower(): -# return False - - if optcount == 4 and section == 'ServerLayout': - #If it's something like InputDevice "stylus" "SendCoreEvents" - if optname.lower().strip() == 'inputdevice' and len(optbits) == 2: - del optbits[1] - serverDict = {} - for elem in optbits: - serverDict.setdefault(elem) - return serverDict.keys() - elif optcount > 0 and optcount <= 4:#dealing with a section option - return optbits[optlen -1] - elif optcount > 4: - del optbits[0] - return optbits - elif optcount == 0: - del optbits[0] - return ' '.join(optbits) - else: - if optcount in [2, 4] and section == 'ServerLayout': - return optbits - return False - - def getValue(self, section, option, position, identifier=None, sect=None, reference=None): - '''Get the value which is assigned to an option. - - Return types: - * string (if only one value is available) - - usually in options - * list (if more than one option is found) - - having multiple references of the same type is allowed. - for example it is not unusual to have 2 references to - Screen sections in the ServerLayout section (in case of - Xinerama) - - if the options are actually options and not references - then there are duplicate options, which should be detected - in advance with xutils.XUtils.getDuplicateOptions() - * None (if no value can be found) - Not always true -> See below. - - NOTE: Use-case for returning None - * When dealing with incomplete references. For example: - Screen "Configured Screen" - is different from: - Screen - (which is an incomplete reference) - * When dealing with incomplete options. For example: - Depth 24 - is different from: - Depth - (which is an incomplete option) - * Exception: - Some options (with the "Option" prefix) (not references) - can be used with no value (explicitly) assigned and are - considered as True by the Xserver. In such case getValue() - will return "True". For example: - Option "AddARGBGLXVisuals" - is the same as: - Option "AddARGBGLXVisuals" "True" - - NOTE: Meaning of keys in Sections and SubSections: - * When dealing with a Section: - section= e.g. 'Screen', 'Device', etc. - option= the option - position= e.g. 0 (i.e. the first element in the list of Screen - sections) - reference= used only by getReferences() - - * When dealing with a SubSection: - section= 'SubSection' (this is mandatory) - option= the option - position= e.g. 0 would mean that the subsection belongs to - the 1st item of the list of, say, "Screen" sections. - (i.e. the first element in the list of Screen - sections) - ["position" is a key of an item of the list of - subsections see below] - - identifier= the name of the subsection e.g. 'Display' - sect = the 'section' key of an item of the list of - subsections e.g. the "Display" subsection can be - found in the "Screen" section ('sect' is the latter) - - NOTE: Anatomy of Sections and SubSections: - * Anatomy of subsections: - self.globaldict['SubSection'] = - {0: {'section': 'Screen', 'identifier': 'Display', - 'position': 0, 'options': [option1, option2, etc.], - etc.} - In this case we refer to the 'Display' subsection - which is located in the first 'Screen' section. - - * Anatomy of a section: - self.globaldict['Screen'] = - {0: [option1, option2, etc.], 1: [...], ...} - 0, 1, etc. is the position ''' - - values = [] - - if self.globaldict[section].get(position) == None: - raise SectionException - - #if len(values) == 0: - #raise OptionException - - #return values - - else: - try: - # see if it's a dictionary (e.g. in case of a subsection) - # or a list (in case of a normal section) and act - # accordingly - self.globaldict[section][position].index('foo') - except AttributeError:#dict - if identifier == None: - raise Exception('An identifier is required for subsections') - else: - for elem in self.globaldict[section]: - if self.globaldict[section][elem].get('identifier') == identifier and \ - self.globaldict[section][elem].get('position') == position and \ - self.globaldict[section][elem].get('section') == sect: - for opt in self.globaldict[section][elem]['options']: - if option.strip().lower() in opt.strip().lower(): - if opt.strip().find('#') != -1: - stropt = opt.strip()[0: opt.strip().find('#')] - else: - stropt = opt.strip() - # clean the option and return the value - values.append(self.__cleanOption(stropt, option, reference=reference)) - - if len(values) == 0: - raise OptionException - - if len(values) > 1: - return values - else: - try: - return values[0] - except IndexError: - return None - - except ValueError:#list - for elem in self.globaldict[section][position]: - if option.strip().lower() in elem.strip().lower(): - # clean the option and return the value - if elem.strip().find('#') != -1: - stropt = elem.strip()[0: elem.strip().find('#')] - else: - stropt = elem.strip() - values.append(self.__cleanOption(stropt, option, reference=reference, section=section)) - - if len(values) == 0: - raise OptionException - - if len(values) > 1: - return values - else: - try: - return values[0] - except IndexError: - return None - except KeyError:#not found - raise OptionException - - def isSection(self, section, identifier=None, position=None): - '''See if a section with a certain identifier exists. - - NOTE: either identifier or position must be provided.''' - - if identifier != None: - try: - self.getPosition(section, identifier) - return True - except IdentifierException: - return False - elif position != None: - return self.globaldict[section].get(position) != None - - else: - errorMsg = 'Either identifier or position must be provided' - raise Exception(errorMsg) - - def getPosition(self, section, identifier): - '''Get the position of a specific section from its identifier.''' - - errorMsg = 'No %s section named "%s" can be found' %(section, identifier) - for sect in self.identifiers[section]: - try: - if sect[0].strip().lower() == identifier.strip().lower(): - return sect[1] - except AttributeError: - pass - raise IdentifierException, errorMsg - - def getBrokenReferences(self): - '''Look for broken references (i.e. references to sections which don't exist) - and return a dictionary having the items of self.requireid as keys and - a dictionary of the identifiers of the sections which are referred to by the - broken references. - - For example: - - brokenReferences = { - 'InputDevice': {'InputDevice 1': None, 'Another input device': None}, - 'Device': {...}, - 'Monitor' {...}, - 'Screen' {...}, - 'ServerLayout' {...} - }''' - - brokenReferences = {}.fromkeys(self.requireid) - referencesTree = {} - for section in self.requireid:#['Screen', 'ServerLayout'] - referencesTree[section] = {} - brokenReferences[section] = {} - for sect in self.globaldict[section]: - referencesTree[section][sect] = self.getReferences(section, sect) - #print >> stderr, 'REFERENCES = %s' % (str(referencesTree)) - for section in referencesTree: - for elem in referencesTree[section]: - for refsect in referencesTree[section][elem]: - - if len(referencesTree[section][elem][refsect]) > 0: - #referencesTree[section][elem][refsect] - for ref in referencesTree[section][elem][refsect]: - for sect in self.sections: - if sect.lower() == refsect.strip().lower(): - refsect = sect - if not self.isSection(refsect, ref): - #print '*****WARNING:', refsect, 'Section', ref, 'does not exist!*****' - brokenReferences[refsect].setdefault(ref) - #print 'FIX: Creating', refsect, 'Section', ref - #self.makeSection(refsect, identifier=ref) - return brokenReferences - - - - def getDefaultServerLayout(self): - '''See if one or more ServerLayout sections are set as default and return their - position in a list - - NOTE: If the section set as the default ServerLayout doesn't exist - it will raise a ParseException.''' - - default = [] - serverFlags = self.globaldict['ServerFlags'] - it = 0 - for flag in serverFlags: - try: - defaultLayout = self.getValue('ServerFlags', 'DefaultServerLayout', it) - if defaultLayout: - defIt = 0 - for identifier in self.identifiers['ServerLayout']: - if identifier[0].lower().strip() == defaultLayout.lower().strip(): - default.append(identifier[1])#LayoutPosition - defIt += 1 - if defIt == 0: - # If the section set as the default ServerLayout doesn't exist - # raise a ParseException - error = 'The default ServerLayout does not exist.' - raise ParseException(error) - except OptionException:#no defaultLayout - pass - it += 1 - return default - - - def __mergeSubSections(self): - '''Put SubSections back into the sections to which they belong.''' - - for sect in self.tempdict['SubSection']: - section = self.tempdict['SubSection'][sect]['section'] - identifier = self.tempdict['SubSection'][sect]['identifier'] - position = self.tempdict['SubSection'][sect].get('position') - options = self.tempdict['SubSection'][sect]['options'] - self.tempdict[section].setdefault(position, []).append('\tSubSection ' + '"' + identifier + '"' + '\n') - if len(options) > 0: - self.tempdict[section][position].append('\t' + '\t'.join(options) + '\tEndSubSection\n') - else: - self.tempdict[section][position].append('\t'.join(options) + '\tEndSubSection\n') - try:#remove subsection since it was merged - del self.tempdict['SubSection'] - except KeyError: - pass - - - def writeFile(self, destination, test=None): - '''Write the changes to the destination file (e.g. /etc/X11/xorg.conf) - or file object (e.g. sys.stdout). - - * Arguments: - destination = the destination file or file object (mandatory) - test = if set to True writeFile will append the result to the - destination file instead of overwriting it. It has no - effect on file objects. Useful for testing. - - NOTE: global dict's state is not altered.''' - - # Create self.tempdict - self.tempdict = copy.deepcopy(self.globaldict) - - # Commented options must be dealt with first - self.__mergeCommentedOptions() - - # Merge all the non-commented subsections - self.__mergeSubSections() - lines = [] - comments = ''.join(self.comments) + '\n' - lines.append(comments) - for section in self.tempdict: - if section != self.commentsection: - if len(self.tempdict[section]) > 0: - for elem in self.tempdict[section]: - lines.append('Section ' + '"' + section + '"' + '\n') - lines.append(''.join(self.tempdict[section][elem]) + 'EndSection\n\n') - - del self.tempdict - - if not hasattr(destination, 'write'):#it is a file - if test: - destination = open(destination, 'a') - else: - destination = open(destination, 'w') - destination.write(''.join(lines)) - destination.close() - else:#it is a file object - destination.write(''.join(lines)) - - def getSubSections(self, section, position): - '''Get all the subsections contained in a section''' - # loop through subsections and see what subsections match - # the section - subsections = [] - for sub in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][sub]['section'] == section \ - and self.globaldict[self.subsection][sub]['position'] == position: - subsections.append(sub) - - return subsections - - def __permanentMergeSubSections(self, subsections): - '''Put SubSections back into the sections to which they belong and comment them out - - WARNING: this alters globaldict and should be used only in commentOutSection() - i.e. when the whole section is being commented out. - - subsections = the list of the indices subsections to merge and remove''' - - for sect in subsections: - section = self.globaldict[self.subsection][sect]['section'] - identifier = self.globaldict[self.subsection][sect]['identifier'] - position = self.globaldict[self.subsection][sect].get('position') - options = self.globaldict[self.subsection][sect]['options'] - self.comments.append('#\tSubSection ' + '"' + identifier + '"' + '\n') - - for option in options: - opt = '#\t\t%s\n' % (option.strip()) - self.comments.append(opt) - self.comments.append('#\tEndSubSection\n') - - try:#remove subsection since it was merged - del self.globaldict[self.subsection][sect] - except KeyError: - pass - - def __getComments(self, section, position): - '''Return the index of the comment entry in the Comments section for a section''' - - comments = [] - if self.globaldict[self.commentsection].get(section): - for sect in self.globaldict[self.commentsection][section]: - if self.globaldict[self.commentsection][section][sect].get('position') == position: - comments.append(sect) - - return comments - - def __MergeSubSectionsWithComments(self, subsections): - '''Put SubSections back into the sections to which they belong and comment them out - - WARNING: this alters globaldict and should be used only to comment out subsections - (i.e. in commentOutSubSection() ) when the whole section is not being - commented out - - subsections = the list of the indices subsections to merge and remove''' - - endSubSection = '#\tEndSubSection\n' - - for sect in subsections: - section = self.globaldict[self.subsection][sect]['section'] - identifier = self.globaldict[self.subsection][sect]['identifier'] - position = self.globaldict[self.subsection][sect].get('position') - options = self.globaldict[self.subsection][sect]['options'] - - startSubSection = '#\tSubSection "%s"\n' % (identifier) - - comments = self.__getComments(section, position) - if not comments: - self.globaldict[self.commentsection][section] = {} - self.globaldict[self.commentsection][section][position] = {} - self.globaldict[self.commentsection][section][position]['identifier'] = None - self.globaldict[self.commentsection][section][position]['position'] = position - self.globaldict[self.commentsection][section][position]['section'] = None - self.globaldict[self.commentsection][section][position]['options'] = [] - - - comments_options = self.globaldict[self.commentsection][section][position]['options'] - - comments_options.append(startSubSection) - for option in options: - opt = '#\t\t%s\n' % (option.strip()) - comments_options.append(opt) - - comments_options.append(endSubSection) - - #remove subsection since it was merged - del self.globaldict[self.subsection][sect] - - def __commentOutRelatedSubSections(self, section, position): - '''Comment out all the subsections of a section.''' - - subsections = self.getSubSections(section, position) - self.__permanentMergeSubSections(subsections) - - def __removeCommentEntries(self, section, position): - '''Remove comment sections of specific sections from the "Comments" section''' - - comments = self.__getComments(section, position) - for commentSection in comments: - del self.globaldict['Comments'][section][commentSection] - - def commentOutSection(self, section, identifier=None, position=None): - '''Comment out a section and all its subsections.''' - - startSection = '\n#Section "%s"\n' % (section) - endSection = '#EndSection\n' - - # Comment any section of "section" type with the same identifier - # currently sections of the same type cannot have the same id - # for obvious reasons - toremove = {} - if identifier: - try: - pos = self.getPosition(section, identifier) - toremove.setdefault(pos, None) - except IdentifierException: - pass - - # Comment the section of "section" type at position "position" - elif position != None: - if self.isSection(section, position=position): - toremove.setdefault(position, None) - - # Comment any section of "section" type - else: - allkeys = self.globaldict[section].keys() - toremove = {}.fromkeys(allkeys) - - # If the section has an identifier i.e. if the section - # is in self.requireid - if section in self.requireid: - # Get the references to remove from self.identifiers - it = 0 - for reference in self.identifiers[section]: - try: - ref = toremove.keys().index(reference[1]) - toremove[toremove.keys()[ref]] = it - except ValueError: - pass - it += 1 - - - sortedRemove = toremove.keys() - sortedRemove.sort() - - - modded = 0 - for sect in sortedRemove: - self.comments.append(startSection) - for option in self.globaldict[section][sect]: - commentedOption = '#\t%s\n' % (option.strip()) - self.comments.append(commentedOption) - - # Append all its SubSections (automatically commented - # out) and remove them from SubSection - self.__commentOutRelatedSubSections(section, sect) - self.comments.append(endSection) - - # Remember to remove any related entry from the "Comments" - # section - self.__removeCommentEntries(section, sect) - - # Remove the section from globaldict - del self.globaldict[section][sect] - - # Remove the reference from identifiers - # if such reference exists - identref = toremove[sect] - if identref != None: - realpos = identref - modded - - del self.identifiers[section][realpos] - modded += 1 - - - def commentOutSubSection(self, section, identifier, position): - '''Comment out a subsection. - - section= the type of the section which contains the subsection - identifier= the identifier of the subsection - position= the position of the section''' - - subsections = [] - for subsection in self.globaldict[self.subsection]: - if self.globaldict[self.subsection][subsection]['section'] == section \ - and self.globaldict[self.subsection][subsection]['identifier'] == identifier \ - and self.globaldict[self.subsection][subsection]['position'] == position: - subsections.append(subsection) - break - # Add the subsection to the Comments section - self.__MergeSubSectionsWithComments(subsections) - - - def commentOutOption(self, section, option, value=None, position=None, reference=None): - '''Comment out an option in a section. - - section= the section which will have the option commented out - option= the option to comment out - value= if you want to comment out an option only if it has a certain value - position= e.g. 0 (i.e. the first element in the list of Screen - sections)''' - - toremove = self.__getOptionsToBlacklist(section, option, value, position, reference) - for part in toremove: - modded = 0 - for line in toremove[part]: - realpos = line - modded - self.globaldict[section][part][realpos] = '#%s' % (self.globaldict[section][part][realpos].strip()) - - self.globaldict[self.commentsection].setdefault(section, {}) - curlength = len(self.globaldict[self.commentsection][section]) - self.globaldict[self.commentsection][section].setdefault(part, {}) - self.globaldict[self.commentsection][section][part].setdefault('identifier', None) - self.globaldict[self.commentsection][section][part].setdefault('position', part) - self.globaldict[self.commentsection][section][part].setdefault('section', None) - self.globaldict[self.commentsection][section][part].setdefault('options', []) - # Copy the option to the Comments section - self.globaldict[self.commentsection][section][part]['options'].append(self.globaldict[section][part][realpos]) - - #Remove it from its section in globaldict - del self.globaldict[section][part][realpos] - - modded += 1 - - - def commentOutSubOption(self, section, identifier, option, position=None): - '''Comment out an option in a subsection. - - section= the section which contains the subsection - identifier= the identifier of the subsection - option= the option to comment out - position= the position of the section which contains the subsection - e.g. 0 (i.e. the first element in the list of Screen - sections)''' - - toremove = self.__getSubOptionsToBlacklist(section, identifier, option, position) - for elem in toremove: - modded = 0 - for part in toremove[elem]: - realpos = part - modded - - self.globaldict[self.subsection][part]['options'][realpos] = \ - '#%s' % (self.globaldict[self.subsection][part]['options'][realpos].strip()) - - self.globaldict[self.commentsection].setdefault(self.subsection, {}) - curlength = len(self.globaldict[self.commentsection][self.subsection]) - self.globaldict[self.commentsection][self.subsection].setdefault(part, {}) - self.globaldict[self.commentsection][self.subsection][part].setdefault('identifier', identifier) - self.globaldict[self.commentsection][self.subsection][part].setdefault('position', part) - self.globaldict[self.commentsection][self.subsection][part].setdefault('section', section) - self.globaldict[self.commentsection][self.subsection][part].setdefault('options', []) - # Copy the option to the Comments section - commentsOptions = self.globaldict[self.commentsection][self.subsection][part]['options'] - commentedOption = self.globaldict[self.subsection][part]['options'][realpos] - commentsOptions.append(commentedOption) - - #Remove the option from its section in globaldict - del self.globaldict[self.subsection][elem]['options'][realpos] - modded += 1 - - def __mergeCommentedOptions(self): - '''Put commented out options back into the sections or subsections to which they belong.''' - - for sect in self.tempdict[self.commentsection]: - sectionOptions = None - for sectionInstance in self.tempdict[self.commentsection][sect]: - section = self.tempdict[self.commentsection][sect][sectionInstance].get('section') - - identifier = self.tempdict[self.commentsection][sect][sectionInstance].get('identifier') - position = self.tempdict[self.commentsection][sect][sectionInstance].get('position') - options = self.tempdict[self.commentsection][sect][sectionInstance]['options'] - if section == self.subsection: - for sub in self.tempdict[sect]: - subSection = self.tempdict[sect][sub] - if subSection['identifier'] == identifier and \ - subSection['position'] == position and \ - subSection['section'] == section: - sectionOptions = self.tempdict[sect][sub]['options'] - break - - else: - sectionOptions = self.tempdict[sect].get(position) - - if sectionOptions: - for option in options: - option = '\t%s\n' % (option.strip()) - if sect == self.subsection: - sectionOptions.setdefault('options', []).append(option) - else: - sectionOptions.append(option) - - diff -Nru x-kit-0.4.2.3build1/XKit/xutils.py x-kit-0.5.0/XKit/xutils.py --- x-kit-0.4.2.3build1/XKit/xutils.py 2011-06-25 13:11:47.000000000 +0000 +++ x-kit-0.5.0/XKit/xutils.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,194 +0,0 @@ -# xutils.py -- Enhanced class of X-Kit's parser -# -# Copyright 2008 Alberto Milone -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301, USA. - -from xorgparser import * -import sys - -class XUtils(Parser): - ''' - Subclass with higher-level methods - - See xorgparser.Parser for the low-level methods - ''' - def __init__(self, source=None): - Parser.__init__(self, source) - - def checkNFixSection(self): - ''' - Gathers information on one or more sections and try to fix - broken references to other sections. - ''' - brokenReferences = self.getBrokenReferences() - for section in brokenReferences: - for reference in brokenReferences[section]: - self.makeSection(section, identifier=reference) - - def getDriver(self, section, position): - ''' - Get the driver in use in a section. If none is found it will return - false. - - For further information see getValue - ''' - option = 'Driver' - return self.getValue(section, option, position) - - def setDriver(self, section, driver, position): - ''' - Set the driver in use in a section. - ''' - option = 'Driver' - self.addOption(section, option, driver, position=position) - - - - def isDriverInSection(self, driver, sectionsList=None): - ''' - Look for the driver in the Device sections. - Return True if the driver is found in each of the - specified sections, otherwise return False. - - if sectionsList == None check all the Device sections - ''' - if sectionsList == None: - sectionsList = self.globaldict['Device'].keys() - - for section in sectionsList: - try: - if self.getDriver('Device', section) != driver: - return False - except OptionException: - #no references to the Device section - return False - return True - - def getDevicesFromServerLayout(self, position): - ''' - Look for references to Device sections in the Screen sections referred - to in the ServerLayout[position] section. - - Return a list of references to the relevant Device sections - ''' - devicesToCheck = [] - references = self.getReferences('ServerLayout', position, ['Screen']) - if len(references['Screen']) > 0: - ''' - Check all the device sections related to these Screen sections - - references will look like {'Screen': ['Screen1', '0']} - ''' - for reference in references['Screen']: - try: - screenPosition = self.getPosition('Screen', reference)#reference[1] - except IdentifierException: - continue - ''' - get references to the Device sections in the Screen sections - ''' - try: - deviceReferences = self.getReferences('Screen', screenPosition, ['Device']) - for device in deviceReferences['Device']: - devicePosition = self.getPosition('Device', device)#device[1] - devicesToCheck.append(devicePosition) - except OptionException:#no references to the Device section - pass - return devicesToCheck - - def getDevicesInUse(self): - ''' - If possible, return only the Device sections in use, otherwise return - all the Device sections. - - This method supports old Xinerama setups and therefore looks for - references to Device sections in the ServerLayout section(s) and checks - only the default ServerLayout section provided than one is set in the - ServerFlags section. - ''' - devicesToCheck = [] - driverEnabled = False - - serverLayout = self.globaldict['ServerLayout'] - serverFlags = self.globaldict['ServerFlags'] - serverLayoutLength = len(serverLayout) - serverFlagsLength = len(serverFlags) - - if serverLayoutLength > 0: - if serverLayoutLength > 1:#More than 1 ServerLayout? - if serverFlagsLength > 0:#has ServerFlags - ''' - If the ServerFlags section exists there is a chance that - a default ServerLayout is set. - - If no ServerLayout is set, this might be intentional since - the user might start X with the -layout command line option. - ''' - - #See if it has a default ServerLayout - default = self.getDefaultServerLayout() - - if len(default) == 1: - devicesToCheck = self.getDevicesFromServerLayout(default[0]) - else: - for layout in serverLayout: - devicesToCheck += self.getDevicesFromServerLayout(layout) - else: - for layout in serverLayout: - devicesToCheck += self.getDevicesFromServerLayout(layout) - else: - devicesToCheck = self.getDevicesFromServerLayout(0) - #print 'devicesToCheck', devicesToCheck - - if len(devicesToCheck) == 0: - #Check all the Device sections - devicesToCheck = self.globaldict['Device'].keys() - - return devicesToCheck - - def isDriverEnabled(self, driver): - ''' - If possible, check only the Device sections in use, otherwise check - all the Device sections and see if a driver is enabled. - - This method supports old Xinerama setups and therefore looks for - references to Device sections in the ServerLayout section(s) and checks - only the default ServerLayout section provided than one is set in the - ServerFlags section. - ''' - devicesToCheck = self.getDevicesInUse() - driverEnabled = self.isDriverInSection(driver, sectionsList=devicesToCheck) - - return driverEnabled#driverEnabled, devicesToCheck) - - def getScreenDeviceRelationships(self): - ''' - See which Screen sections are related to which Device sections - ''' - relationships = {} - it = 0 - for screen in self.globaldict['Screen']: - references = self.getReferences('Screen', it, reflist=['Device']) - device = references['Device'][0] - device = self.getPosition('Device', device) - relationships.setdefault(device) - relationships[device] = {} - relationships[device]['Screen'] = it - it += 1 - - return relationships -