ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Stanislav Levin <slev@basealt.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] [SCM] m/mathomatic/mathomatic.spec
Date: Thu, 7 Nov 2019 23:17:39 +0300
Message-ID: <2b10068e-c032-1f2a-2037-f4df9fabe3d2@basealt.ru> (raw)
In-Reply-To: <20191107182156.GA1803808@portlab>


[-- Attachment #1.1: Type: text/plain, Size: 5703 bytes --]


07.11.2019 21:21, Vladimir D. Seleznev пишет:
> ^ Этот способ не работает.

Ниже перечислены изменения сделанные утилитой 2to3 в данном пакете.

--- ./mathomatic/primes/matho-sum       2019-11-07 22:34:48.543068658 +0300
+++ ./matho-sum 2019-11-07 22:42:52.909266580 +0300
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 # Python program to sum many large integers separated by spaces or
newlines.
 # The integers to sum may be entered on the command-line or into
standard input.
@@ -12,7 +12,7 @@
        # read stdin if no command line args
        while True:
                try:
-                       input_line = raw_input()
+                       input_line = input()
                except:
                        break;
                for s in string.split(input_line):
@@ -21,4 +21,4 @@
        # sum together the command-line args
        for arg in args:
                sum += int(arg)
-print sum
+print(sum)

--- ./mathomatic/primes/matho-mult      2019-11-07 22:34:48.543068658 +0300
+++ matho-mult  2019-11-07 22:42:35.634259521 +0300
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 # Python program to multiply many large integers separated by spaces or
newlines.
 # The integers to multiply may be entered on the command-line or into
standard input.
@@ -15,7 +15,7 @@
        # read stdin if no command line args
        while True:
                try:
-                       input_line = raw_input()
+                       input_line = input()
                except:
                        break;
                for s in string.split(input_line):
@@ -24,4 +24,4 @@
        # multiply together the command-line args
        for arg in args:
                prod *= int(arg)
-print prod
+print(prod)


--- ./mathomatic/primes/primorial       2019-11-07 22:34:48.544068659 +0300
+++ primorial   2019-11-07 22:42:58.551268884 +0300
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 # This is a Python program to display large primorials.
 # A primorial is the product of all primes up to the given number.
@@ -16,11 +16,11 @@
 import sys
 
 def usage(ev):
-       print "This program calculates large primorials."
-       print
-       print "Usage: %s integers" % os.path.basename(sys.argv[0])
-       print
-       print "A primorial is the product of all primes up to the given
number."
+       print("This program calculates large primorials.")
+       print()
+       print("Usage: %s integers" % os.path.basename(sys.argv[0]))
+       print()
+       print("A primorial is the product of all primes up to the given
number.")
        sys.exit(ev)
 
 def output_primorial(arg):
@@ -36,9 +36,9 @@
        for arg in args:
                try:
                        if (int(arg) < 1):
-                               print >>sys.stderr, "Number too small."
+                               print("Number too small.", file=sys.stderr)
                                sys.exit(1)
                except:
-                       print >>sys.stderr, "Positive integer required."
+                       print("Positive integer required.", file=sys.stderr)
                        usage(1)
                output_primorial(arg)


--- ./mathomatic/examples/factorial     2019-11-07 22:34:48.538068656 +0300
+++ factorial   2019-11-07 22:43:04.379271266 +0300
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 # This is a Python program to display large factorials and test "fact.py".
 
@@ -8,13 +8,13 @@
 import string
 
 def usage():
-       print "This program calculates large factorials."
-       print "Requires and tests \"fact.py\"."
-       print
-       print "Usage: %s integer_expressions" %
os.path.basename(sys.argv[0])
-       print
-       print "The integer expressions should be separated by spaces."
-       print "A factorial is the product of all positive integers <= a
given integer."
+       print("This program calculates large factorials.")
+       print("Requires and tests \"fact.py\".")
+       print()
+       print("Usage: %s integer_expressions" %
os.path.basename(sys.argv[0]))
+       print()
+       print("The integer expressions should be separated by spaces.")
+       print("A factorial is the product of all positive integers <= a
given integer.")
        sys.exit(2)
 
 args = sys.argv[1:]
@@ -23,8 +23,8 @@
 else:
        try:
                num = eval(string.join(args))
-               print "factorial(", num, ") =", factorial(num)
+               print("factorial(", num, ") =", factorial(num))
        except:
                for arg in args:
                        num = eval(arg)
-                       print "factorial(", num, ") =", factorial(num)
+                       print("factorial(", num, ") =", factorial(num))


Очевидно, что изменения верные.

Можете сравнить их, например, с Fedora:

https://src.fedoraproject.org/rpms/mathomatic/tree/master

Что именно в данном случае не работает?


> 2to3 в большинстве случаев _не_ генерирует рабочий код.

Это утверждение требующее каких-то доказательств.

Список всех багов по 2to3:

https://bugs.python.org/issue?%40search_text=&ignore=file%3Acontent&title=&%40columns=title&id=&%40columns=id&stage=&creation=&creator=&activity=&%40columns=activity&%40sort=activity&actor=&nosy=&type=&components=20&versions=&dependencies=&assignee=&keywords=&priority=&status=&%40columns=status&resolution=&nosy_count=&message_count=&%40group=&%40pagesize=50&%40startwith=0&%40sortdir=on&%40action=search

Да, бывают нюансы. Но бОльшую массу кода трансформирует и трансформирует
в рабочий Python3 код.

> после каждого
> перевода их надо проверять.
Безусловно (если есть понимание изменений), потому что утилита не
охватывает весь функциональный спектр.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2019-11-07 20:17 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-07 18:21 ` Vladimir D. Seleznev
2019-11-07 20:17   ` Stanislav Levin [this message]
2019-11-08  6:18     ` Fr. Br. George
2019-11-08  7:12       ` Stanislav Levin
2019-11-08 18:24         ` [devel] [JT] " Fr. Br. George
2019-11-08  7:26       ` [devel] " Anton Farygin
2019-11-08 18:26         ` Fr. Br. George
2019-11-09  7:01           ` Anton Farygin
2019-11-15 23:04               ` [devel] О переводе модулей на python3 Dmitry V. Levin
2019-11-17 18:30                 ` Anton Farygin
2019-11-17 18:30               ` Anton Farygin
2019-11-17 21:19                 ` Andrey Savchenko
2019-11-18  3:52                   ` Anton Farygin
2019-11-18  4:11                     ` Andrey Savchenko
2019-11-18  6:33                       ` Anton Farygin
2019-11-18  4:09               ` Anton Farygin
2019-11-18  4:52                 ` Антон Мидюков
2019-11-18  6:39                   ` Anton Farygin
2019-11-18  7:17                     ` Антон Мидюков
2019-11-18  7:49                 ` Denis Medvedev
2019-11-18  7:53                   ` Anton Farygin
2019-11-18 11:18                     ` Dmitry V. Levin
2019-11-18 11:30                       ` Anton Farygin
2019-11-18 11:22                 ` Dmitry V. Levin
2019-11-18 11:32                   ` Anton Farygin
2019-11-18 12:25                     ` Michael Shigorin
2019-11-18 12:40                     ` Grigory Ustinov
2019-11-18 12:45                       ` Andrey Bychkov
2019-11-18 16:06                       ` Anton Farygin
2019-11-18 15:24                   ` Vladimir D. Seleznev
2019-11-18  6:48               ` [devel] О переводе модулей на python3 (was: [SCM] m/mathomatic/mathomatic.spec) Stanislav Levin
2019-11-18 13:07                 ` Andrey Savchenko
2019-11-18 13:14                   ` [devel] qt3 Dmitry V. Levin
2019-11-18 16:03                   ` [devel] О переводе модулей на python3 (was: [SCM] m/mathomatic/mathomatic.spec) Alexey V. Vissarionov
2019-11-18 16:08                     ` [devel] О переводе модулей на python3 Anton Farygin
2019-11-08 18:48         ` [devel] [SCM] m/mathomatic/mathomatic.spec Fr. Br. George
2019-11-11 14:34             ` Fr. Br. George

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2b10068e-c032-1f2a-2037-f4df9fabe3d2@basealt.ru \
    --to=slev@basealt.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git