Re: Python curses

2023-01-10 Thread Nate Bargmann
* On 2023 10 Jan 13:38 -0600, pa...@quillandmouse.com wrote:
> It may be argued that I shouldn't do the import this way. However, I
> prefer to have "curses." in front of things imported. It makes the link
> explicit, and serves to remind me of what's actually going on, when I
> revisit the code in five years.

I agree with your reasoning.  I never liked the "from foo import *"
syntax.  OTOH, it does have its use when wanting to import a subset of a
module.  For example, "from foo import bar" that would make the "bar"
name a part of the main namespace..

Then there is the "import fooBarBaz as fBB" syntax which is useful to
shorten long module names, as I understand it (the name after the "as"
can be any legal Python identifier).  There are some modules with
submodules that make the long name prefix onerous.

As I've poked around the Web over the years its clear that some like the
simplicity of "from foo import *".  I think doing that as an example is
a mistake as it hides the classes, methods, variables module prefix.
Just be aware that when you find an example that imports in this manner
that there is an implicit module name prefix but it isn't used since the
import command made the module's namespace a part of the program's main
namespace.

That's how I understand it, at least.

- Nate

-- 
"The optimist proclaims that we live in the best of all
possible worlds.  The pessimist fears this is true."
Web: https://www.n0nb.us
Projects: https://github.com/N0NB
GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819



signature.asc
Description: PGP signature


Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 13:17:10 -0600
David Wright  wrote:

> On Tue 10 Jan 2023 at 11:13:55 (-0500), pa...@quillandmouse.com wrote:
> > On Tue, 10 Jan 2023 09:31:26 -0600 > David Wright
> >  wrote:
> 
> > > You keep mentioning "the docs" without saying which docs, so a
> > > reference might be helpful.
> > 
> > Sorry. I'm using the following (and related pages):
> > 
> > https://docs.python.org/3/library/curses.html
> > 
> > These appear to be the most authoritative.
> 
> Correct.
> 
> > > On Tue 10 Jan 2023 at 09:01:17 (-0500), pa...@quillandmouse.com
> > > wrote:
> > > > On Tue, 10 Jan 2023 08:34:05 -0500 Greg Wooledge
> > > >  wrote:
> > > > > On Tue, Jan 10, 2023 at 08:24:11AM -0500,
> > > > > pa...@quillandmouse.com wrote:
> > > > > > What you wrote triggered something. I'd been following the
> > > > > > Python curses docs, which tell you to write, for example,
> > > > > > "A_REVERSE".
> 
> No, they don't.
> 
> > > > > > And Python was throwing exceptions. But based on
> > > > > > what you wrote, I substituted "curses.A_REVERSE", which
> > > > > > works.
> > > > > > 
> > > > > > Problem solved... for now.
> > > 
> > > Exactly: just for now.
> > > 
> > > > > I'm a Python novice, but I believe what you're seeing is the
> > > > > difference between
> > > > 
> > > > No, here's what happened. I was going along, and I used
> > > > "A_REVERSE" in my code, according to the online docs.
> > > > Exception, didn't recognize the name. That didn't make sense;
> > > > this attribute is basic to curses.
> 
> Exactly, it's an attribute, as shown by the heading of the table
> in which you found A_REVERSE. And that attribute is a part of
> the curses module, and must be qualified with curses.A_REVERSE
> unless you import A_REVERSE (or all, *) into your namespace.
> 

Correct. Actually, this should have been obvious to me if I'd been
thinking clearly. Doing a "import curses" shouldn't make bare library
symbols available in your code. It only makes sense you'd need to
address them with a prefix.

It may be argued that I shouldn't do the import this way. However, I
prefer to have "curses." in front of things imported. It makes the link
explicit, and serves to remind me of what's actually going on, when I
revisit the code in five years.

Paul

