Re: pyinstaller

2020-06-11 Thread Robin Becker

On 10/06/2020 20:41, Chris Angelico wrote:
.

Python can be installed from the app store, or from a python.org
downloader. If that's too much hassle for them, then they're going to
need help *whatever* you do.


works for windows 10, but probably not on older machines.


The current exe works on very old versions of windows as well. Some people are 
reluctant to change old win 95/xp
machines just to run a single app.


And a lot of us are reluctant to try to support XP. It's an operating
system that was released the same year as Python 2.2 - do you try to
support that? If not, why support an ancient OS?

unfortunately we don't get to choose the users' hardware or what OS they use.




I had supposed there might be a simple mechanism to get these applications 
validated in some way, but it seems not. MS
seems uninterested.


And I can't blame them. How is MS going to know that you haven't
tampered with the Python binary before you packaged it up? How can end
users be expected to trust it?

no disagreement here


ChrisA



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


Re: pyinstaller

2020-06-11 Thread Chris Angelico
On Thu, Jun 11, 2020 at 6:18 PM Robin Becker  wrote:
>
> On 10/06/2020 20:41, Chris Angelico wrote:
> .
> > Python can be installed from the app store, or from a python.org
> > downloader. If that's too much hassle for them, then they're going to
> > need help *whatever* you do.
> >
> works for windows 10, but probably not on older machines.
>
> >> The current exe works on very old versions of windows as well. Some people 
> >> are reluctant to change old win 95/xp
> >> machines just to run a single app.
> >
> > And a lot of us are reluctant to try to support XP. It's an operating
> > system that was released the same year as Python 2.2 - do you try to
> > support that? If not, why support an ancient OS?
> unfortunately we don't get to choose the users' hardware or what OS they use.
>

But you DO get to choose what you support. If they want to use Windows
98 on an 80386, that's their (stupid) choice, and they can't guarantee
that your program will work on it.

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


Re: pyinstaller

2020-06-11 Thread Barry Scott



> On 10 Jun 2020, at 14:46, Robin Becker  wrote:
> 
> I'm sure this has come up before, but a tiny pyinstaller created exe is being 
> seen as malware by windows 10.
> 
> Is there any way to create simple single file applications which don't get 
> this treatment?

Submit the .exe to Microsoft so they can update the virus definitions to remove 
your false positive.

https://www.microsoft.com/en-us/wdsi/filesubmission 


I did this for one of my open source projects and Microsoft fixed the false 
problem in a few days for me.

Barry


> 
> The intended users are unlikely to understand how to adjust the scanner to 
> whitelist the application.
> --
> Robin Becker
> -- 
> https://mail.python.org/mailman/listinfo/python-list
> 

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


Re: pyinstaller

2020-06-11 Thread Robin Becker

On 11/06/2020 09:24, Chris Angelico wrote:



