Hello community,

here is the log from the commit of package python-xdis for openSUSE:Factory 
checked in at 2019-10-04 11:22:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-xdis (Old)
 and      /work/SRC/openSUSE:Factory/.python-xdis.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-xdis"

Fri Oct  4 11:22:30 2019 rev:3 rq:734940 version:4.0.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-xdis/python-xdis.changes  2019-09-05 
12:34:12.839574543 +0200
+++ /work/SRC/openSUSE:Factory/.python-xdis.new.2352/python-xdis.changes        
2019-10-04 11:22:44.944893902 +0200
@@ -1,0 +2,7 @@
+Fri Oct  4 08:29:23 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 4.0.4:
+  * Add most-recent 3.8 magic number
+  * Remove some 3.8 invalid escape warnings
+
+-------------------------------------------------------------------

Old:
----
  4.0.3.tar.gz

New:
----
  4.0.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-xdis.spec ++++++
--- /var/tmp/diff_new_pack.Vocr88/_old  2019-10-04 11:22:45.360892818 +0200
+++ /var/tmp/diff_new_pack.Vocr88/_new  2019-10-04 11:22:45.360892818 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-xdis
-Version:        4.0.3
+Version:        4.0.4
 Release:        0
 Summary:        Python cross-version byte-code disassembler and marshal 
routines
 License:        GPL-2.0-only
@@ -36,7 +36,7 @@
 %python_subpackages
 
 %description
-Cross-Python bytecode Disassembler and Marshal routines
+Python cross-version byte-code disassembler and marshal routines.
 
 %prep
 %setup -q

++++++ 4.0.3.tar.gz -> 4.0.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/.circleci/config.yml 
new/python-xdis-4.0.4/.circleci/config.yml
--- old/python-xdis-4.0.3/.circleci/config.yml  2019-07-25 05:06:55.000000000 
+0200
+++ new/python-xdis-4.0.4/.circleci/config.yml  2019-10-02 19:29:22.000000000 
+0200
@@ -17,6 +17,7 @@
     environment:
       CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
       CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
+      COMPILE: --compile
     # In CircleCI 1.0 we used a pre-configured image with a large number of 
languages and other packages.
     # In CircleCI 2.0 you can now specify your own image, or use one of our 
pre-configured images.
     # The following configuration line tells CircleCI to use the specified 
docker image as the runtime environment for you job.
@@ -26,9 +27,9 @@
     # VM instead of a container) see 
https://circleci.com/docs/2.0/executor-types/
     # To see the list of pre-built images that CircleCI provides for most 
common languages see
     # https://circleci.com/docs/2.0/circleci-images/
-    docker:
-    - image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
-      command: /sbin/init
+    machine:
+      python:
+        version: 2.7.14
     steps:
     # Machine Setup
     #   If you break your build into multiple jobs with workflows, you will 
probably want to do the parts of this that are relevant in each
@@ -41,24 +42,24 @@
     # This is based on your 1.0 configuration file or project settings
     - run:
         working_directory: ~/rocky/python-xdis
-        command: pyenv install 2.7.13 && pyenv local 2.7.13 && pyenv rehash && 
pip install virtualenv && pip install nose && pip install pep8 && pyenv rehash
+        command: pip install virtualenv && pip install nose && pip install 
pep8 && pyenv rehash
     # Dependencies
     #   This would typically go in either a build or a build-and-test job when 
using workflows
     # Restore the dependency cache
     - restore_cache:
         keys:
-        # This branch if available
-        - v1-dep-{{ .Branch }}-
-        # Default branch if not
-        - v1-dep-master-
-        # Any branch if there are none on the default branch - this should be 
unnecessary if you have your default branch configured correctly
-        - v1-dep-
+          - v2-dependencies-{{ .Branch }}-
+          # fallback to using the latest cache if no exact match is found
+          - v2-dependencies-
+
     # This is based on your 1.0 configuration file or project settings
+    - run: pip install --upgrade setuptools
     - run: pip install -e .
     - run: pip install -r requirements-dev.txt
+
     # Save dependency cache
     - save_cache:
-        key: v1-dep-{{ .Branch }}-{{ epoch }}
+        key: v2-dependencies-{{ .Branch }}-{{ epoch }}
         paths:
         # This is a broad list of cache paths to include many possible 
development environments
         # You can probably delete some of these entries
@@ -67,9 +68,8 @@
         - ~/.m2
         - ~/.ivy2
         - ~/.bundle
-        - ~/.go_workspace
-        - ~/.gradle
         - ~/.cache/bower
+
     # Test
     #   This would typically be a build job when using workflows, possibly 
combined with build
     # This is based on your 1.0 configuration file or project settings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/NEWS.md 
new/python-xdis-4.0.4/NEWS.md
--- old/python-xdis-4.0.3/NEWS.md       2019-07-25 05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/NEWS.md       2019-10-02 19:29:22.000000000 +0200
@@ -1,3 +1,9 @@
+4.0.4 2019-10-02
+================
+
+- Add most-recent 3.8 magic number
+- Remove some 3.8 invalid escape warnings
+
 4.0.3 2019-7-24  Mueller day
 ============================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/README.rst 
new/python-xdis-4.0.4/README.rst
--- old/python-xdis-4.0.3/README.rst    2019-07-25 05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/README.rst    2019-10-02 19:29:22.000000000 +0200
@@ -1,4 +1,6 @@
-|buildstatus| |Latest Version| |Supported Python Versions|
+|buildstatus| |Pypi Installs| |Latest Version| |Supported Python Versions|
+
+|packagestatus|
 
 xdis
 ====