-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread David Wright
On Tue 10 Jan 2023 at 11:13:55 (-0500), pa...@quillandmouse.com wrote:
> On Tue, 10 Jan 2023 09:31:26 -0600 > David Wright  
> wrote:

> > You keep mentioning "the docs" without saying which docs, so a
> > reference might be helpful.
> 
> Sorry. I'm using the following (and related pages):
> 
> https://docs.python.org/3/library/curses.html
> 
> These appear to be the most authoritative.

Correct.

> > On Tue 10 Jan 2023 at 09:01:17 (-0500), pa...@quillandmouse.com wrote:
> > > On Tue, 10 Jan 2023 08:34:05 -0500 Greg Wooledge  
> > > wrote:
> > > > On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com wrote:
> > > > > What you wrote triggered something. I'd been following the
> > > > > Python curses docs, which tell you to write, for example,
> > > > > "A_REVERSE".

No, they don't.

> > > > > And Python was throwing exceptions. But based on
> > > > > what you wrote, I substituted "curses.A_REVERSE", which works.
> > > > > 
> > > > > Problem solved... for now.
> > 
> > Exactly: just for now.
> > 
> > > > I'm a Python novice, but I believe what you're seeing is the
> > > > difference between
> > > 
> > > No, here's what happened. I was going along, and I used "A_REVERSE"
> > > in my code, according to the online docs. Exception, didn't
> > > recognize the name. That didn't make sense; this attribute is basic
> > > to curses.

Exactly, it's an attribute, as shown by the heading of the table
in which you found A_REVERSE. And that attribute is a part of
the curses module, and must be qualified with curses.A_REVERSE
unless you import A_REVERSE (or all, *) into your namespace.

What has misled you is that all the /tables/ in the python
documentation have just the last component's name in column one,
with its interpretation in column two. If you want to see why,
glance at a page like
  file:///usr/share/doc/python3/html/library/collections.abc.html
for example. The first ABC item in the table is "Container",
but the running text below shows:

  class collections.abc.Container
 ABC for classes that provide the __contains__() method.

The table would be unmanageable if most of its width was taken
up with repetitions of:

  class collections.abc.…   …   …   …
  class collections.abc.…   …   …   …
  class collections.abc.…   …   …   …
  class collections.abc.…   …   …   …
  class collections.abc.…   …   …   …
  class collections.abc.…   …   …   …

Cheers,
David.


Re: Python curses

2023-01-10 Thread Curt
On 2023-01-10,   wrote:
>
> Follow-up question, in case you know this too: apparently, when you
> purchase a Kindle book and read it via the Kindle app on your Android
> phone, the document doesn't exist on the phone itself. I've

https://pennbookcenter.com/where-are-kindle-books-stored-on-android/

Just one of the multiple if not myriad pages available on the subject
via a search engine.



Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 09:31:26 -0600
David Wright  wrote:

> On Tue 10 Jan 2023 at 09:01:17 (-0500), pa...@quillandmouse.com wrote:
> > On Tue, 10 Jan 2023 08:34:05 -0500 Greg Wooledge
> >  wrote:
> > > On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com
> > > wrote:
> > > > What you wrote triggered something. I'd been following the
> > > > Python curses docs, which tell you to write, for example,
> > > > "A_REVERSE". And Python was throwing exceptions. But based on
> > > > what you wrote, I substituted "curses.A_REVERSE", which works.
> > > > 
> > > > Problem solved... for now.
> 
> Exactly: just for now.
> 
> > > I'm a Python novice, but I believe what you're seeing is the
> > > difference between
> > 
> > No, here's what happened. I was going along, and I used "A_REVERSE"
> > in my code, according to the online docs. Exception, didn't
> > recognize the name. That didn't make sense; this attribute is basic
> > to curses. So I started investigated versions of Python, ncurses,
> > Python curses, etc.
> > 
> > But as it turns out, instead of typing "A_REVERSE", I should have
> > ignored the docs and typed "curses.A_REVERSE". That worked, and
> > obviated the whole versioning problem.
> 
> You keep mentioning "the docs" without saying which docs, so a
> reference might be helpful.