But you DO get to choose what you support. If they want to use Windows
98 on an 80386, that's their (stupid) choice, and they can't guarantee
that your program will work on it.
sadly this isn't really true since this is only part of the process and we are trying to capture data (sports results) 
which they create on their hardware for other reasons; some machines are 20 years old and some this year. Some of the 
capture devices are using serial ports :( which luckily I don't get near :)


Regarding the users as stupid because they won't follow us on the upgrade tread 
wheel seems a bit arrogant.


ChrisA


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


Re: pyinstaller

2020-06-11 Thread Robin Becker

..

Submit the .exe to Microsoft so they can update the virus definitions to remove 
your false positive.

https://www.microsoft.com/en-us/wdsi/filesubmission 


I did this for one of my open source projects and Microsoft fixed the false 
problem in a few days for me.


I think my boss actually tried this, but I will check. Thanks

Barry



--
Robin Becker



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


Re: pyinstaller

2020-06-11 Thread Chris Angelico
On Thu, Jun 11, 2020 at 7:27 PM Robin Becker  wrote:
>
> On 11/06/2020 09:24, Chris Angelico wrote:
> 
> >
> > But you DO get to choose what you support. If they want to use Windows
> > 98 on an 80386, that's their (stupid) choice, and they can't guarantee
> > that your program will work on it.
> sadly this isn't really true since this is only part of the process and we 
> are trying to capture data (sports results)
> which they create on their hardware for other reasons; some machines are 20 
> years old and some this year. Some of the
> capture devices are using serial ports :( which luckily I don't get near :)
>
> Regarding the users as stupid because they won't follow us on the upgrade 
> tread wheel seems a bit arrogant.
>

What about regarding the users as so stupid that they can't handle "go
to python.org and install Python, then double-click this .py file"?
Are they smart enough to handle a two-step installation process?
Because that's what I suggested at the start, and you were the one who
said they wouldn't be able to handle it. I'm judging your users based
on your descriptions of them and nothing else. I'd much rather assume
that they're intelligent and can accept the consequences of their
choices.

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


RE: Syntax Help

2020-06-11 Thread John Weller
Many thanks to all who responded.  I was an experienced programmer until I 
retired nearly 20 years ago, mainly in the military weapons area then XBase 
when I left the military.  I decided I had to learn Python when my grandson 
started learning it at school if I wanted to retain my position as the family 
IT guru 😊  I have been able to find answers to most problems by Googling but 
couldn't work out a suitable query for this one.  I have signed up for the 
tutors list.

Thanks again

John Weller
01380 723235
07976 393631

-Original Message-
From: Python-list  On 
Behalf Of DL Neil via Python-list
Sent: 10 June 2020 22:13
To: [email protected]
Subject: Re: Syntax Help

On 11/06/20 4:56 AM, John Weller wrote:
> I am trying to learn python.  Looking at an example on the web I found 
> this
> line:
> def plot(*args, **kwargs):
> What do the stars mean?


The Python "docs" are (surprisingly, for this day-and-age) comprehensive. Try 
https://docs.python.org/3/tutorial/controlflow.html
and its several discussions about def[ining] functions and parameters.

Please also be aware that there is also a Python-Tutor Discussion List which 
has the specific objective of supporting learners (follow link, below).
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

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


PyDev 7.6.0 Released

2020-06-11 Thread Fabio Zadrozny
PyDev 7.6.0 Release Highlights

   -

   *Debugger improvements* (updated to pydevd 1.9.1).
   - *Variables are now grouped* (special/class/function/protected) --
  note: it's possible to hide groups in the variables view menu dropdown.
  - When a launching a subprocess does not target a python executable,
  the original args are kept (so, quotes are no longer trimmed).
  - A step in which would skip code won't be reported in the return if
  it'd reach the same location.
  - The disassembled version of a frame may be shown if the sources are
  not available.
  - PySide2 is supported to recognize QThreads/event loop in
  interactive console.
   -

   *Python 3.8 parsing fixes*
   - Properly parsing f-strings with named unicode character. i.e.:
  *f"\N{BULLET}"*.
  - Properly parsing f-strings formats using colon. i.e.:
*f"{datetime.datetime.now():%Y-%m-%d
  %H:%M:%S}"*.
  - Properly parsing f-strings with vars ending in equals. i.e.:
  *f'{y=}'*.
  - Properly parsing raw f-strings such as *rf"str"*.
  - Properly parsing iterable unpacking syntax. i.e.: *return
  lastname.upper(), *members*.
   -

   Support for the latest version of PyTest (which may resolve symlinks and
   changed the TerminalWriter import location).
   - PyDev package explorer is a bit faster (cache source project paths for
   a project).
   - Recognizing type comments for *self* attributes. i.e.: *#: :type
   self.var: MyClass*.
   - Trailing commas properly recognized in automatic import.

About PyDev

PyDev is an open-source Python IDE on top of Eclipse for Python, Jython and
IronPython development, now also available for Python on Visual Studio Code.

It comes with goodies such as code completion, syntax highlighting, syntax
analysis, code analysis, refactor, debug, interactive console, etc.

It is also available as a standalone through LiClipse with goodies such as
multiple cursors, theming and support for many other languages, such as
Django Templates, Jinja2, Html, JavaScript, etc.

Links:

PyDev: http://pydev.org
PyDev Blog: http://pydev.blogspot.com
PyDev on VSCode: http://pydev.org/vscode
LiClipse: http://www.liclipse.com
PyVmMonitor - Python Profiler: http://www.pyvmmonitor.com/

Cheers,

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


Convert and analyze image data in a spreadsheet.

2020-06-11 Thread Vincent Davis
Looking for a little advise.
I have 6x6 color (CIELAB )
data in a spreadsheet (color samples of clothing). I would like to
visualize this as an image on a per channel (l,a,b) and as a color image. I
can read the data from the spreadsheet. I am not sure the path a should
choose from there. I think the path is to read this data into a numpy array
and use scikit-image.

Questions:
1. I am not sure how to get the 3 color measurements into a color image
pixel.
2. I only kinda understand color spaces, this data is in CIELAB, do I want
to keep it in that color format? I think yes.
3. How can I visualize this data as a 6x6 color image and visualize each
color on a gray scale.
4. General hints or link of how to proceed would be helpful.

Thanks
Vincent Davis
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: repair modify uninstall

2020-06-11 Thread Terry Reedy

On 6/10/2020 11:30 PM, Grant Edwards wrote:

On 2020-06-11, Michael Torrie  wrote:


Since this comes up on a weekly basis, perhaps the installer should open
that web page to section 3.8.1 after a successful installation.  Maybe
users would read that short section and not try to run the installer
over and over again.  Or since that can be annoying, a prominent "how to
get started" link to click on.  I dunno.


Suggestions like this also get made regularly.  I'm baffled why the
Python installer doesn't display an initial screen that says something
like.

  This is the Python INSTALLER.  If you have installed Python,
  here's what you do to run it:

 

  Click the buttons below only if you want to INSTALL, UNINSTALL,
  or REPAIR Python. See the above instruction to use/run Python.


I'm not sure why users think the installer is the python interpreter
after running it the first time, but apparently many do.


Indeed.  Is the file name not clear that it's an installer?


No.  python-3.8.3-amd64.exe, which is typical naming for install files. 
I opened

https://bugs.python.org/issue40948
and suggested adding '-setup' or '-install', as well as instructions on 
the initial screen for existing installs, and, if not present, the final 
screen for new installs.



--
Terry Jan Reedy

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


Re: pyinstaller

2020-06-11 Thread Grant Edwards
On 2020-06-11, Chris Angelico  wrote:

> But you DO get to choose what you support.

True, for a certain value of "you".  The requirement to support
certains OSes and versions is often a business decision that is out of
the hands of the developer.  I suppose the OP could quit and stand on
the street corner with a cardboard sign:

 Please Help
   Didn't want to support Windows 7







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


Re: Syntax Help

2020-06-11 Thread Terry Reedy

On 6/11/2020 6:03 AM, John Weller wrote:

I have been able to find answers to most problems by Googling but couldn't work 
out a suitable query for this one.


That is why I and others have made the Symbols index as complete as 
possible.  If anything thinks something is missing, say so here.

--
Terry Jan Reedy

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


Fwd: python 3.8.3 fails

2020-06-11 Thread Avraham Markov
Please suggest something to fix

-- Forwarded message -
From: Avraham Markov 
Date: Thu, Jun 11, 2020 at 5:50 PM
Subject: python 3.8.3 fails
To: 


Hello, I successfully installed Python 3.8.3 (64-bit)
at Windows 10 LTSC 64 bit by python-3.8.3-amd64 installer
from https://www.python.org/downloads/windows/
Also by  python-3.8.3 installer,
but  lastly by  python-3.8.3-amd64 installer.
Then when I open powershell,

PS C:\Users\AlexJer> python
python : Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC
v.1924 64 bit (AMD64)] on win32
At line:1 char:1
+ python
+ ~~
+ CategoryInfo  : NotSpecified: (Python 3.8.3 (t...MD64)] on
win32:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