@@ -9,13 +11,13 @@
 Introduction
 ------------
 
-The Python `dis` module allows you to disassemble bytecode from the same
+The Python dis_ module allows you to disassemble bytecode from the same
 version of Python that you are running on. But what about bytecode from
 different versions?
 
 That's what this package is for. It can "marshal load" Python
 bytecodes from different versions of Python. The command-line routine
-*pydisasm* will show disassembly output using Python 3.6 disassembly
+*pydisasm* will show disassembly output using Python 3.8 disassembly
 conventions.
 
 Also, if you need to modify and write bytecode, the routines here can
@@ -35,7 +37,7 @@
 additional categories for things that would be useful in such a
 bytecode optimizer.
 
-The programs here accept bytecodes from Python version 1.3 to 3.7 or
+The programs here accept bytecodes from Python version 1.3 to 3.8 or
 so. The code requires Python 2.4 or later and has been tested on
 Python running lots of Python versions.
 
@@ -46,15 +48,12 @@
 Installation
 ------------
 
-This uses setup.py, so it follows the standard Python routine:
+The standard Python routine:
 
 ::
 
-    pip install -r requirements.txt
+    pip install -e .
     pip install -r requirements-dev.txt
-    python setup.py install # may need sudo
-    # or if you have pyenv:
-    python setup.py develop
 
 A GNU makefile is also provided so :code:`make install` (possibly as root or
 sudo) will do the steps above.
@@ -113,8 +112,12 @@
 .. _trepan: https://pypi.python.org/pypi/trepan
 .. _debuggers: https://pypi.python.org/pypi/trepan3k
 .. _remake: http://bashdb.sf.net/remake
-.. |buildstatus| image:: https://travis-ci.org/rocky/python-xdis.svg
+.. |buildstatus| image:: 
https://travis-ci.org/rocky/python-xdis.svg?branch=master
                 :target: https://travis-ci.org/rocky/python-xdis
 .. |Supported Python Versions| image:: 
https://img.shields.io/pypi/pyversions/xdis.svg
 .. |Latest Version| image:: https://badge.fury.io/py/xdis.svg
                 :target: https://badge.fury.io/py/xdis
+.. |Pypi Installs| image:: https://pepy.tech/badge/xdis/month
+.. |packagestatus| image:: 
https://repology.org/badge/vertical-allrepos/python:xdis.svg
+                :target: https://repology.org/project/python:xdis/versions
+.. _dis: https://docs.python.org/3/library/dis.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/admin-tools/pyenv-newer-versions 
new/python-xdis-4.0.4/admin-tools/pyenv-newer-versions
--- old/python-xdis-4.0.3/admin-tools/pyenv-newer-versions      2019-07-25 
05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/admin-tools/pyenv-newer-versions      2019-10-02 
19:29:22.000000000 +0200
@@ -5,4 +5,4 @@
     echo "This script should be *sourced* rather than run directly through 
bash"
     exit 1
 fi
-export PYVERSIONS='3.5.7 3.6.9 3.3.7 2.6.9 2.7.16 3.4.8 3.7.4'
+export PYVERSIONS='3.6.9 3.7.4 2.6.9 3.3.7 2.7.16 3.2.6 3.4.10 3.5.7'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/test_unit/test_dis27.py 
new/python-xdis-4.0.4/test_unit/test_dis27.py
--- old/python-xdis-4.0.3/test_unit/test_dis27.py       2019-07-25 
05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/test_unit/test_dis27.py       2019-10-02 
19:29:22.000000000 +0200
@@ -33,7 +33,7 @@
     dis_f = """\
 %3d:           0 LOAD_GLOBAL               0 (print)
                3 LOAD_FAST                 0 (a)
-               6 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+               6 CALL_FUNCTION             1 (1 positional, 0 named)
                9 POP_TOP
 
 %3d:          10 LOAD_CONST                1 (1)
@@ -48,7 +48,7 @@
                6 LOAD_CONST                1 (1)
 
 %3d:           9 LOAD_CONST                2 (10)
-              12 CALL_FUNCTION             2 (2 positional, 0 keyword pair)
+              12 CALL_FUNCTION             2 (2 positional, 0 named)
               15 GET_ITER
          >>   16 FOR_ITER                  6 (to 25)
               19 STORE_FAST                0 (res)
@@ -69,7 +69,7 @@
                6 LOAD_CONST                1 (1)
 
 %3d:           9 LOAD_CONST                2 (10)
-              12 CALL_FUNCTION             2 (2 positional, 0 keyword pair)
+              12 CALL_FUNCTION             2 (2 positional, 0 named)
               15 GET_ITER
          >>   16 FOR_ITER                  6 (to 25)
               19 STORE_FAST                0 (res)
@@ -99,7 +99,7 @@
 
 %3d:    >>   31 LOAD_CONST                2 (1)
              34 BINARY_ADD
-             35 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+             35 CALL_FUNCTION             1 (1 positional, 0 named)
              38 RAISE_VARARGS             1
 
 %3d:    >>   41 LOAD_CONST                0 (None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/test_unit/test_dis33.py 
new/python-xdis-4.0.4/test_unit/test_dis33.py
--- old/python-xdis-4.0.3/test_unit/test_dis33.py       2019-07-25 
05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/test_unit/test_dis33.py       2019-10-02 
19:29:22.000000000 +0200
@@ -40,7 +40,7 @@
 dis_f = """\
 %3d:           0 LOAD_GLOBAL               0 (print)
                3 LOAD_FAST                 0 (a)