Sorry. I'm using the following (and related pages):

https://docs.python.org/3/library/curses.html

These appear to be the most authoritative.

Paul

-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread Dan Ritter
pa...@quillandmouse.com wrote: 
> On Tue, 10 Jan 2023 08:11:28 -0500
> Dan Ritter  wrote:
> 
> > The Debian package calibre contains:
> > 
> > - an X11 application which is an all-singing, all-dancing
> > library manager and ebook reader
> > 
> > - a set of CLI-usable conversion utilities, most importantly
> > 'ebook-convert', which figures out the input format
> > automatically and exports to a large number of output formats,
> > most usefully EPUB and PDF.
> > 
> 
> Follow-up question, in case you know this too: apparently, when you
> purchase a Kindle book and read it via the Kindle app on your Android
> phone, the document doesn't exist on the phone itself. I've
> plugged my phone into my PC and examined every directory under Android
> and the SIM card, and I can't find a trace of the Kindle book I
> purchased.
> 
> I've installed Calibre, but without having the Kindle file in hand, I
> can't convert it. So... any idea how to actually pry the Kindle file
> out of Amazon's greedy hands, so I can point Calibre at it?

https://www.epubor.com/the-ultimate-guide-to-download-kindle-books.html

appears to be up-to-date. I don't actually use Amazon for media
purchases/rentals, myself.

-dsr-



Re: Python curses

2023-01-10 Thread David Wright
On Tue 10 Jan 2023 at 09:01:17 (-0500), pa...@quillandmouse.com wrote:
> On Tue, 10 Jan 2023 08:34:05 -0500 Greg Wooledge  wrote:
> > On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com wrote:
> > > What you wrote triggered something. I'd been following the Python
> > > curses docs, which tell you to write, for example, "A_REVERSE". And
> > > Python was throwing exceptions. But based on what you wrote, I
> > > substituted "curses.A_REVERSE", which works.
> > > 
> > > Problem solved... for now.

Exactly: just for now.

> > I'm a Python novice, but I believe what you're seeing is the
> > difference between
> 
> No, here's what happened. I was going along, and I used "A_REVERSE" in
> my code, according to the online docs. Exception, didn't recognize the
> name. That didn't make sense; this attribute is basic to curses. So I
> started investigated versions of Python, ncurses, Python curses, etc.
> 
> But as it turns out, instead of typing "A_REVERSE", I should have
> ignored the docs and typed "curses.A_REVERSE". That worked, and
> obviated the whole versioning problem.

You keep mentioning "the docs" without saying which docs, so a
reference might be helpful. I'm finding that most online docs
I hit by googling   python curses docs   use examples that:

  import curses

thereby only importing the module's name into the local namespace,
or else import just a selection of attributes into the local
namespace, as in:

  from curses import wrapper

To fully answer your question, we need to see how your docs had
imported curses before using its attributes without qualification.

It's difficult to conceive of doing much python programming without
understanding the distinction being made here by Greg and tomas.
You should read "The import statement" section in the Python
Language Reference:
file:///usr/share/doc/python3/html/reference/simple_stmts.html#the-import-statement

BTW in the many years I used python seriously as part of my job,
I never used "from mod import *" except where I'd written the
module concerned, and had total control over the few, unique,
attribute names that it defined.

Cheers,
David.



Re: Python curses

2023-01-10 Thread tomas
On Tue, Jan 10, 2023 at 02:48:26PM +, Tixy wrote:

[...]

> I doubt that's possible because I assume these things are protected
> with DRM to stop people from copying them, or escaping the clutches of
> Big Corp who want to monitor what you do in order to sell you more
> stuff.

I have yet to see a DRM which can't be circumvented. Granted, with
"trusted computing" we are inching closer, but that thing is still
full of holes.

