Re: try..except or type() or isinstance()?

2020-08-16 Thread Manfred Lotz
On Sat, 15 Aug 2020 12:20:48 -0400
Dennis Lee Bieber  wrote:

> On Sat, 15 Aug 2020 15:31:56 +0200, Manfred Lotz 
> declaimed the following:
> 
> >On Sat, 15 Aug 2020 11:47:03 +0200
> >Sibylle Koczian  wrote:
> >  
> 
> >> if the value comes from a file, isn't it a
> >> string in any case? A string that may be convertible to int or
> >> not? Or what sort of file do I overlook?
> >>   
> >
> >In this case it is a TOML file.   
> 
>   Based on https://en.wikipedia.org/wiki/TOML this means you
> need a parser... 
> """
> In TOML the syntax determines the data types ("syntax typing")
> """
> 
>   String data is surrounded with " marks, numbers are not
> (though the example doesn't show if integers are treated differently
> from floating point), arrays/lists in [] with embedded comma ([] are
> also overloaded for section headers, with subsections using
> section.subsection naming), dates are some ugly creation, and looks
> like true/false are reserved values.
> 
>   However, as pointed out -- all data read from the file will
> be seen as a Python string data type. It is only after determining
> the TOML data type -- by examining the string itself -- that one can
> convert to internal format.
> 
>   Unfortunately, TOML is not compatible with INI -- for which
> Python already has a read/write module. But there is
> https://pypi.org/project/toml/
> (uses the same example file as Wikipedia) -- latest version was from
> May.
> 
> 

I use tomlkit as the toml package doesn't support quoted keys
sufficiently.

-- 
Manfred


-- 
https://mail.python.org/mailman/listinfo/python-list


Re: try..except or type() or isinstance()?

2020-08-16 Thread Manfred Lotz
On 15 Aug 2020 14:49:48 GMT
r...@zedat.fu-berlin.de (Stefan Ram) wrote:

> Manfred Lotz  writes:
> >Here a minimal example  
> 
>   main.py
> 
> source="""
> sehr gut
> 1
> """[ 1: -1 ].split( "\n" )
> 
> class grades:
> names =[ "sehr gut" ]
> @staticmethod
> def is_numeric( text ):
> return text.isdigit()
> @staticmethod
> def get_number( text ):
> return grades.names.index( text )+ 1
> @staticmethod
> def get_name( text ):
> return grades.names[ int( text )- 1 ]
> 
> class O1:
> def init_from_number( self, text ):
> self.myid = int( text )
> self.name = grades.get_name( text )
> def init_from_name( self, text ):
> self.myid = grades.get_number( text )
> self.name = text
> def __init__( self, text ):
> if grades.is_numeric( text ):
> self.init_from_number( text )
> else:
> self.init_from_name( text )
> def __str__( self ):
> return "O1( " + str( self.myid )+ ", " + str( self.name ) + "
> )" 
> for line in source:
> print( O1( line ))
> 
> 
>   transcript:
> 
> O1( 1, sehr gut )
> O1( 1, sehr gut )
> 
> 

Thanks for this interesting variation. 

-- 
Manfred

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: try..except or type() or isinstance()?

2020-08-16 Thread Manfred Lotz
On Sun, 16 Aug 2020 09:40:12 +0200
Manfred Lotz  wrote:

> On Sat, 15 Aug 2020 12:20:48 -0400
> Dennis Lee Bieber  wrote:
> 
> > On Sat, 15 Aug 2020 15:31:56 +0200, Manfred Lotz 
> > declaimed the following:
> >   
> > >On Sat, 15 Aug 2020 11:47:03 +0200
> > >Sibylle Koczian  wrote:
> > >
> >   
> > >> if the value comes from a file, isn't it a
> > >> string in any case? A string that may be convertible to int or
> > >> not? Or what sort of file do I overlook?
> > >> 
> > >
> > >In this case it is a TOML file. 
> > 
> > Based on https://en.wikipedia.org/wiki/TOML this means you
> > need a parser... 
> > """
> > In TOML the syntax determines the data types ("syntax typing")
> > """
> > 
> > String data is surrounded with " marks, numbers are not
> > (though the example doesn't show if integers are treated differently
> > from floating point), arrays/lists in [] with embedded comma ([] are
> > also overloaded for section headers, with subsections using
> > section.subsection naming), dates are some ugly creation, and looks
> > like true/false are reserved values.
> > 
> > However, as pointed out -- all data read from the file will
> > be seen as a Python string data type. It is only after determining
> > the TOML data type -- by examining the string itself -- that one can
> > convert to internal format.
> > 
> > Unfortunately, TOML is not compatible with INI -- for which
> > Python already has a read/write module. But there is
> > https://pypi.org/project/toml/
> > (uses the same example file as Wikipedia) -- latest version was from
> > May.
> > 
> >   
> 
> I use tomlkit as the toml package doesn't support quoted keys
> sufficiently.
> 