-               6 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+               6 CALL_FUNCTION             1 (1 positional, 0 named)
                9 POP_TOP
 
 %3d:          10 LOAD_CONST                1 (1)
@@ -53,7 +53,7 @@
 dis_f_co_code = """\
  37:           0 LOAD_GLOBAL               0 (print)
                3 LOAD_FAST                 0 (a)
-               6 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+               6 CALL_FUNCTION             1 (1 positional, 0 named)
                9 POP_TOP
 
  38:          10 LOAD_CONST                1 (1)
@@ -73,7 +73,7 @@
                6 LOAD_CONST                1 (1)
 
 %3d:           9 LOAD_CONST                2 (10)
-              12 CALL_FUNCTION             2 (2 positional, 0 keyword pair)
+              12 CALL_FUNCTION             2 (2 positional, 0 named)
               15 GET_ITER
          >>   16 FOR_ITER                  6 (to 25)
               19 STORE_FAST                0 (res)
@@ -102,11 +102,11 @@
              15 MAKE_FUNCTION             0 (0 positional, 0 name and default, 
0 annotations)
              18 LOAD_FAST                 0 (x)
              21 GET_ITER
-             22 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+             22 CALL_FUNCTION             1 (1 positional, 0 named)
 
 %4d:         25 LOAD_CONST                4 (1)
              28 BINARY_ADD
-             29 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+             29 CALL_FUNCTION             1 (1 positional, 0 named)
              32 RAISE_VARARGS             1
 
 %4d:    >>   35 LOAD_CONST                0 (None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/test_unit/test_dis34.py 
new/python-xdis-4.0.4/test_unit/test_dis34.py
--- old/python-xdis-4.0.3/test_unit/test_dis34.py       2019-07-25 
05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/test_unit/test_dis34.py       2019-10-02 
19:29:22.000000000 +0200
@@ -60,7 +60,7 @@
     dis_f = """\
 %3d:           0 LOAD_GLOBAL               0 (print)
                 3 LOAD_FAST                 0 (a)
-                6 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+                6 CALL_FUNCTION             1 (1 positional, 0 named)
                 9 POP_TOP
 
 %3d:           10 LOAD_CONST                1 (1)