Cheers
-- 
t


signature.asc
Description: PGP signature


Re: Python curses

2023-01-10 Thread Tixy
On Tue, 2023-01-10 at 09:18 -0500, pa...@quillandmouse.com wrote:
> Follow-up question, in case you know this too: apparently, when you
> purchase a Kindle book and read it via the Kindle app on your Android
> phone, the document doesn't exist on the phone itself. I've
> plugged my phone into my PC and examined every directory under Android
> and the SIM card, and I can't find a trace of the Kindle book I
> purchased.

Because you didn't purchase it. You paid for the right to read it
whenever you want, until such time as Amazon decided to shut down the
Kindle service that is. Or it decides you shouldn't have been sold it
and deletes it. [1] That's how digital 'purchases' work.

> 
> I've installed Calibre, but without having the Kindle file in hand, I
> can't convert it. So... any idea how to actually pry the Kindle file
> out of Amazon's greedy hands, so I can point Calibre at it?

I doubt that's possible because I assume these things are protected
with DRM to stop people from copying them, or escaping the clutches of
Big Corp who want to monitor what you do in order to sell you more
stuff.

[1] https://www.theregister.com/2009/07/18/amazon_removes_1984_from_kindle/

-- 
Tixy



Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 08:11:28 -0500
Dan Ritter  wrote:

> pa...@quillandmouse.com wrote: 
> > On Tue, 10 Jan 2023 21:29:31 +1100
> > David  wrote:
> > 
> > > On Tue, 10 Jan 2023 at 15:04,  wrote:
> > > >
> > > > I'm trying to write some code in Python's curses module.
> > > 
> > > Hi,
> > > 
> > > This kindle/paperback book [1][2] might also be of interest.
> > > 
> > 
> > Don't like Amazon's vendor lock with Kindle. Do you know of a
> > simple, accessible way of converting a Kindle book to something I
> > can read on my PC?
> 
> The Debian package calibre contains:
> 
> - an X11 application which is an all-singing, all-dancing
> library manager and ebook reader
> 
> - a set of CLI-usable conversion utilities, most importantly
> 'ebook-convert', which figures out the input format
> automatically and exports to a large number of output formats,
> most usefully EPUB and PDF.
> 

Follow-up question, in case you know this too: apparently, when you
purchase a Kindle book and read it via the Kindle app on your Android
phone, the document doesn't exist on the phone itself. I've
plugged my phone into my PC and examined every directory under Android
and the SIM card, and I can't find a trace of the Kindle book I
purchased.

I've installed Calibre, but without having the Kindle file in hand, I
can't convert it. So... any idea how to actually pry the Kindle file
out of Amazon's greedy hands, so I can point Calibre at it?

Paul



-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread tomas
On Tue, Jan 10, 2023 at 09:01:17AM -0500, pa...@quillandmouse.com wrote:
> On Tue, 10 Jan 2023 08:34:05 -0500
> Greg Wooledge  wrote:
> 
> > On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com
> > wrote:
> > > What you wrote triggered something. I'd been following the Python
> > > curses docs, which tell you to write, for example, "A_REVERSE". And
> > > Python was throwing exceptions. But based on what you wrote, I
> > > substituted "curses.A_REVERSE", which works.
> > > 
> > > Problem solved... for now.
> > 
> > I'm a Python novice, but I believe what you're seeing is the
> > difference between
> 
> No, here's what happened. I was going along, and I used "A_REVERSE" in
> my code, according to the online docs. Exception, didn't recognize the
> name. That didn't make sense; this attribute is basic to curses. So I
> started investigated versions of Python, ncurses, Python curses, etc.
> 
> But as it turns out, instead of typing "A_REVERSE", I should have
> ignored the docs and typed "curses.A_REVERSE". That worked, and
> obviated the whole versioning problem.

Greg is still right, though:

If you say "import curses", then you have to say "curses.A_REVERSE"
later on. If you say "from curses import *", then it's "A_REVERSE".

The difference between importing a package and importing all of
the packages's symbols.

What you want to do depends on preferences, taste, name collissions
and things.

Cheers
-- 
t


signature.asc
Description: PGP signature


Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 08:34:05 -0500
Greg Wooledge  wrote:

> On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com
> wrote:
> > What you wrote triggered something. I'd been following the Python
> > curses docs, which tell you to write, for example, "A_REVERSE". And
> > Python was throwing exceptions. But based on what you wrote, I
> > substituted "curses.A_REVERSE", which works.
> > 
> > Problem solved... for now.
> 
> I'm a Python novice, but I believe what you're seeing is the
> difference between

No, here's what happened. I was going along, and I used "A_REVERSE" in
my code, according to the online docs. Exception, didn't recognize the
name. That didn't make sense; this attribute is basic to curses. So I
started investigated versions of Python, ncurses, Python curses, etc.

But as it turns out, instead of typing "A_REVERSE", I should have
ignored the docs and typed "curses.A_REVERSE". That worked, and
obviated the whole versioning problem.

Paul

-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread Greg Wooledge
On Tue, Jan 10, 2023 at 08:24:11AM -0500, pa...@quillandmouse.com wrote:
> What you wrote triggered something. I'd been following the Python
> curses docs, which tell you to write, for example, "A_REVERSE". And
> Python was throwing exceptions. But based on what you wrote, I
> substituted "curses.A_REVERSE", which works.
> 
> Problem solved... for now.

I'm a Python novice, but I believe what you're seeing is the difference
between

import curses

and

from curses import *

Compare and contrast:

unicorn:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.sub('a*', '', 'aardvark')
'rdvrk'

unicorn:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from re import *
>>> sub('a*', '', 'aardvark')
'rdvrk'



Re: Python curses

2023-01-10 Thread Dan Ritter
pa...@quillandmouse.com wrote: 
> On Tue, 10 Jan 2023 21:29:31 +1100
> David  wrote:
> 
> > On Tue, 10 Jan 2023 at 15:04,  wrote:
> > >
> > > I'm trying to write some code in Python's curses module.
> > 
> > Hi,
> > 
> > This kindle/paperback book [1][2] might also be of interest.
> > 
> 
> Don't like Amazon's vendor lock with Kindle. Do you know of a simple,
> accessible way of converting a Kindle book to something I can read on
> my PC?

The Debian package calibre contains:

- an X11 application which is an all-singing, all-dancing
library manager and ebook reader

- a set of CLI-usable conversion utilities, most importantly
'ebook-convert', which figures out the input format
automatically and exports to a large number of output formats,
most usefully EPUB and PDF.

-dsr-



Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 03:21:11 -0600
Nate Bargmann  wrote:

> * On 2023 09 Jan 22:05 -0600, pa...@quillandmouse.com wrote:
> > Folks:
> 
> I'm not python curses expert, but is what I found.
> 
> > I'm trying to write some code in Python's curses module. I've run
> > into common curses items like A_NORMAL which don't exist. When I do
> > a print(curses.version), it shows "b 2.2". This tells me that the
> > Debian (testing) version of python curses is version 2.2. The
> > documentation for python curses at docs.python.org mentions
> > versions up to 3.10.
> 
> Presumably you're running Bullseye as am I.  Here is what I show:

I'm actually on testing. The Python version is 3.10.x

> 
> Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
> [GCC 10.2.1 20210110] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import curses
> >>> print(curses.version)
> b'2.2'
> >>> dir()
> ['__annotations__', '__builtins__', '__doc__', '__loader__',
> '__name__', '__package__', '__spec__', 'curses']
> >>> dir(curses)
> [...(snip lots of stuff), 'A_NORMAL', (snip even more stuff)]
> 
> >>> curses.A_NORMAL
> 0
> >>> curses.A_PROTECT
> 16777216
> >>> curses.A_BOLD
> 2097152
> >>> curses.A_COLOR
> 65280
> 
> Do you get similar values for those constants?