Just checked again. It seems I was wrong. Both toml and tomlkit do
support quoted keys ok.

-- 
Manfred

-- 
https://mail.python.org/mailman/listinfo/python-list


Syntax question

2020-08-16 Thread Klaus Jantzen

Hi,

the other day I came across the book "Classic Computer Science Problems 
in Python" by David Kopec.


The function definitions in the examples  like

=
def fib2(n: int) -> int:
    if n < 2:  # base case
    return n
    return fib2(n - 2) + fib2(n - 1)  # recursive case


if __name__ == "__main__":
    print(fib2(5))
    print(fib2(10))

=

use a syntax that I have never seen on this list or in other publications.

My questions:

Is that new?

Is is 'recommended' to use this is the future?

I can only see a certain advantage of using this type of function 
definition in resp. to the documentation, as it does not provide an 
automatic check of the type of the argument(s) or of the result as in Java.


--

K.D.J.

--
https://mail.python.org/mailman/listinfo/python-list


Re: Syntax question

2020-08-16 Thread dn via Python-list

On 16/08/2020 20:12, Klaus Jantzen wrote:

Hi,

the other day I came across the book "Classic Computer Science Problems 
in Python" by David Kopec.


The function definitions in the examples  like

=
def fib2(n: int) -> int:
     if n < 2:  # base case
     return n
     return fib2(n - 2) + fib2(n - 1)  # recursive case


if __name__ == "__main__":
     print(fib2(5))
     print(fib2(10))

=

use a syntax that I have never seen on this list or in other publications.


About which line of code are you asking?

> def fib2(n: int) -> int:

Please review: Type Hints:
https://docs.python.org/3/library/typing.html

> if __name__ == "__main__":

https://docs.python.org/3/library/__main__.html
https://docs.python.org/3/reference/import.html


My questions:

Is that new?


Typing: v3.5+ (IIRC)



Is is 'recommended' to use this is the future?


Yes and no. The operative word is "Hints". Typing is not required by 
Python. However, you may find the extra error-checking helpful...



I can only see a certain advantage of using this type of function 
definition in resp. to the documentation, as it does not provide an 
automatic check of the type of the argument(s) or of the result as in Java.


There are 'pros' and 'cons'!
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list


Re: Syntax question

2020-08-16 Thread Manfred Lotz
On Sun, 16 Aug 2020 10:12:04 +0200
Klaus Jantzen  wrote:

> Hi,
> 
> the other day I came across the book "Classic Computer Science
> Problems in Python" by David Kopec.
> 
> The function definitions in the examples  like
> 
> =
> def fib2(n: int) -> int:
>      if n < 2:  # base case
>      return n
>      return fib2(n - 2) + fib2(n - 1)  # recursive case
> 
> 
> if __name__ == "__main__":
>      print(fib2(5))
>      print(fib2(10))
> 
> =
> 
> use a syntax that I have never seen on this list or in other
> publications.
> 

What do you mean? The 'n:int' and '-> int'? If yes, this is type
hinting.

See here: https://docs.python.org/3/library/typing.html

-- 
Manfred

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Syntax question

2020-08-16 Thread Skip Montanaro
> Typing is not required by
> Python. However, you may find the extra error-checking helpful...

