[asterisk-bugs] [JIRA] (ASTERISK-27811) [patch] sip_to_pjsip: Enable python3 compatibility.

Alexander Traud (JIRA) noreply at issues.asterisk.org
Wed Apr 18 02:19:50 CDT 2018


Alexander Traud created ASTERISK-27811:
------------------------------------------

             Summary: [patch] sip_to_pjsip: Enable python3 compatibility.
                 Key: ASTERISK-27811
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27811
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: Contrib/General
    Affects Versions: 15.3.0, 13.20.0
         Environment: Python 3.6
Python 2.7
            Reporter: Alexander Traud
         Attachments: python3.patch

In {{contrib/scripts}}, there is the Python script {{sip_to_pjsip}}, which converts an existing configuration file from the old SIP channel driver {{chan_sip}} to the new {{chan_pjsip}}, see the [Wiki...|https://wiki.asterisk.org/wiki/display/AST/Migrating+from+chan_sip+to+res_pjsip]

In the year 2013, the last big change to that script happened (ASTERISK-22374). Although then, Python 3 existed already, that script works only with Python 2.7 as of today. Even the Shebang is not in line with the other Python scripts in Asterisk and not the [recommended one|https://stackoverflow.com/a/19305076].

Luckily, the changes for Python 3 are not much: The biggest change is {{print()}} and the import statements. ASTERISK-27333 introduced white-space errors, which Python 3 is picky about. Finally, the analyzer [pyflakes3|https://pypi.org/project/pyflakes/] hinted that the function {{cmp()}} must be replaced to be Python 3 compatible.

With ASTERISK-27348, a new script was added. That imported {{cli_options()}} from the existing script but re-defined just later. pyflakes3 was not happy about that, therefore I removed that import. Furthermore, that script tries to catch an {{Exception,e}} - looks like a typo for me. Finally, I enhanced that script not only to require MySQLdb but allow as alternative also the external library pymysql.

The final script is still compatible with Python 2 and created the same output with a rather complex {{sip.conf}}, both in Python 2.7 and Python 3.6. This change here is part of a series of three changes to get the scripts within Asterisk compatible with Python 3:
1. [~coreyfarrell] does the change in the [Build System...|https://gerrit.asterisk.org/8641]
3. Somebody to be named must migrate the Test-Framework, see the comments of ASTERISK-27717



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list