What you wrote triggered something. I'd been following the Python
curses docs, which tell you to write, for example, "A_REVERSE". And
Python was throwing exceptions. But based on what you wrote, I
substituted "curses.A_REVERSE", which works.

Problem solved... for now.

Paul

-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread paulf
On Tue, 10 Jan 2023 21:29:31 +1100
David  wrote:

> On Tue, 10 Jan 2023 at 15:04,  wrote:
> >
> > I'm trying to write some code in Python's curses module.
> 
> Hi,
> 
> This kindle/paperback book [1][2] might also be of interest.
> 

Don't like Amazon's vendor lock with Kindle. Do you know of a simple,
accessible way of converting a Kindle book to something I can read on
my PC?

[snip]
 
> The author is a moderator of the python-tutor mailing list [4], and
> very helpful on there, so that also might be a good place to ask
> any questions you might have.

Thanks. I'm principally a PHP programmer, and several things about
Python irk me. So that help might be pretty useful.

Paul

-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



Re: Python curses

2023-01-10 Thread David
On Tue, 10 Jan 2023 at 15:04,  wrote:
>
> I'm trying to write some code in Python's curses module.

Hi,

This kindle/paperback book [1][2] might also be of interest.

Don't be discouraged by "amazon.com" or "book", the price is very low
(showing $1.50 -- $6.00) as explained here [3].

Disclaimer: I have not read it, but if I was going to do anything
in curses with Python then I would start by reading it.

The author is a moderator of the python-tutor mailing list [4], and
very helpful on there, so that also might be a good place to ask
any questions you might have.

[1] 
https://www.amazon.com/Programming-curses-Python-Alan-Gauld-ebook/dp/B091B85B77
[2] https://mail.python.org/pipermail/tutor/2021-March/118153.html
[3] https://mail.python.org/pipermail/tutor/2021-March/118143.html
[4] https://mail.python.org/mailman/listinfo/tutor



Re: Python curses

2023-01-10 Thread Nate Bargmann
* On 2023 09 Jan 22:05 -0600, pa...@quillandmouse.com wrote:
> Folks:

I'm not python curses expert, but is what I found.

> I'm trying to write some code in Python's curses module. I've run into
> common curses items like A_NORMAL which don't exist. When I do a
> print(curses.version), it shows "b 2.2". This tells me that the Debian
> (testing) version of python curses is version 2.2. The documentation
> for python curses at docs.python.org mentions versions up to 3.10.

Presumably you're running Bullseye as am I.  Here is what I show:

Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import curses
>>> print(curses.version)
b'2.2'
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', 
'__package__', '__spec__', 'curses']
>>> dir(curses)
[...(snip lots of stuff), 'A_NORMAL', (snip even more stuff)]

>>> curses.A_NORMAL
0
>>> curses.A_PROTECT
16777216
>>> curses.A_BOLD
2097152
>>> curses.A_COLOR
65280

Do you get similar values for those constants?

> Is it really possible that the latest version of Python in Debian
> testing is linked to (or however it works) the 2.2 version of Python
> curses?

Yes.  I'm not familiar at all with the versioning of such modules.
Perhaps the Python folks have decided to normalize the versions of
modules with the main interpreter version resulting in an apparent
version jump.

The curses module should be a rather old and stable module so I would
expect it to be fully functional and quite well debugged.

> If someone has insights here, I'd be grateful.

Looking at /usr/include/curses.h on Bullseye at line 1059 it can be seen
how ncurses defines A_NORMAL to be 0.

- Nate

-- 
"The optimist proclaims that we live in the best of all
possible worlds.  The pessimist fears this is true."
Web: https://www.n0nb.us
Projects: https://github.com/N0NB
GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819



signature.asc
Description: PGP signature