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
+
+- 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'