@@ -73,7 +73,7 @@
     dis_f_co_code = """\
  57:           0 LOAD_GLOBAL               0 (print)
                 3 LOAD_FAST                 0 (a)
-                6 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+                6 CALL_FUNCTION             1 (1 positional, 0 named)
                 9 POP_TOP
 
  58:          10 LOAD_CONST                1 (1)
@@ -94,7 +94,7 @@
              6 LOAD_CONST                1 (1)
 
 %4d:         9 LOAD_CONST                2 (10)
-            12 CALL_FUNCTION             2 (2 positional, 0 keyword pair)
+            12 CALL_FUNCTION             2 (2 positional, 0 named)
             15 GET_ITER
        >>   16 FOR_ITER                  6 (to 25)
             19 STORE_FAST                0 (res)
@@ -123,11 +123,11 @@
             15 MAKE_FUNCTION             0 (0 positional, 0 name and default, 
0 annotations)
             18 LOAD_FAST                 0 (x)
             21 GET_ITER
-            22 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+            22 CALL_FUNCTION             1 (1 positional, 0 named)
 
 %4d:        25 LOAD_CONST                4 (1)
             28 BINARY_ADD
-            29 CALL_FUNCTION             1 (1 positional, 0 keyword pair)
+            29 CALL_FUNCTION             1 (1 positional, 0 named)
             32 RAISE_VARARGS             1
 
 %4d:   >>   35 LOAD_CONST                0 (None)
@@ -612,7 +612,7 @@
       Instruction(opname='BUILD_LIST', opcode=103, optype='vargs', 
inst_size=3, arg=0, argval=0, argrepr='', has_arg=True, offset=42, 
starts_line=None, is_jump_target=False),
       Instruction(opname='BUILD_MAP', opcode=105, optype='vargs', inst_size=3, 
arg=0, argval=0, argrepr='', has_arg=True, offset=45, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=7, argval='Hello world!', argrepr="'Hello world!'", 
has_arg=True, offset=48, starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=7, argval=7, argrepr='7 positional, 0 keyword pair', 
has_arg=True, offset=51, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=7, argval=7, argrepr='7 positional, 0 named', has_arg=True, 
offset=51, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=54, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=2, argval='f', argrepr='f', has_arg=True, offset=55, starts_line=8, 
is_jump_target=False),
       Instruction(opname='RETURN_VALUE', opcode=83, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=58, starts_line=None, 
is_jump_target=False),
@@ -635,7 +635,7 @@
       Instruction(opname='LOAD_DEREF', opcode=136, optype='free', inst_size=3, 
arg=3, argval='b', argrepr='b', has_arg=True, offset=39, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_DEREF', opcode=136, optype='free', inst_size=3, 
arg=0, argval='c', argrepr='c', has_arg=True, offset=42, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_DEREF', opcode=136, optype='free', inst_size=3, 
arg=1, argval='d', argrepr='d', has_arg=True, offset=45, starts_line=None, 
is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=4, argval=4, argrepr='4 positional, 0 keyword pair', 
has_arg=True, offset=48, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=4, argval=4, argrepr='4 positional, 0 named', has_arg=True, 
offset=48, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=51, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=2, argval='inner', argrepr='inner', has_arg=True, offset=52, starts_line=6, 
is_jump_target=False),
       Instruction(opname='RETURN_VALUE', opcode=83, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=55, starts_line=None, 
is_jump_target=False),
@@ -649,7 +649,7 @@
       Instruction(opname='LOAD_DEREF', opcode=136, optype='free', inst_size=3, 
arg=3, argval='d', argrepr='d', has_arg=True, offset=12, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='e', argrepr='e', has_arg=True, offset=15, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=1, argval='f', argrepr='f', has_arg=True, offset=18, starts_line=None, 
is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=6, argval=6, argrepr='6 positional, 0 keyword pair', 
has_arg=True, offset=21, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=6, argval=6, argrepr='6 positional, 0 named', has_arg=True, 
offset=21, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=24, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=0, argval=None, argrepr='None', has_arg=True, offset=25, 
starts_line=None, is_jump_target=False),
       Instruction(opname='RETURN_VALUE', opcode=83, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=28, starts_line=None, 
is_jump_target=False),
@@ -659,13 +659,13 @@
       Instruction(opname='SETUP_LOOP', opcode=120, optype='jrel', inst_size=3, 
arg=74, argval=77, argrepr='to 77', has_arg=True, offset=0, starts_line=3, 
is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=0, argval='range', argrepr='range', has_arg=True, offset=3, 
starts_line=None, is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=1, argval=10, argrepr='10', has_arg=True, offset=6, 
starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=9, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=9, starts_line=None, is_jump_target=False),
       Instruction(opname='GET_ITER', opcode=68, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=12, starts_line=None, 
is_jump_target=False),
       Instruction(opname='FOR_ITER', opcode=93, optype='jrel', inst_size=3, 
arg=50, argval=66, argrepr='to 66', has_arg=True, offset=13, starts_line=None, 
is_jump_target=True),
       Instruction(opname='STORE_FAST', opcode=125, optype='local', 
inst_size=3, arg=0, argval='i', argrepr='i', has_arg=True, offset=16, 
starts_line=None, is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=19, 
starts_line=4, is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='i', argrepr='i', has_arg=True, offset=22, starts_line=None, 
is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=25, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=25, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=28, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='i', argrepr='i', has_arg=True, offset=29, starts_line=5, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=2, argval=4, argrepr='4', has_arg=True, offset=32, 
starts_line=None, is_jump_target=False),
@@ -683,14 +683,14 @@
       Instruction(opname='POP_BLOCK', opcode=87, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=66, starts_line=None, 
is_jump_target=True),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=67, 
starts_line=10, is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=4, argval='I can haz else clause?', argrepr="'I can haz else 
clause?'", has_arg=True, offset=70, starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=73, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=73, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=76, starts_line=None, 
is_jump_target=False),
       Instruction(opname='SETUP_LOOP', opcode=120, optype='jrel', inst_size=3, 
arg=74, argval=154, argrepr='to 154', has_arg=True, offset=77, starts_line=11, 
is_jump_target=True),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='i', argrepr='i', has_arg=True, offset=80, starts_line=None, 
is_jump_target=True),
       Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, optype='jabs', 
inst_size=3, arg=143, argval=143, argrepr='to 143', has_arg=True, offset=83, 
starts_line=None, is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=86, 
starts_line=12, is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='i', argrepr='i', has_arg=True, offset=89, starts_line=None, 
is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=92, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=92, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=95, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_FAST', opcode=124, optype='local', inst_size=3, 
arg=0, argval='i', argrepr='i', has_arg=True, offset=96, starts_line=13, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=5, argval=1, argrepr='1', has_arg=True, offset=99, 
starts_line=None, is_jump_target=False),
@@ -712,7 +712,7 @@
       Instruction(opname='POP_BLOCK', opcode=87, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=143, starts_line=None, 
is_jump_target=True),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=144, 
starts_line=19, is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=6, argval='Who let lolcatz into this test suite?', 
argrepr="'Who let lolcatz into this test suite?'", has_arg=True, offset=147, 
starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=150, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=150, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=153, starts_line=None, 
is_jump_target=False),
       Instruction(opname='SETUP_FINALLY', opcode=122, optype='jrel', 
inst_size=3, arg=72, argval=229, argrepr='to 229', has_arg=True, offset=154, 
starts_line=20, is_jump_target=True),
       Instruction(opname='SETUP_EXCEPT', opcode=121, optype='jrel', 
inst_size=3, arg=12, argval=172, argrepr='to 172', has_arg=True, offset=157, 
starts_line=None, is_jump_target=False),
@@ -731,7 +731,7 @@
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=184, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=185, 
starts_line=23, is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=8, argval='Here we go, here we go, here we go...', 
argrepr="'Here we go, here we go, here we go...'", has_arg=True, offset=188, 
starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=191, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=191, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=194, starts_line=None, 
is_jump_target=False),
       Instruction(opname='POP_EXCEPT', opcode=89, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=195, starts_line=None, 
is_jump_target=False),
       Instruction(opname='JUMP_FORWARD', opcode=110, optype='jrel', 
inst_size=3, arg=26, argval=225, argrepr='to 225', has_arg=True, offset=196, 
starts_line=None, is_jump_target=False),
@@ -741,7 +741,7 @@
       Instruction(opname='STORE_FAST', opcode=125, optype='local', 
inst_size=3, arg=1, argval='dodgy', argrepr='dodgy', has_arg=True, offset=206, 
starts_line=None, is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=209, 
starts_line=26, is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=9, argval='Never reach this', argrepr="'Never reach this'", 
has_arg=True, offset=212, starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=215, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=215, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=218, starts_line=None, 
is_jump_target=False),
       Instruction(opname='POP_BLOCK', opcode=87, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=219, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=0, argval=None, argrepr='None', has_arg=True, offset=220, 
starts_line=None, is_jump_target=False),
@@ -751,7 +751,7 @@
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=0, argval=None, argrepr='None', has_arg=True, offset=226, 
starts_line=None, is_jump_target=False),
       Instruction(opname='LOAD_GLOBAL', opcode=116, optype='name', 
inst_size=3, arg=1, argval='print', argrepr='print', has_arg=True, offset=229, 
starts_line=28, is_jump_target=True),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re 
done"', has_arg=True, offset=232, starts_line=None, is_jump_target=False),
-      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', 
has_arg=True, offset=235, starts_line=None, is_jump_target=False),
+      Instruction(opname='CALL_FUNCTION', opcode=131, optype='nargs', 
inst_size=3, arg=1, argval=1, argrepr='1 positional, 0 named', has_arg=True, 
offset=235, starts_line=None, is_jump_target=False),
       Instruction(opname='POP_TOP', opcode=1, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=238, starts_line=None, 
is_jump_target=False),
       Instruction(opname='END_FINALLY', opcode=88, optype=None, inst_size=1, 
arg=None, argval=None, argrepr='', has_arg=False, offset=239, starts_line=None, 
is_jump_target=False),
       Instruction(opname='LOAD_CONST', opcode=100, optype='const', 
inst_size=3, arg=0, argval=None, argrepr='None', has_arg=True, offset=240, 
starts_line=None, is_jump_target=False),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/dropbox/decrypt25.py 
new/python-xdis-4.0.4/xdis/dropbox/decrypt25.py
--- old/python-xdis-4.0.3/xdis/dropbox/decrypt25.py     2019-07-25 
05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/xdis/dropbox/decrypt25.py     2019-10-02 
19:29:22.000000000 +0200
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # Copyright Hagen Fritsch, 2012, License: GPL-2.0
 # Adaption and generalization for xdis use by Rocky Bernstein
+# Copyright 2019
 
 # Dropbox Python bytecode decryption tool for Dropbox versions of 1.1x
 # (and possibly earlier) which uses Python bytecode 2.5.
@@ -14,43 +15,50 @@
 import xdis.marsh as xmarshal
 from xdis.code import Code2Compat
 
+
 def rng(a, b):
-    b = ((b << 13) ^ b) & 0xffffffff
-    c = (b ^ (b >> 17))
-    c = (c ^ (c << 5))
-    return (a * 69069 + c + 0x6611CB3B) & 0xffffffff
+    b = ((b << 13) ^ b) & 0xFFFFFFFF
+    c = b ^ (b >> 17)
+    c = c ^ (c << 5)
+    return (a * 69069 + c + 0x6611CB3B) & 0xFFFFFFFF
+
 
 # this is replaced by mersenne in newer versions
 def get_keys(a, b):
-    ka = rng(a,b)
+    ka = rng(a, b)
     kb = rng(ka, a)
     kc = rng(kb, ka)
     kd = rng(kc, kb)
     ke = rng(kd, kc)
-    return (kb,kc,kd,ke)
+    return (kb, kc, kd, ke)
+
 
 def MX(z, y, sum, key, p, e):
-    return (((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4)) ^ ((sum ^ y) + (key[(p & 
3)^e] ^ z)))
+    return ((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4)) ^ (
+        (sum ^ y) + (key[(p & 3) ^ e] ^ z)
+    )
+
 
 def tea_decipher(v, key):
     """
     Tiny Decryption Algorithm decription (TEA)
     See https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm
     """
-    DELTA = 0x9e3779b9
+    DELTA = 0x9E3779B9
     n = len(v)
-    rounds = 6 + 52//n
-    sum = (rounds*DELTA)
+    rounds = 6 + 52 // n
+    sum = rounds * DELTA
     y = v[0]
     while sum != 0:
         e = (sum >> 2) & 3
-        for p in range(n-1, -1, -1):
+        for p in range(n - 1, -1, -1):
             z = v[(n + p - 1) % n]
-            v[p] = (v[p] - MX(z, y, sum, key, p, e)) & 0xffffffff
+            v[p] = (v[p] - MX(z, y, sum, key, p, e)) & 0xFFFFFFFF
             y = v[p]
         sum -= DELTA
     return v
 
+
 def load_code(self):
     """
     Returns a Python code object like xdis.unmarshal.load_code(),