I haven't used type hints much, if at all, but my understanding is
that the "extra error-checking" of which you speak is gotten through
other static checkers, correct? I know the syntax was developed with
the MyPy folks (http://mypy-lang.org/), but I'm not sure what other
tools currently make use of it. Any pointers?

Skip
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Syntax question

2020-08-16 Thread Manfred Lotz
On Sun, 16 Aug 2020 06:09:17 -0500
Skip Montanaro  wrote:

> > Typing is not required by
> > Python. However, you may find the extra error-checking helpful...  
> 
> I haven't used type hints much, if at all, but my understanding is
> that the "extra error-checking" of which you speak is gotten through
> other static checkers, correct? 

Yes.

> I know the syntax was developed with
> the MyPy folks (http://mypy-lang.org/), but I'm not sure what other
> tools currently make use of it. Any pointers?
> 

I heard about the following (not tried all, though)

- mypy (Dropbox)
- pyre-check (Facebook)
- pytype (Google)
- pyright (Microsoft)


-- 
Manfred

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: try..except or type() or isinstance()?

2020-08-16 Thread Alexa Oña
Sorry... i have received a lot of messages from python support and I still 
didn’t understand how to fix it

Obtener Outlook para iOS

De: Python-list  
en nombre de Manfred Lotz 
Enviado: Sunday, August 16, 2020 9:48:07 AM
Para: python-list@python.org 
Asunto: Re: try..except or type() or isinstance()?

On Sun, 16 Aug 2020 09:40:12 +0200
Manfred Lotz  wrote:

> On Sat, 15 Aug 2020 12:20:48 -0400
> Dennis Lee Bieber  wrote:
>
> > On Sat, 15 Aug 2020 15:31:56 +0200, Manfred Lotz 
> > declaimed the following:
> >
> > >On Sat, 15 Aug 2020 11:47:03 +0200
> > >Sibylle Koczian  wrote:
> > >
> >
> > >> if the value comes from a file, isn't it a
> > >> string in any case? A string that may be convertible to int or
> > >> not? Or what sort of file do I overlook?
> > >>
> > >
> > >In this case it is a TOML file.
> >
> >  Based on https://en.wikipedia.org/wiki/TOML this means you
> > need a parser...
> > """
> > In TOML the syntax determines the data types ("syntax typing")
> > """
> >
> >  String data is surrounded with " marks, numbers are not
> > (though the example doesn't show if integers are treated differently
> > from floating point), arrays/lists in [] with embedded comma ([] are
> > also overloaded for section headers, with subsections using
> > section.subsection naming), dates are some ugly creation, and looks
> > like true/false are reserved values.
> >
> >  However, as pointed out -- all data read from the file will
> > be seen as a Python string data type. It is only after determining
> > the TOML data type -- by examining the string itself -- that one can
> > convert to internal format.
> >
> >  Unfortunately, TOML is not compatible with INI -- for which
> > Python already has a read/write module. But there is
> > https://pypi.org/project/toml/
> > (uses the same example file as Wikipedia) -- latest version was from
> > May.
> >
> >
>
> I use tomlkit as the toml package doesn't support quoted keys
> sufficiently.
>

Just checked again. It seems I was wrong. Both toml and tomlkit do
support quoted keys ok.

--
Manfred

--
https://mail.python.org/mailman/listinfo/python-list
-- 
https://mail.python.org/mailman/listinfo/python-list


I discovered a bug in the no-ip dynamic dns free hostname auto renewal/confirmation script written by loblab

2020-08-16 Thread Turritopsis Dohrnii Teo En Ming
Subject: I discovered a bug in the no-ip dynamic dns free hostname auto 
renewal/confirmation script written by loblab


Good day from Singapore,

Programming code troubleshooting person: Mr. Turritopsis Dohrnii Teo En 
Ming (Targeted Individual)

Country: Singapore
Date: 15 to 16 August 2020 Singapore Time (Saturday and Sunday)

My IT consulting company in Singapore asked me to install a Linux 
virtual machine so that we can run no-ip dynamic dns free hostname auto 
renewal/confirmation script written by loblab. I am an IT consultant in 
Singapore, 42 years old as of 16 Aug 2020.


I am not a Python or Java programmer or software developer. The last 
time I had formal training in structured C programming (not C++ objected 
oriented programming) was more than 20 years ago at Singapore 
Polytechnic (Diploma in Mechatronics Engineering course year 1995-1998). 
Although I am not a programmer or software developer, I can still more 
or less understand the flow of programming code.


I chose Debian 10.5 64-bit Linux to install as my virtual machine/guest 
operating system because loblab mentioned that his scripts have been 
tested on Debian 9.x/10.x. But first I have to install VMware 
Workstation Pro 15.5.6 in my Ubuntu 18.04.3 LTS Linux desktop operating 
system. The iso file I downloaded is debian-10.5.0-amd64-netinst.iso.


The virtual network adapter in my Debian 10.5 Linux virtual machine was 
configured to use Network Address Translation (NAT). You can verify the 
IP address of your VM with the following Linux commands:


$ ip a

$ ip route

Give your Debian 10.5 Linux VM at least 2 GB of RAM.

After installing Debian 10.5 Linux virtual machine (minimal installation 
with SSH server and standard system utilities), I need to do a few more 
things, as follows.


# apt install sudo

# usermod -aG sudo teo-en-ming

# groups teo-en-ming

So that I can sudo as a regular Linux user.

# apt install git

Then I downloaded the no-ip ddns free hostname auto renewal/confirmation 
script using git clone.


Software: Script to auto renew/confirm noip.com free hosts
Download link: https://github.com/loblab/noip-renew
Programmer: loblab

I believe programmer loblab is based in China.

The version of the scripts I downloaded is 1.1 dated 18 May 2020.

The composition of the software is 58.4% Python programming language, 
36% Linux shell scripts, and 5.6% Dockerfile.


I tried to run setup.sh Linux shell script and choose "Install/Repair 
Script". But I found out that nothing is being installed in 
/usr/local/bin after a few installation attempts.


I thought the scripts/installation were being blocked by AppArmor, so I 
went to disable AppArmor using the following Linux commands.


$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT 
apparmor=0"' \

  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot

$ aa-enabled
$ sudo aa-status

But AppArmor is NOT the cause of the problem.

I began to examine the Python programming code and Linux shell scripts.

For the setup.sh script, when you choose "Install/Repair Script", it 
will call the installer() function. Inside the installer() function, it 
will call the following functions, in sequence:


config(), install(), deploy()

When the install() function was called, it tried to execute the 
following Linux command:


$SUDO apt -y install chromium-browser # Update Chromium Browser or 
script won't work.


Executing the above Linux command resulted in an ERROR because Debian 
10.5 Linux does not have the chromium-browser software package. Instead 
it has the chromium package.


When the above error is encountered, the installer script ABORTED 
PREMATURELY and could not continue running. The installer script could 
not run to completion. This is the bug.


To fix the bug, I have to COMMENT OUT/DISABLE the following line in 
setup.sh script:


$SUDO apt -y install chromium-browser # Update Chromium Browser or 
script won't work.


And add the following line below the above-mentioned line:

$SUDO apt -y install chromium

It fixed the bug. I ran setup.sh script again, choose "Install/Repair 
Script", and the installer ran to completion. Finally the scripts are 
installed in /usr/local/bin.


Please DO NOT add your no-ip account password to noip-renew.sh script 
manually in plain text because it has to be Base64 encoded/encrypted. If 
you add your no-ip account password directly to noip-renew.sh script, 
you will get an "Incorrect Padding" Python programming base64 error 
code.


You need to supply the no-ip account password when you run the installer 
script. When the installer script calls the deploy() function, it will 
also call the noip() function.


The noip() function is as follows:

function noip() {
echo "Enter your No-IP Account details..."
read -p 'Username: ' uservar
read -sp 'Password: ' passvar

passvar=`echo -n $passvar | base64`
echo

$SUDO sed -i 's/USERNAME=".*"/USERNAME

Re: I discovered a bug in the no-ip dynamic dns free hostname auto renewal/confirmation script written by loblab

2020-08-16 Thread Cameron Simpson
On 16Aug2020 17:41, Turritopsis Dohrnii Teo En Ming  
wrote:
>Subject: I discovered a bug in the no-ip dynamic dns free hostname 
>auto renewal/confirmation script written by loblab

The best thing to do here is to submit this as an issue here:

https://github.com/loblab/noip-renew/issues

Posting to the generic python-list won't help anyone, because the script 
authors likely will not see it and the python-list members haven't 
anything they can do with your bug report.

Cheers,
Cameron Simpson 
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: I discovered a bug in the no-ip dynamic dns free hostname auto renewal/confirmation script written by loblab

2020-08-16 Thread Turritopsis Dohrnii Teo En Ming

Noted with thanks. I will contact the script authors.



On 2020-08-17 07:16, Cameron Simpson wrote:
On 16Aug2020 17:41, Turritopsis Dohrnii Teo En Ming 
 wrote:

Subject: I discovered a bug in the no-ip dynamic dns free hostname
auto renewal/confirmation script written by loblab


The best thing to do here is to submit this as an issue here:

https://github.com/loblab/noip-renew/issues

Posting to the generic python-list won't help anyone, because the 
script

authors likely will not see it and the python-list members haven't
anything they can do with your bug report.

Cheers,
Cameron Simpson 


--
-BEGIN EMAIL SIGNATURE-

The Gospel for all Targeted Individuals (TIs):

[The New York Times] Microwave Weapons Are Prime Suspect in Ills of
U.S. Embassy Workers

Link: 
https://www.nytimes.com/2018/09/01/science/sonic-attack-cuba-microwave.html




Singaporean Mr. Turritopsis Dohrnii Teo En Ming's Academic
Qualifications as at 14 Feb 2019 and refugee seeking attempts at the 
United Nations Refugee Agency Bangkok (21 Mar 2017), in Taiwan (5 Aug 
2019) and Australia (25 Dec 2019 to 9 Jan 2020):


[1] https://tdtemcerts.wordpress.com/

[2] https://tdtemcerts.blogspot.sg/

[3] https://www.scribd.com/user/270125049/Teo-En-Ming

-END EMAIL SIGNATURE-
--
https://mail.python.org/mailman/listinfo/python-list