Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-linetable for openSUSE:Factory checked in at 2026-10-26 10:00:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-linetable (Old) and /work/SRC/openSUSE:Factory/.python-linetable.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-linetable" Mon Oct 26 10:00:57 2026 rev:3 rq:1392462 version:0.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-linetable/python-linetable.changes 2025-06-02 22:00:44.629677173 +0200 +++ /work/SRC/openSUSE:Factory/.python-linetable.new.2252680/python-linetable.changes 2026-10-26 10:02:21.061623973 +0100 @@ -1,0 +2,6 @@ +Sun Oct 25 15:29:26 UTC 2026 - Dirk Müller <[email protected]> + +- update to 0.0.4: + * add license and add more tests + +------------------------------------------------------------------- Old: ---- linetable-0.0.3.tar.gz New: ---- linetable-0.0.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-linetable.spec ++++++ --- /var/tmp/diff_new_pack.dgfeab/_old 2026-10-26 10:02:22.281675138 +0100 +++ /var/tmp/diff_new_pack.dgfeab/_new 2026-10-26 10:02:22.288675431 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-linetable # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: python-linetable -Version: 0.0.3 +Version: 0.0.4 Release: 0 Summary: library to manage Python Locations Table (co_linetable) License: MIT @@ -46,6 +46,7 @@ %files %{python_files} %doc README.rst +%license LICENSE %{python_sitelib}/linetable %{python_sitelib}/linetable-%{version}*-info ++++++ linetable-0.0.3.tar.gz -> linetable-0.0.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/LICENSE new/linetable-0.0.4/LICENSE --- old/linetable-0.0.3/LICENSE 1970-01-01 01:00:00.000000000 +0100 +++ new/linetable-0.0.4/LICENSE 2026-10-08 12:03:39.984408100 +0200 @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Alessandro Molina + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/PKG-INFO new/linetable-0.0.4/PKG-INFO --- old/linetable-0.0.3/PKG-INFO 2023-03-07 11:52:56.026441000 +0100 +++ new/linetable-0.0.4/PKG-INFO 2026-10-08 12:03:48.763447500 +0200 @@ -1,89 +1,99 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.4 Name: linetable -Version: 0.0.3 +Version: 0.0.4 Summary: library to manage Python Locations Table (co_linetable) -Home-page: https://github.com/amol-/linetable -Author: Alessandro Molina -Author-email: [email protected] +Author-email: Alessandro Molina <[email protected]> License: MIT -Description: About linetable - --------------- - - .. image:: https://github.com/amol-/linetable/actions/workflows/run-tests.yml/badge.svg - :target: https://github.com/amol-/linetable/actions/workflows/run-tests.yml - - .. image:: https://coveralls.io/repos/amol-/linetable/badge.svg - :target: https://coveralls.io/r/amol-/linetable - - .. image:: https://img.shields.io/pypi/v/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - .. image:: https://img.shields.io/pypi/pyversions/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - .. image:: https://img.shields.io/pypi/l/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - linetable is a library parse and generate co_linetable attributes in Python code objects. - - Based on https://github.com/python/cpython/blob/main/Objects/locations.md - - Installing - ---------- - - linetable can be installed from pypi:: - - pip install linetable - - should just work for most of the users - - Usage - ----- - - Existing linetable can be parsed using ``linetable.parse_linetable``:: - - >>> def testfunc(): - ... x = 3 - ... y = x + 1 - ... return y - - >>> list(linetable.parse_linetable(testfunc.__code__.co_linetable)) - [ - (1, 1, 1, 0, 0), - (1, 2, 2, 6, 7), - (1, 2, 2, 2, 3), - (1, 3, 3, 6, 7), - (1, 3, 3, 10, 11), - (2, 3, 3, 6, 11), - (1, 3, 3, 2, 3), - (1, 4, 4, 9, 10), - (1, 4, 4, 2, 10), - ] - - If you prefer the output in the format of ``dis.Positions`` objects, - you can create them from the yielded values:: - - >>> [dis.Positions(*e[1:]) for e in linetable.parse_linetable(testfunc.__code__.co_linetable)] - [Positions(lineno=1, end_lineno=1, col_offset=0, end_col_offset=0), Positions(lineno=2, end_lineno=2, col_offset=8, end_col_offset=9), Positions(lineno=2, end_lineno=2, col_offset=4, end_col_offset=5), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=9), Positions(lineno=3, end_lineno=3, col_offset=12, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=4, end_col_offset=5), Positions(lineno=4, end_lineno=4, col_offset=11, end_col_offset=12), Positions(lineno=4, end_lineno=4, col_offset=4, end_col_offset=12)] - - If you have the linetable, you can generate back the binary encoded version - using ``linetable.generate_linetable``:: - - >>> lt = [ - ... (1, 1, 1, 0, 0), - ... (1, 2, 2, 6, 7), - ... (1, 2, 2, 2, 3), - ... (1, 3, 3, 6, 7), - ... (1, 3, 3, 10, 11), - ... (2, 3, 3, 6, 11), - ... (1, 3, 3, 2, 3), - ... (1, 4, 4, 9, 10), - ... (1, 4, 4, 2, 10), - ... ] - >>> linetable.generate_linetable(lt) - b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" - -Platform: UNKNOWN +Project-URL: Homepage, https://github.com/amol-/linetable +Project-URL: Source, https://github.com/amol-/linetable +Keywords: linetable,python,bytecode Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE +Dynamic: license-file + +About linetable +--------------- + +.. image:: https://github.com/amol-/linetable/actions/workflows/run-tests.yml/badge.svg + :target: https://github.com/amol-/linetable/actions/workflows/run-tests.yml + +.. image:: https://coveralls.io/repos/amol-/linetable/badge.svg + :target: https://coveralls.io/r/amol-/linetable + +.. image:: https://img.shields.io/pypi/v/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +.. image:: https://img.shields.io/pypi/pyversions/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +.. image:: https://img.shields.io/pypi/l/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +linetable is a library parse and generate co_linetable attributes in Python code objects. + +Based on https://github.com/python/cpython/blob/main/Objects/locations.md + +Installing +---------- + +linetable can be installed from pypi:: + + pip install linetable + +should just work for most of the users + +Usage +----- + +Existing linetable can be parsed using ``linetable.parse_linetable``:: + + >>> def testfunc(): + ... x = 3 + ... y = x + 1 + ... return y + + >>> list(linetable.parse_linetable(testfunc.__code__.co_linetable)) + [ + (1, 1, 1, 0, 0), + (1, 2, 2, 6, 7), + (1, 2, 2, 2, 3), + (1, 3, 3, 6, 7), + (1, 3, 3, 10, 11), + (2, 3, 3, 6, 11), + (1, 3, 3, 2, 3), + (1, 4, 4, 9, 10), + (1, 4, 4, 2, 10), + ] + +If you prefer the output in the format of ``dis.Positions`` objects, +you can create them from the yielded values:: + + >>> [dis.Positions(*e[1:]) for e in linetable.parse_linetable(testfunc.__code__.co_linetable)] + [Positions(lineno=1, end_lineno=1, col_offset=0, end_col_offset=0), Positions(lineno=2, end_lineno=2, col_offset=8, end_col_offset=9), Positions(lineno=2, end_lineno=2, col_offset=4, end_col_offset=5), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=9), Positions(lineno=3, end_lineno=3, col_offset=12, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=4, end_col_offset=5), Positions(lineno=4, end_lineno=4, col_offset=11, end_col_offset=12), Positions(lineno=4, end_lineno=4, col_offset=4, end_col_offset=12)] + +If you have the linetable, you can generate back the binary encoded version +using ``linetable.generate_linetable``:: + + >>> lt = [ + ... (1, 1, 1, 0, 0), + ... (1, 2, 2, 6, 7), + ... (1, 2, 2, 2, 3), + ... (1, 3, 3, 6, 7), + ... (1, 3, 3, 10, 11), + ... (2, 3, 3, 6, 11), + ... (1, 3, 3, 2, 3), + ... (1, 4, 4, 9, 10), + ... (1, 4, 4, 2, 10), + ... ] + >>> linetable.generate_linetable(lt) + b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/linetable.egg-info/PKG-INFO new/linetable-0.0.4/linetable.egg-info/PKG-INFO --- old/linetable-0.0.3/linetable.egg-info/PKG-INFO 2023-03-07 11:52:55.000000000 +0100 +++ new/linetable-0.0.4/linetable.egg-info/PKG-INFO 2026-10-08 12:03:48.754469000 +0200 @@ -1,89 +1,99 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.4 Name: linetable -Version: 0.0.3 +Version: 0.0.4 Summary: library to manage Python Locations Table (co_linetable) -Home-page: https://github.com/amol-/linetable -Author: Alessandro Molina -Author-email: [email protected] +Author-email: Alessandro Molina <[email protected]> License: MIT -Description: About linetable - --------------- - - .. image:: https://github.com/amol-/linetable/actions/workflows/run-tests.yml/badge.svg - :target: https://github.com/amol-/linetable/actions/workflows/run-tests.yml - - .. image:: https://coveralls.io/repos/amol-/linetable/badge.svg - :target: https://coveralls.io/r/amol-/linetable - - .. image:: https://img.shields.io/pypi/v/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - .. image:: https://img.shields.io/pypi/pyversions/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - .. image:: https://img.shields.io/pypi/l/linetable.svg - :target: https://pypi.python.org/pypi/linetable - - linetable is a library parse and generate co_linetable attributes in Python code objects. - - Based on https://github.com/python/cpython/blob/main/Objects/locations.md - - Installing - ---------- - - linetable can be installed from pypi:: - - pip install linetable - - should just work for most of the users - - Usage - ----- - - Existing linetable can be parsed using ``linetable.parse_linetable``:: - - >>> def testfunc(): - ... x = 3 - ... y = x + 1 - ... return y - - >>> list(linetable.parse_linetable(testfunc.__code__.co_linetable)) - [ - (1, 1, 1, 0, 0), - (1, 2, 2, 6, 7), - (1, 2, 2, 2, 3), - (1, 3, 3, 6, 7), - (1, 3, 3, 10, 11), - (2, 3, 3, 6, 11), - (1, 3, 3, 2, 3), - (1, 4, 4, 9, 10), - (1, 4, 4, 2, 10), - ] - - If you prefer the output in the format of ``dis.Positions`` objects, - you can create them from the yielded values:: - - >>> [dis.Positions(*e[1:]) for e in linetable.parse_linetable(testfunc.__code__.co_linetable)] - [Positions(lineno=1, end_lineno=1, col_offset=0, end_col_offset=0), Positions(lineno=2, end_lineno=2, col_offset=8, end_col_offset=9), Positions(lineno=2, end_lineno=2, col_offset=4, end_col_offset=5), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=9), Positions(lineno=3, end_lineno=3, col_offset=12, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=4, end_col_offset=5), Positions(lineno=4, end_lineno=4, col_offset=11, end_col_offset=12), Positions(lineno=4, end_lineno=4, col_offset=4, end_col_offset=12)] - - If you have the linetable, you can generate back the binary encoded version - using ``linetable.generate_linetable``:: - - >>> lt = [ - ... (1, 1, 1, 0, 0), - ... (1, 2, 2, 6, 7), - ... (1, 2, 2, 2, 3), - ... (1, 3, 3, 6, 7), - ... (1, 3, 3, 10, 11), - ... (2, 3, 3, 6, 11), - ... (1, 3, 3, 2, 3), - ... (1, 4, 4, 9, 10), - ... (1, 4, 4, 2, 10), - ... ] - >>> linetable.generate_linetable(lt) - b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" - -Platform: UNKNOWN +Project-URL: Homepage, https://github.com/amol-/linetable +Project-URL: Source, https://github.com/amol-/linetable +Keywords: linetable,python,bytecode Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE +Dynamic: license-file + +About linetable +--------------- + +.. image:: https://github.com/amol-/linetable/actions/workflows/run-tests.yml/badge.svg + :target: https://github.com/amol-/linetable/actions/workflows/run-tests.yml + +.. image:: https://coveralls.io/repos/amol-/linetable/badge.svg + :target: https://coveralls.io/r/amol-/linetable + +.. image:: https://img.shields.io/pypi/v/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +.. image:: https://img.shields.io/pypi/pyversions/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +.. image:: https://img.shields.io/pypi/l/linetable.svg + :target: https://pypi.python.org/pypi/linetable + +linetable is a library parse and generate co_linetable attributes in Python code objects. + +Based on https://github.com/python/cpython/blob/main/Objects/locations.md + +Installing +---------- + +linetable can be installed from pypi:: + + pip install linetable + +should just work for most of the users + +Usage +----- + +Existing linetable can be parsed using ``linetable.parse_linetable``:: + + >>> def testfunc(): + ... x = 3 + ... y = x + 1 + ... return y + + >>> list(linetable.parse_linetable(testfunc.__code__.co_linetable)) + [ + (1, 1, 1, 0, 0), + (1, 2, 2, 6, 7), + (1, 2, 2, 2, 3), + (1, 3, 3, 6, 7), + (1, 3, 3, 10, 11), + (2, 3, 3, 6, 11), + (1, 3, 3, 2, 3), + (1, 4, 4, 9, 10), + (1, 4, 4, 2, 10), + ] + +If you prefer the output in the format of ``dis.Positions`` objects, +you can create them from the yielded values:: + + >>> [dis.Positions(*e[1:]) for e in linetable.parse_linetable(testfunc.__code__.co_linetable)] + [Positions(lineno=1, end_lineno=1, col_offset=0, end_col_offset=0), Positions(lineno=2, end_lineno=2, col_offset=8, end_col_offset=9), Positions(lineno=2, end_lineno=2, col_offset=4, end_col_offset=5), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=9), Positions(lineno=3, end_lineno=3, col_offset=12, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=8, end_col_offset=13), Positions(lineno=3, end_lineno=3, col_offset=4, end_col_offset=5), Positions(lineno=4, end_lineno=4, col_offset=11, end_col_offset=12), Positions(lineno=4, end_lineno=4, col_offset=4, end_col_offset=12)] + +If you have the linetable, you can generate back the binary encoded version +using ``linetable.generate_linetable``:: + + >>> lt = [ + ... (1, 1, 1, 0, 0), + ... (1, 2, 2, 6, 7), + ... (1, 2, 2, 2, 3), + ... (1, 3, 3, 6, 7), + ... (1, 3, 3, 10, 11), + ... (2, 3, 3, 6, 11), + ... (1, 3, 3, 2, 3), + ... (1, 4, 4, 9, 10), + ... (1, 4, 4, 2, 10), + ... ] + >>> linetable.generate_linetable(lt) + b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/linetable.egg-info/SOURCES.txt new/linetable-0.0.4/linetable.egg-info/SOURCES.txt --- old/linetable-0.0.3/linetable.egg-info/SOURCES.txt 2023-03-07 11:52:55.000000000 +0100 +++ new/linetable-0.0.4/linetable.egg-info/SOURCES.txt 2026-10-08 12:03:48.757503000 +0200 @@ -1,13 +1,12 @@ +LICENSE MANIFEST.in README.rst -setup.cfg -setup.py +pyproject.toml linetable/__init__.py linetable/linetable.py linetable/varint.py linetable.egg-info/PKG-INFO linetable.egg-info/SOURCES.txt linetable.egg-info/dependency_links.txt -linetable.egg-info/entry_points.txt -linetable.egg-info/not-zip-safe -linetable.egg-info/top_level.txt \ No newline at end of file +linetable.egg-info/top_level.txt +tests/test_linetable.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/linetable.egg-info/entry_points.txt new/linetable-0.0.4/linetable.egg-info/entry_points.txt --- old/linetable-0.0.3/linetable.egg-info/entry_points.txt 2023-03-07 11:52:55.000000000 +0100 +++ new/linetable-0.0.4/linetable.egg-info/entry_points.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ - - # -*- Entry points: -*- - \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/linetable.egg-info/not-zip-safe new/linetable-0.0.4/linetable.egg-info/not-zip-safe --- old/linetable-0.0.3/linetable.egg-info/not-zip-safe 2023-03-07 11:52:55.000000000 +0100 +++ new/linetable-0.0.4/linetable.egg-info/not-zip-safe 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/pyproject.toml new/linetable-0.0.4/pyproject.toml --- old/linetable-0.0.3/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/linetable-0.0.4/pyproject.toml 2026-10-08 12:03:39.984638200 +0200 @@ -0,0 +1,37 @@ +[build-system] +requires = ["setuptools>=66", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "linetable" +version = "0.0.4" +description = "library to manage Python Locations Table (co_linetable)" +readme = {file = "README.rst", "content-type" = "text/x-rst"} +authors = [ + {name = "Alessandro Molina", email = "[email protected]"}, +] +license = { text = "MIT" } +classifiers = [ + "Intended Audience :: Developers", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", +] +keywords = ["linetable", "python", "bytecode"] +requires-python = ">=3.8" + +[project.urls] +Homepage = "https://github.com/amol-/linetable" +Source = "https://github.com/amol-/linetable" + +[tool.setuptools] +include-package-data = true + +[tool.setuptools.packages.find] +where = ["."] +include = ["linetable", "linetable.*"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/setup.py new/linetable-0.0.4/setup.py --- old/linetable-0.0.3/setup.py 2023-03-07 11:43:47.000000000 +0100 +++ new/linetable-0.0.4/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,36 +0,0 @@ -from setuptools import setup, find_packages -import sys, os - -here = os.path.abspath(os.path.dirname(__file__)) -try: - README = open(os.path.join(here, "README.rst")).read() -except IOError: - README = "" - -version = "0.0.3" - -setup( - name="linetable", - version=version, - description="library to manage Python Locations Table (co_linetable)", - long_description=README, - classifiers=[ - 'Intended Audience :: Developers', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3.11', - ], - keywords="", - author="Alessandro Molina", - author_email="[email protected]", - url="https://github.com/amol-/linetable", - license="MIT", - packages=find_packages(exclude=["ez_setup", "examples", "tests"]), - include_package_data=True, - zip_safe=False, - install_requires=[ - # -*- Extra requirements: -*- - ], - entry_points=""" - # -*- Entry points: -*- - """, -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linetable-0.0.3/tests/test_linetable.py new/linetable-0.0.4/tests/test_linetable.py --- old/linetable-0.0.3/tests/test_linetable.py 1970-01-01 01:00:00.000000000 +0100 +++ new/linetable-0.0.4/tests/test_linetable.py 2026-10-08 12:03:39.984638200 +0200 @@ -0,0 +1,108 @@ +import sys +import pytest +from linetable import generate_linetable, parse_linetable + + +def test_parse_linetable(): + linetable = b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" + parsed = list(parse_linetable(linetable)) + assert parsed == [ + (1, 1, 1, 0, 0), + (1, 2, 2, 6, 7), + (1, 2, 2, 2, 3), + (1, 3, 3, 6, 7), + (1, 3, 3, 10, 11), + (2, 3, 3, 6, 11), + (1, 3, 3, 2, 3), + (1, 4, 4, 9, 10), + (1, 4, 4, 2, 10), + ] + + +def test_parse_linetable_nocolumns(): + linetable = ( + b"\xe8\x00\xe8\x02\xe8\x00\xe8\x02\xe8\x00\xe9\x00\xe8\x00\xe8\x02\xe8\x00" + ) + parsed = list(parse_linetable(linetable)) + assert parsed == [ + (1, 1, 1, None, None), + (1, 2, 2, None, None), + (1, 2, 2, None, None), + (1, 3, 3, None, None), + (1, 3, 3, None, None), + (2, 3, 3, None, None), + (1, 3, 3, None, None), + (1, 4, 4, None, None), + (1, 4, 4, None, None), + ] + + +def test_linetable(): + pairs = [ + # length, start_line, end_line, start_col, end_col + (1, 1, 1, 0, 0), + (1, 2, 2, 6, 7), + (1, 2, 2, 2, 3), + (1, 3, 3, 6, 7), + (1, 3, 3, 10, 11), + (2, 3, 3, 6, 11), + (1, 3, 3, 2, 3), + (1, 4, 4, 9, 10), + (1, 4, 4, 2, 10), + ] + expected = b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" + assert generate_linetable(pairs, use_bytecode_offset=False) == expected + + +def test_linetable_offsets(): + pairs = [ + # bytecode_offset, start_line, end_line, start_col, end_col + (0, 1, 1, 0, 0), + (2, 2, 2, 6, 7), + (4, 2, 2, 2, 3), + (6, 3, 3, 6, 7), + (8, 3, 3, 10, 11), + (10, 3, 3, 6, 11), + (14, 3, 3, 2, 3), + (16, 4, 4, 9, 10), + (18, 4, 4, 2, 10), + ] + expected = b"\x80\x00\xd8\x06\x07\x80!\xd8\x06\x07\x88!\x81e\x80!\xd8\t\n\x80(" + assert generate_linetable(pairs, use_bytecode_offset=True) == expected + + +def test_linetable_offsets_short(): + pairs = [ + # bytecode_offset, linenum + (0, 1), + (2, 2), + (4, 2), + (6, 3), + (8, 3), + (10, 3), + (14, 3), + (16, 4), + (18, 4), + ] + expected = ( + b"\xe8\x00\xe8\x02\xe8\x00\xe8\x02\xe8\x00\xe9\x00\xe8\x00\xe8\x02\xe8\x00" + ) + assert generate_linetable(pairs, use_bytecode_offset=True) == expected + + [email protected](sys.version_info < (3,11), + reason="requires python3.11+") +def test_roundtrip(): + def _test_function(): + x = 13 + y = x * 2 + 7 + 8 + 9 - 3 - 1 - 5 + z = y**2 + return z + + co_linetable = _test_function.__code__.co_linetable + assert ( + generate_linetable( + parse_linetable(generate_linetable(parse_linetable(co_linetable))) + ) + == co_linetable + )