@@ -64,67 +72,164 @@
     a = self.load_int()
     b = self.load_int()
     key = get_keys(a, b)
-    padsize = (b + 15) & ~0xf
-    intsize = padsize/4
-    data = self.bufstr[self.bufpos:self.bufpos+padsize]
+    padsize = (b + 15) & ~0xF
+    intsize = padsize / 4
+    data = self.bufstr[self.bufpos : self.bufpos + padsize]
     # print("%d: %d (%d=%d)" % (self.bufpos, b, padsize, len(data)))
-    data = list(struct.unpack('<%dL' % intsize, data))
+    data = list(struct.unpack("<%dL" % intsize, data))
     tea_decipher(data, key)
     self.bufpos += padsize
-    obj = xmarshal._FastUnmarshaller(struct.pack('<%dL' % intsize, *data))
+    obj = xmarshal._FastUnmarshaller(struct.pack("<%dL" % intsize, *data))
     code = obj.load_code()
     co_code = patch(code.co_code)
     if PYTHON3:
-        return Code2Compat(code.co_argcount, code.co_nlocals, 
code.co_stacksize,
-                           code.co_flags,
-                           co_code, code.co_consts, code.co_names, 
code.co_varnames,
-                           code.co_filename, code.co_name, code.co_firstlineno,
-                           code.co_lnotab, code.co_freevars, code.co_cellvars)
+        return Code2Compat(
+            code.co_argcount,
+            code.co_nlocals,
+            code.co_stacksize,
+            code.co_flags,
+            co_code,
+            code.co_consts,
+            code.co_names,
+            code.co_varnames,
+            code.co_filename,
+            code.co_name,
+            code.co_firstlineno,
+            code.co_lnotab,
+            code.co_freevars,
+            code.co_cellvars,
+        )
     else:
-        return types.CodeType(code.co_argcount, code.co_nlocals, 
code.co_stacksize, code.co_flags,
-                              co_code, code.co_consts, code.co_names, 
code.co_varnames,
-                              code.co_filename, code.co_name, 
code.co_firstlineno,
-                              code.co_lnotab, code.co_freevars, 
code.co_cellvars)
+        return types.CodeType(
+            code.co_argcount,
+            code.co_nlocals,
+            code.co_stacksize,
+            code.co_flags,
+            co_code,
+            code.co_consts,
+            code.co_names,
+            code.co_varnames,
+            code.co_filename,
+            code.co_name,
+            code.co_firstlineno,
+            code.co_lnotab,
+            code.co_freevars,
+            code.co_cellvars,
+        )
+
 
 try:
     a = bytearray()
 except:
+
     class bytearray(object):
         def __init__(self, s):
             self.l = map(ord, s)
+
         def __setitem__(self, idx, val):
             self.l[idx] = val
+
         def __getitem__(self, idx):
             return self.l[idx]
+
         def __str__(self):
-            return ''.join(map(chr, self.l))
+            return "".join(map(chr, self.l))
+
         def __len__(self):
             return len(self.l)
 
+
 # Automatically generated opcode substitution table for v1
 # A different dropbox table for v.2 table is at
 #   https://github.com/kholia/dedrop/blob/master/src/dedrop-v2/dedrop-v2.py
 # They are similar but not the same.
-table = {  0:   0,   1:  87,  2:  66,  4:  25,  6:  55,  7:  62,
-           9:  71,  10:  79, 12:  21, 13:   4, 14:  72, 15:   1, 16: 30,
-          17:  31,  18:  32, 19:  33, 22:  63,
-          26:  86,  29:  56, 31:  60,
-          33:  73,  34:  15, 35:  74, 36:  20, 38:  12, 39: 68, 40:  80,
-          41:  22,  42:  89, 43:  26, 50:  64, 51:  82, 52:  23, 54: 11,
-          55:  24,
-          56:  84,  59:   2, 60:   3, 61:  40, 62:  41, 63:  42, 64: 43,
-          65:  85,  66:  83, 67:  88, 68:  18, 69:  61, 70: 116, 71: 126,
-          72: 100,
-          73: 110,  74: 120, 75: 122, 76: 132,
-          77: 133,  78: 104, 79: 101, 80: 102,
-          81:  93,  82: 125, 83: 111, 84:  95, 85: 134, 86: 105,
-          88: 107,  89: 108, 90: 112, 91: 130, 92: 124,
-          93:  92,  94:  91, 95:  90,
-          97: 135,  99: 136, 100: 137, 101: 106,
-         102: 131, 103: 113, 104:  99,
-         105:  97, 106: 121, 107: 103, 111: 140,
-         112: 141,
-         113: 142}
+table = {
+    0: 0,
+    1: 87,
+    2: 66,
+    4: 25,
+    6: 55,
+    7: 62,
+    9: 71,
+    10: 79,
+    12: 21,
+    13: 4,
+    14: 72,
+    15: 1,
+    16: 30,
+    17: 31,
+    18: 32,
+    19: 33,
+    22: 63,
+    26: 86,
+    29: 56,
+    31: 60,
+    33: 73,
+    34: 15,
+    35: 74,
+    36: 20,
+    38: 12,
+    39: 68,
+    40: 80,
+    41: 22,
+    42: 89,
+    43: 26,
+    50: 64,
+    51: 82,
+    52: 23,
+    54: 11,
+    55: 24,
+    56: 84,
+    59: 2,
+    60: 3,
+    61: 40,
+    62: 41,
+    63: 42,
+    64: 43,
+    65: 85,
+    66: 83,
+    67: 88,
+    68: 18,
+    69: 61,
+    70: 116,
+    71: 126,
+    72: 100,
+    73: 110,
+    74: 120,
+    75: 122,
+    76: 132,
+    77: 133,
+    78: 104,
+    79: 101,
+    80: 102,
+    81: 93,
+    82: 125,
+    83: 111,
+    84: 95,
+    85: 134,
+    86: 105,
+    88: 107,
+    89: 108,
+    90: 112,
+    91: 130,
+    92: 124,
+    93: 92,
+    94: 91,
+    95: 90,
+    97: 135,
+    99: 136,
+    100: 137,
+    101: 106,
+    102: 131,
+    103: 113,
+    104: 99,
+    105: 97,
+    106: 121,
+    107: 103,
+    111: 140,
+    112: 141,
+    113: 142,
+}
 
 # manual mapping of the rest
 table[37] = 81