Type "help", "copyright", "credits" or "license" for more information.
>
>>

Thanks,
Avraham
-- 
https://mail.python.org/mailman/listinfo/python-list


The FaQ project - Single or Double quotes

2020-06-11 Thread Abdur-Rahmaan Janhangeer
Since the single vs double quote thread
i decided to reactivate the FaQ project.

You can view it here

https://abdur-rahmaanj.github.io/pyfaq/[list]_Single_or_double_quotes.html

The index has some some more summaries:

https://abdur-rahmaanj.github.io/pyfaq/


I auto pull the messages with some manual edits like
filtering empty mails etc

Mr Christopher maintains one for python-ideas
https://github.com/PythonCHB/PythonListsSummaries

This one is intended to have even some common questions
like where do i start etc

Kind Regards,

Abdur-Rahmaan Janhangeer
compileralchemy  | blog

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


Re: The FaQ project - Single or Double quotes

2020-06-11 Thread Abdur-Rahmaan Janhangeer
I'm still unsure whether or not to have a summary instead of just listing
the
texts

Kind Regards,

Abdur-Rahmaan Janhangeer
compileralchemy  | blog

github 
Mauritius


On Thu, Jun 11, 2020 at 10:00 PM Abdur-Rahmaan Janhangeer <
[email protected]> wrote:

> Since the single vs double quote thread
> i decided to reactivate the FaQ project.
>
> You can view it here
>
> https://abdur-rahmaanj.github.io/pyfaq/[list]_Single_or_double_quotes.html
>
> The index has some some more summaries:
>
> https://abdur-rahmaanj.github.io/pyfaq/
> 
>
> I auto pull the messages with some manual edits like
> filtering empty mails etc
>
> Mr Christopher maintains one for python-ideas
> https://github.com/PythonCHB/PythonListsSummaries
>
> This one is intended to have even some common questions
> like where do i start etc
>
> Kind Regards,
>
> Abdur-Rahmaan Janhangeer
> compileralchemy  | blog
> 
> github 
> Mauritius
>
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Fwd: python 3.8.3 fails

2020-06-11 Thread MRAB

On 2020-06-11 15:58, Avraham Markov wrote:

Please suggest something to fix

-- Forwarded message -
From: Avraham Markov 
Date: Thu, Jun 11, 2020 at 5:50 PM
Subject: python 3.8.3 fails
To: 


Hello, I successfully installed Python 3.8.3 (64-bit)
at Windows 10 LTSC 64 bit by python-3.8.3-amd64 installer
from https://www.python.org/downloads/windows/
Also by  python-3.8.3 installer,
but  lastly by  python-3.8.3-amd64 installer.
Then when I open powershell,

PS C:\Users\AlexJer> python
python : Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC
v.1924 64 bit (AMD64)] on win32
At line:1 char:1
+ python
+ ~~
 + CategoryInfo  : NotSpecified: (Python 3.8.3 (t...MD64)] on
win32:String) [], RemoteException
 + FullyQualifiedErrorId : NativeCommandError

Type "help", "copyright", "credits" or "license" for more information.




After typing "python", you have "python : " at the start of the next 
line. That's what it doesn't like. Where does that come from?

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


Re: repair modify uninstall

2020-06-11 Thread Grant Edwards
On 2020-06-11, Terry Reedy  wrote:
>
>> Indeed.  Is the file name not clear that it's an installer?
>
> No.  python-3.8.3-amd64.exe, which is typical naming for install files.
>
> I opened https://bugs.python.org/issue40948 and suggested adding
> '-setup' or '-install',

An excellent suggestion.  When I build .exe installers, I always end
the name in '-setup'.  Everybody seems to understand that, but my
audience is probably smaller and a bit more tech-savvy that that of the
Python audience.

> as well as instructions on the initial screen for existing installs,
> and, if not present, the final screen for new installs.

Thanks for filing that bug.

--
Grant



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


Typing, how come that :int is not ensuring int parameter?

2020-06-11 Thread zljubisic
Hi,

If I run this code:
class Property:

def __init__(self, var: int):
self.a: int = var

@property
def a(self):
return self.__a

@a.setter
def a(self, var: int):
if var > 0 and var % 2 == 0:
self.__a = var
else:
self.__a = 2

if __name__ == '__main__':
x = Property(1.5)
print(x.a)

I am getting 2.
How come, if I have created a class with :int in order to ensure that "a" 
property must be an integer, that I can create an instance with float (1.5)?

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


Re: Syntax Help

2020-06-11 Thread DL Neil via Python-list

On 12/06/20 12:13 AM, Terry Reedy wrote:

On 6/11/2020 6:03 AM, John Weller wrote:
I have been able to find answers to most problems by Googling but 
couldn't work out a suitable query for this one.


That is why I and others have made the Symbols index as complete as 
possible.  If anything thinks something is missing, say so here.



It is a solid contribution to the community. Thanks!
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list


Re: Typing, how come that :int is not ensuring int parameter?

2020-06-11 Thread Barry Scott