@@ -146,6 +251,7 @@
 
 misses = {}
 
+
 def patch(code):
     code = bytearray(code)
     i = 0
@@ -155,14 +261,18 @@
         if not op in table:
             print("missing opcode %d. code: " % op, repr(str(code)))
             misses[op] = misses.get(op, 0) + 1
-        code[i] = table.get(op,op)
+        code[i] = table.get(op, op)
         i += 1
-        if table.get(op,op) >= 90: # opcode.HAVE_ARGUMENT:
+        if table.get(op, op) >= 90:  # opcode.HAVE_ARGUMENT:
             i += 2
     return bytes(code) if PYTHON3 else str(code)
 
-try: from __pypy__ import builtinify
-except ImportError: builtinify = lambda f: f
+
+try:
+    from __pypy__ import builtinify
+except ImportError:
+    builtinify = lambda f: f
+
 
 @builtinify
 def loads(s):
@@ -174,19 +284,23 @@
     um.dispatch[xmarshal.TYPE_CODE] = load_code
     return um.load()
 
-def fix_dropbox_pyc(fp, fixed_pyc='/tmp/test.pyc'):
-    source_size = struct.unpack("I", fp.read(4))[0] # size mod 2**32
+
+def fix_dropbox_pyc(fp, fixed_pyc="/tmp/test.pyc"):
+    source_size = struct.unpack("I", fp.read(4))[0]  # size mod 2**32
     ts = fp.read(4)
     timestamp = struct.unpack("I", ts)[0]
     b = fp.read()
     co = loads(b)
     return 2.5, timestamp, 62131, co, False, source_size
 
+
 def fix_dir(path):
     import os
+
     for root, dirs, files in os.walk(path):
         for name in files:
-            if not name.endswith('pyc'): continue
+            if not name.endswith("pyc"):
+                continue
             name = os.path.join(root, name)
             print("fixing", name)
             data = open(name).read()
@@ -197,11 +311,12 @@
                 # print repr(data[8:])
                 continue
             # fix the version indicator and save
-            open(name, "w").write(
-                "\xb3\xf2\r\n" + data[4:8] + xmarshal.dumps(c))
+            open(name, "w").write("\xb3\xf2\r\n" + data[4:8] + 
xmarshal.dumps(c))
 
-if __name__ == '__main__':
+
+if __name__ == "__main__":
     import os, sys
+
     if sys.argv != 2:
         print("Usage: %s python-file" % os.path.basename(sys.argv[0]))
         sys.exit(1)
@@ -212,6 +327,7 @@
 # the opcode substitution table
 if 0:
     import marshal
+
     def fill(c, d):
         if len(c.co_code) != len(d.co_code):
             print("len mismatch", c, d)
@@ -224,19 +340,21 @@
             pass
         return
 
-    for root, dirs, files in os.walk('library'):
+    for root, dirs, files in os.walk("library"):
         for name in files:
             name = os.path.join(root, name)
-            if not name.endswith('pyc'): continue
-            f2 = os.path.join('/tmp/python-defaults-2.7.2/Python-2.5.4/Lib', 
name[8:])
-            if not os.path.exists(f2): continue
+            if not name.endswith("pyc"):
+                continue
+            f2 = os.path.join("/tmp/python-defaults-2.7.2/Python-2.5.4/Lib", 
name[8:])
+            if not os.path.exists(f2):
+                continue
             print("loading", name)
             try:
                 c = xmarshal.loads(open(name).read()[8:])
             except:
                 print("error", name)
                 continue
-            d =  marshal.loads(open(f2).read()[8:])
+            d = marshal.loads(open(f2).read()[8:])
             fill(c, d)
             codes_c = filter(lambda x: type(x) == type(c), c.co_consts)
             codes_d = filter(lambda x: type(x) == type(c), d.co_consts)
@@ -250,22 +368,26 @@
         k.sort()
         table = {}
         for i in k:
-            print("%c (%02x %s) =>" %
-                  (ord(i), ord(i), bin(ord(i))), end='')
+            print("%c (%02x %s) =>" % (ord(i), ord(i), bin(ord(i))), end="")
             for j, count in m[i].iteritems():
-                if j == i: continue
+                if j == i:
+                    continue
                 table[ord(i)] = ord(j)
-                print("\t%c (%02x %s) [%d]" %
-                      (ord(j), ord(j), bin(ord(j)), count), end="")
+                print(
+                    "\t%c (%02x %s) [%d]" % (ord(j), ord(j), bin(ord(j)), 
count), end=""
+                )
                 # print("%c (%02x %s) => %c (%02x %s)\t%d\t%s" % 
(ord(i),ord(i),bin(ord(i)),ord(j),ord(j),bin(ord(j)),ord(j)-ord(i),bin(ord(i)^ord(j)|0x100).replace('0',
 ' ')))
             print()
         return table
 
     import re