> On 11 Jun 2020, at 21:51, [email protected] wrote:
> 
> Hi,
> 
> If I run this code:
> class Property:
> 
>def __init__(self, var: int):
>self.a: int = var
> 
>@property
>def a(self):
>return self.__a
> 
>@a.setter
>def a(self, var: int):
>if var > 0 and var % 2 == 0:
>self.__a = var
>else:
>self.__a = 2
> 
> if __name__ == '__main__':
>x = Property(1.5)
>print(x.a)
> 
> I am getting 2.
> How come, if I have created a class with :int in order to ensure that "a" 
> property must be an integer, that I can create an instance with float (1.5)?

The : int is a type *hint* that isn not enforced by python.

If you use a checker program like  mypy it will use the type hints and report 
problems to your.

You can install myy with pip.

$ python3 -m pip install mypy

I put your code in a.py and then checked it:

$ /Library/Frameworks/Python.framework/Versions/3.8/bin/mypy a.py
a.py:18: error: Argument 1 to "Property" has incompatible type "float"; 
expected "int"
Found 1 error in 1 file (checked 1 source file)

As you can see it found the problem.

Barry



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

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


Re: Typing, how come that :int is not ensuring int parameter?

2020-06-11 Thread DL Neil via Python-list

On 12/06/20 8:51 AM, [email protected] wrote:

Hi,

If I run this code:
class Property:

 def __init__(self, var: int):
 self.a: int = var

 @property
 def a(self):
 return self.__a

 @a.setter
 def a(self, var: int):
 if var > 0 and var % 2 == 0:
 self.__a = var
 else:
 self.__a = 2

if __name__ == '__main__':
 x = Property(1.5)
 print(x.a)

I am getting 2.
How come, if I have created a class with :int in order to ensure that "a" 
property must be an integer, that I can create an instance with float (1.5)?



You may be confusing Python with some other programming language 
previously-learned. We need to 're-wire' the way your mind is working 
because whilst you are not-wrong for that-language, you are not-right 
for Python.


So, I'm not going to answer your question directly, but to offer you a 
learning-path:-


What did mypy (or...) say, when you ran tests against the source-code?
(Typing is no use without such a testing regime!)

Have you read the docs for Typing?
- and for extra bonus-points, the numerous PEPs (proposals and accepted) 
related to how Python implements Typing?
(that done, you will likely answer your own question, and accumulate 
some useful learning about Python - at both the practical and 
philosophical/idiomatic levels)

--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list


Re: Typing, how come that :int is not ensuring int parameter?

2020-06-11 Thread zljubisic
OK, as I can see nothing is enforced but I can use mypy and tests for the 
purpose.

As I am using pycharm, looks like I need a plugin for mypy.
There are two of them out there:
non official: https://plugins.jetbrains.com/plugin/11086-mypy
and official: https://plugins.jetbrains.com/plugin/13348-mypy-official-

Do you have any experience with any of these plugins?
Please share your opinion.

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


Re: Typing, how come that :int is not ensuring int parameter?

2020-06-11 Thread DL Neil via Python-list

On 12/06/20 9:32 AM, [email protected] wrote:

OK, as I can see nothing is enforced but I can use mypy and tests for the 
purpose.


Exactly! Well done - Python uses 'duck typing' and thus when the Typing 
module was added, it became an option. As mentioned elsewhere, it 
provides "hints" at 'compile time'.




As I am using pycharm, looks like I need a plugin for mypy.
There are two of them out there:
non official: https://plugins.jetbrains.com/plugin/11086-mypy
and official: https://plugins.jetbrains.com/plugin/13348-mypy-official-

Do you have any experience with any of these plugins?
Please share your opinion.


I don't have a competent opinion for the current Pycharm, but hope that 
others will answer.


TBH I'd be surprised if it doesn't come 'baked in'.
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list


Friday Finking: Beyond implementing Unicode

2020-06-11 Thread DL Neil via Python-list
Unicode has given us access to a wealth of mathematical and other 
symbols. Hardware and soft-/firm-ware flexibility enable us to move 
beyond and develop new 'standards'. Do we have opportunities to make 
computer programming more math-familiar and/or more 
logically-expressive, and thus easier to learn and practice? Could we 
develop Python to take advantage of these opportunities?


TLDR;? Skip to the last paragraphs/block...


Back in the ?good, old days, small eight-bit computers advanced beyond 
many of their predecessors, because we could begin to encode characters 
and "string" them together - as well as computing with numbers.


Initially, we used 7-bit ASCII code (on smaller machines - whereas IBM 
mainframes used EBCDIC, etc). ASCII gave us both upper- and lower-case 
letters, digits, special characters, and control codes. Later this was 
extended to 8-bits as "Code Page 1252", whereby MSFT added more special 
characters, superscripts, fractions, currency symbols, and many ordinary 
and combinatorial letters used in other "Romance languages" (European).


Latterly, we have implemented Unicode, which seeks to include all of the 
world's scripts and languages and may employ multiple bytes per 
'character'. (simplification)


A massive effort went into Python (well done PyDevs!), and the adoption 
of Unicode in-particular, made Python 3 a less-than seamless upgrade 
from Python 2. However, 'standing upon the shoulders of giants', we can 
now take advantage of Unicode both as an encoding for data files, and 
within the code of our own Python applications. We don't often see 
examples of the latter, eg


>>> π = 3.14159
>>> r = 1
>>> circumference = 2 * π * r
>>> print( circumference )
6.28318

>>> Empfänger = "dn"# Addressee/recipient
>>> Straßenname = "Lansstraße"  # Street name
>>> Immobilien_Hausnummer = "42"# Building/house number

(whilst the above is valid German, I have 'cheated' in order to add 
suitable characters - for the purposes of illustration to 
EN-monolinguals - apologies for any upset to your sense of "ordnung" - 
please consider the meaning of "42" to restore yourself...)



However, we are still shackled to an history where an asterisk (*) is 
used as the multiplication symbol, because "x" was an ASCII letter. 
Similarly, we have the ** for an exponential operator, because we didn't 
have superscripts (per algebraic expression). Worse, we made "=" mean: 
'use the identifier to the left to represent the right-hand-side 
value-result', ie "Let" or "Set" - this despite left-to-right expression 
making it more logical to say: 'transfer this (left-side) value to the 
part on the right', ie 'give all of the chocolate cake to me', as well 
as 'robbing' us of the symbol's usual meaning of "equality" (in Python 
that had to become the "==" symbol). Don't let me get started on "!" 
(exclamation/surprise!) meaning "not"!



There is/was a language called "APL" (and yes the acronym means "A 
Programming Language", and yes it started the craze, through "B" (and 
BCPL), and yes, that brought us "C" - which you are more likely to have 
heard about - and yes then there were DataSci folk, presumably more 
numerate than literate, who thought the next letter to be "R". So, sad!?).


The point of mentioning APL? It allowed the likes of:

AREA←PI×RADIUS⋆2

APL was hopelessly keyboard-unfriendly, requiring multiple key-presses 
or 'over-typing' to produce those arithmetic-operator symbols - 
remember, much of this was on mainframe 3270-style terminals, although 
later PC-implementations have existed (I can't comment on how 'active' 
any community might be). The over-typing was necessary to encode/produce 
the APL symbols which don't exist on a standard typewriter keyboard. Ugh!


I'm glad to have limited my APL-exposure to only reading about it during 
a 'Programming Languages' topic! (If you are 'into' functional 
programming you may like to explore further)



Turning now to "hardware" and the subtle 'limitations' it imposes upon us.

PC-users (see also Apple, and glass-keyboard users) have become wedded 
to the 'standard' 101~105-key "QWERTY"/"AZERTY"/etc keyboards (again, 
restricting myself to European languages - with due apologies). Yet, 
there exists a variety of ways to implement the 'standard', as well as a 
range of other keyboard layouts. Plus we have folk experimenting with 
SBCs, eg Raspberry Pi; learning how to interpret low-level hardware, ie 
key-presses and keyboard "arrays", and developing/innovating all-manner 
of special interfaces and other tools.



Back to Python, or is it 'forward to Python':

In the same way that we often add a "numeric key-pad" to the standard 
'typing' alphanumeric keyboard, could we add another key-pad or row of 
keys? Might such give us the opportunity to start employing other, and 
more logical symbols for programming, eg directional arrows, a modifier 
key to enable subscripts and another for superscripts, Greek/Math 
symbols to