-    re.compile('offset loc_(\w+)').findall('dd offset loc_8096DC4, offset 
loc_8096963, offset loc_8095462')
+
+    re.compile(r"offset loc_(\w+)").findall(
+        "dd offset loc_8096DC4, offset loc_8096963, offset loc_8095462"
+    )
 
     def load(name):
-        a = re.compile('offset loc_(\w+)').findall(open(name).read())
+        a = re.compile(r"offset loc_(\w+)").findall(open(name).read())
         a = [int(i, 16) for i in a]
         c = a[:]
         c.sort()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/load.py 
new/python-xdis-4.0.4/xdis/load.py
--- old/python-xdis-4.0.3/xdis/load.py  2019-07-25 05:06:55.000000000 +0200
+++ new/python-xdis-4.0.4/xdis/load.py  2019-10-02 19:29:22.000000000 +0200
@@ -13,7 +13,7 @@
 #  along with this program; if not, write to the Free Software
 #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA.
 
-import imp, marshal, py_compile, sys, tempfile, time
+import marshal, py_compile, sys, tempfile, time
 from struct import unpack, pack
 import os.path as osp
 
@@ -174,7 +174,12 @@
         try:
             # print version
             ts = fp.read(4)
-            my_magic_int = magics.magic2int(imp.get_magic())
+            try:
+                import importlib
+                my_magic_int = magics.magic2int(importlib.util.MAGIC_NUMBER)
+            except:
+                import imp
+                my_magic_int = magics.magic2int(imp.get_magic())
             magic_int = magics.magic2int(magic)
 
             if magic_int == 3393:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/magics.py 
new/python-xdis-4.0.4/xdis/magics.py
--- old/python-xdis-4.0.3/xdis/magics.py        2019-07-25 05:06:55.000000000 
+0200
+++ new/python-xdis-4.0.4/xdis/magics.py        2019-10-02 19:29:22.000000000 
+0200
@@ -249,12 +249,14 @@
 add_magic_from_int(3379, "3.6rc1")  # more thorough __class__ validation #23722
 add_magic_from_int(3390, "3.7.0alpha0")
 add_magic_from_int(3391, "3.7.0alpha3")
-add_magic_from_int(3392, "3.7.0beta2")  # PEP 552 - Additional word in header 
and possibly no timestamp
+add_magic_from_int(
+    3392, "3.7.0beta2"
+)  # PEP 552 - Additional word in header and possibly no timestamp
 add_magic_from_int(3393, "3.7.0beta3")
 add_magic_from_int(3394, "3.7.0")
 add_magic_from_int(3401, "3.8.0a3+")
-add_magic_from_int(3401, "3.8.0a3+")
 add_magic_from_int(3412, "3.8.0beta2")
+add_magic_from_int(3413, "3.8.0rc1+")
 
 # Weird ones
 # WTF? Python 3.2.5 - PyPy 2.3.4  this doesn't follow the rule below
@@ -308,8 +310,7 @@
     "3.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7rc1 3.3.7", "3.3a4"
 )
 add_canonic_versions(
-    "3.4 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.4.10",
-    "3.4rc2",
+    "3.4 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.4.10", 
"3.4rc2"
 )
 add_canonic_versions("3.5.0 3.5.1", "3.5")
 add_canonic_versions("3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7", "3.5.2")
@@ -326,7 +327,7 @@
 add_canonic_versions("3.7.0alpha3", "3.7.0alpha3")
 add_canonic_versions("3.7 3.7.0beta5 3.7.1 3.7.2 3.7.3 3.7.4", "3.7.0")
 add_canonic_versions("3.8.0alpha0 3.8.0alpha3 3.8.0a0", "3.8.0a3+")
-add_canonic_versions("3.8.0 3.8", "3.8.0beta2")
+add_canonic_versions("3.8.0 3.8 3.8.0candidate1", "3.8.0rc1+")
 
 # The canonic version for a canonic version is itself
 for v in versions.values():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/op_imports.py 
new/python-xdis-4.0.4/xdis/op_imports.py
--- old/python-xdis-4.0.3/xdis/op_imports.py    2019-07-25 05:06:55.000000000 
+0200
+++ new/python-xdis-4.0.4/xdis/op_imports.py    2019-10-02 19:29:22.000000000 
+0200
@@ -103,6 +103,8 @@
     '3.8.0a3+': opcode_38,
     '3.8.0alpha3': opcode_38,
     '3.8.0beta2': opcode_38,
+    '3.8.0rc1+': opcode_38,
+    '3.8.0candidate1': opcode_38,
     '3.8' : opcode_38,
 
     '2.6pypy':  opcode_26pypy,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/unmarshal.py 
new/python-xdis-4.0.4/xdis/unmarshal.py
--- old/python-xdis-4.0.3/xdis/unmarshal.py     2019-07-25 05:06:55.000000000 
+0200
+++ new/python-xdis-4.0.4/xdis/unmarshal.py     2019-10-02 19:29:22.000000000 
+0200
@@ -186,7 +186,7 @@
                              co_code, co_consts, co_names, co_varnames, 
co_filename, co_name,
                              co_firstlineno, co_lnotab, co_freevars, 
co_cellvars)
             else:
-                if PYTHON_MAGIC_INT in (3412,):
+                if PYTHON_MAGIC_INT in (3412, 3413):
                     if co_posonlyargcount is not None:
                         # Python3.8 to Python3.8: Ok to use native Python3.8's 
code type
                         code = Code(co_argcount, co_posonlyargcount, 
kwonlyargcount, co_nlocals, co_stacksize, co_flags,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-xdis-4.0.3/xdis/version.py 
new/python-xdis-4.0.4/xdis/version.py
--- old/python-xdis-4.0.3/xdis/version.py       2019-07-25 05:06:55.000000000 
+0200
+++ new/python-xdis-4.0.4/xdis/version.py       2019-10-02 19:29:22.000000000 
+0200
@@ -1,3 +1,3 @@
 # This file is suitable for sourcing inside bash as
 # well as importing into Python
-VERSION='4.0.3'
+VERSION='4.0.4'


Reply via email to