Re: Ensure unwanted names removed in class definition

2015-08-13 Thread Peter Otten
Ben Finney wrote:

> Peter Otten <__pete...@web.de> writes:
> 
>> Ben Finney wrote:
>>
>> > Peter Otten <__pete...@web.de> writes:
>> > 
>> > That's an unexpected inconsistency between list comprehensions
>> > versus generator expressions, then. Is that documented explicitly in
>> > the Python 2 documentation?
>>
>> https://docs.python.org/2.4/whatsnew/node4.html
> 
> Or
> https://docs.python.org/2/whatsnew/2.4.html#pep-289-generator-expressions>.
> 
> Also in the PEP that introduces generator expressions, PEP 289:
> 
> List comprehensions also "leak" their loop variable into the
> surrounding scope. This will also change in Python 3.0, so that the
> semantic definition of a list comprehension in Python 3.0 will be
> equivalent to list().
> 
> https://www.python.org/dev/peps/pep-0289/#the-details>
> 
> Thanks for seeking the answer. Can you describe an improvement to
> https://docs.python.org/2/reference/expressions.html#list-displays>
> that makes clear this unexpected, deprecated behaviour which is only in
> Python 2?
> 

A sentence like that in the PEP would help, but I think the main problem is 
that list comprehensions and lists are subsumed under list displays. 
>From a user perspective

[f(x) for x in y]

has more in common with {x: f(x) for x in y} than with [x, y, z].

I think it would be great if list comprehensions could be moved in a 
separate paragraph or into

5.2.5 Displays for [lists,] sets and dictionaries

with a note

For backwards compatibility list comprehensions leak their loop variables 
into the surrounding scope. Set and dictionary displays do not leak.

I don't know if such a modification is feasible; I'm definitely no "language 
lawyer". 

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


Re: How to model government organization hierarchies so that the list can expand and compress

2015-08-13 Thread Frank Millman
"Alex Glaros"  wrote in message 
news:b3c1e2da-9f72-420a-8b68-288dddf9f...@googlegroups.com...


It's like the desktop folder/directory model where you can create 
unlimited folders and put folders within other folders. Instead of 
folders, I want to use government organizations.


Example: Let user create agency names: Air Force, Marines, Navy, Army. 
Then let them create an umbrella collection called "Pentagon", and let 
users drag Air Force, Marines, Navy, etc. into the umbrella collection.


User may wish to add smaller sub-sets of Army, such as "Army Jeep Repair 
Services"


User may also want to add a new collection "Office of the President" and 
put OMB and Pentagon under that as equals.


What would the data model look like for this?  If I have a field: 
next_higher_level_parent that lets children records keep track of parent 
record, it's hard for me to imagine anything but an inefficient bubble 
sort to produce a hierarchical organizational list. Am using Postgres, not 
graph database.


Before you read my response, make sure that you read Laura's. Are you 100% 
sure that a hierarchical model is the correct solution for your requirement?


It is not clear whether you want the data model to be expressed in Python or 
in the database. The following thoughts assume the latter.


There are two classic approaches to using a relational database for this - 
'adjacency lists' and 'nested sets'. Google for both and you will find many 
interesting articles.


Nested sets were invented to overcome a problem with building complex 
queries on adjacency lists, but this problem has been overcome in recent 
years by the introduction of recursive queries, which most modern databases 
support. For PostgreSQL, read this page of the docs - 
http://www.postgresql.org/docs/9.1/static/queries-with.html . Because 
adjacency lists are easier to manipulate, and your comments above imply that 
this is a major requirement, I think that this is the way to go.


As an aside, I mentioned in a recent post that I had upgraded the version of 
sqlite3 shipped with python3.4 to the most recent version. The reason was 
that the older version did not support recursive queries properly, but the 
latest version does.


Regarding allowing your users to manipulate the structure, I think this is a 
function of the gui that you choose. Most gui toolkits will have a 'tree' 
widget, and hopefully make it easy to implement 'drag-and-drop' between the 
nodes. Then your task becomes one of getting the data out of the database 
and into the gui, and back again. Once you get used to the concepts, it is 
not that difficult.


HTH

Frank Millman


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


Re: Is Django the way to go for a newbie?

2015-08-13 Thread Laura Creighton
In a message of Thu, 13 Aug 2015 18:30:17 -0700, Rustom Mody writes:
>
>I dont know Django. Used RoR some years ago and it was frightening.
>And Ruby is not bad. So I assume Rails is.
>I just assumed -- maybe ignorantly -- that Django and RoR are generically
>similar systems
>

It's web2py that is the Python web framework that was inspired and
influenced by RoR.  And they are about as different as can be and
still both be Full Stack Frameworks, to the extent that most people
(at least all the ones I know) who really like one framework also
really dislike the other.

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


Re: Is Django the way to go for a newbie?

2015-08-13 Thread Michael Torrie
On 08/13/2015 07:30 PM, Rustom Mody wrote:
> Nothing specifically Django I am getting at.
> Just that learning
> - a templating engine -- eg Cheetah, Mako
> - an ORM eg SQLAlchemy
> - etc
> 
> is more fun than learning to chant the right mantras that a framework
> demands without any clue of what/why/how

Indeed.  It's this very thing that you speak of that makes web
development very discouraging to me because it does demand knowledge of
quite a few separate but interconnected domains and their specific
languages.  In my original post I had forgotten to mention ORM, though I
did mention SQL.  Adding abstraction in theory makes things easier.  In
practice it's often kind of like the old saying about solving a problem
using regular expressions.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Mock object but also assert method calls?

2015-08-13 Thread Steven D'Aprano
On Fri, 14 Aug 2015 07:21 am, Ben Finney wrote:

>> If find following totally different to the normal API which
>> is provided by the mock library:
>>
>> assert call().test2("hello") in mocked_objects.mock_calls
> 
> The ‘assert’ statement is a crude tool, which knows little about the
> intent of your assertion.

I agree with Ben here. Despite the popularity of "nose" (I think it is
nose?) which uses `assert` for testing, I think that is a gross misuse of
the statement. It is okay to use assertions this way for quick and dirty ad
hoc testing, say at the command line, but IMO totally inappropriate for
anything more formal, like unit testing.

If for no other reason than the use of `assert` for testing makes it
impossible to test your code when running with the Python -O (optimize)
switch.

For more detail on the uses, and abuses, of `assert` see this:

http://import-that.dreamwidth.org/676.html


-- 
Steven

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


Re: Module load times

2015-08-13 Thread Chris Angelico
On Fri, Aug 14, 2015 at 12:25 PM, Joseph L. Casale
 wrote:
> Yeah that wasn't clear. The plugins are invoked in fresh interpreter processes
> and hence modules with import side effects or simply large modules can
> manifest over time.

If they're invoked in fresh processes, then you're looking at process
startup time, and I would recommend using OS-level tools to play
around with that. Unix-like systems will usually have a 'time' command
which will tell you exactly how much wall and CPU time a process took
needed; just create a system that starts up and promptly shuts down,
and then you can test iterations that way.

Of course, there are a million and one variables (disk caches, other
activity on the system, etc), but it's better than nothing.

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


RE: Module load times

2015-08-13 Thread Joseph L. Casale
> Importing is not the same as instantiation.
>
> When you import a module, the code is only read from disk and instantiated
> the first time. Then it is cached. Subsequent imports in the same Python
> session use the cached version.

I do mean imported, in the original design there were many ctype function
prototypes, the c developer had ran some tests and showed quite a bit of
time taken up just the import over 100 clean imports. I don't have his test
harness and hence why I am trying to validate the results.

> So the answer will depend on your application. If your application runs for
> a long time (relatively speaking), and imports the plugins 100s or 1000s of
> times, it should not matter. Only the first import is likely to be slow.
>
> But if the application starts up, imports the plugin, then shuts down, then
> repeats 100s or 1000s of times, that may be slow. Or if it launches
> separate processes, each of which imports the plugin.

Yeah that wasn't clear. The plugins are invoked in fresh interpreter processes
and hence modules with import side effects or simply large modules can
manifest over time.

Thanks Steven
jlc
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Module load times

2015-08-13 Thread Steven D'Aprano
On Fri, 14 Aug 2015 07:12 am, Joseph L. Casale wrote:

>> What makes you think the import might be a problem? That's a one-time
>> thing. Or is your application a command-line tool or so that needs to
>> start and terminate quickly?
> 
> The code is used within plugin points and soon to be asynchronous code
> (once  the original broken implementation is fixed) where in some cases it
> will be instantiated 100's of 1000's of times etc...

Importing is not the same as instantiation.

When you import a module, the code is only read from disk and instantiated
the first time. Then it is cached. Subsequent imports in the same Python
session use the cached version.

So the answer will depend on your application. If your application runs for
a long time (relatively speaking), and imports the plugins 100s or 1000s of
times, it should not matter. Only the first import is likely to be slow.

But if the application starts up, imports the plugin, then shuts down, then
repeats 100s or 1000s of times, that may be slow. Or if it launches
separate processes, each of which imports the plugin.

Without understanding your application, and the plugin model, it is
difficult to predict the impact of importing.


-- 
Steven

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


Re: Is Django the way to go for a newbie?

2015-08-13 Thread Chris Angelico
On Fri, Aug 14, 2015 at 11:05 AM, Michael Torrie  wrote:
> Given that until recently he thought Django was an IDE, I think calling
> Django a library is fair, as it describes to him how it relates to
> Python.  You download it and install it and it goes in site-packages
> along with all the other libraries you might install.  Of course it
> comes with utilities as well (which I mentioned).  Making the
> distinctions you are making, in this context, is probably ultimately
> going to be confusing to him at this stage of the game.  As he gets
> familiar with django I don't think he'll find this original
> simplification confusing, nor has it seemed to make this discussion a mess.
>
> As to the DSL, I'm not quite sure which part of django you're getting
> at.  Are you referring to the (optional) templating system?

My view, for what it's worth: Django is a library, but it's also a
framework. The difference isn't really that great, and most frameworks
are implemented using libraries. The "library vs framework"
distinction, from an application's standpoint, broadly one of how you
structure your code - do you write a bunch of top-level code that
calls on library functions, or do you write a bunch of functions that
the framework calls on? The distinction can blur some, too.

And as Michael says, the slight simplification isn't causing problems,
so it's really only a technical correctness issue. (Pedantry, in the
best sense of the word.) I've often explained things using
technically-incorrect language, because going into immense detail
won't help; we don't explain quantum mechanics and the nuances of
electrical engineering when we explain how an HTTP request arrives at
your app, because it doesn't matter. Saying "The system hands you a
request to process" is slightly sloppy even from a network admin's
perspective (what you actually get is a socket connection, and then
you read from that until you reckon you have the whole request, yada
yada), but it's what you most likely care about.

On Fri, Aug 14, 2015 at 11:30 AM, Rustom Mody  wrote:
> Purposive, directed lying is usually better pedagogy than legalistic 
> correctness.

Right :) Only I wouldn't call it "lying", as that term indicates an
intent to deceive. Purposeful inaccuracy, let's say.

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


Re: Is Django the way to go for a newbie?

2015-08-13 Thread Rustom Mody
On Friday, August 14, 2015 at 6:35:27 AM UTC+5:30, Michael Torrie wrote:
> On 08/10/2015 10:08 PM, Rustom Mody wrote:
> > On Tuesday, August 11, 2015 at 8:59:47 AM UTC+5:30, Michael Torrie wrote:
> >> On 08/10/2015 07:49 PM, Dwight GoldWinde wrote:
> >>> Thank you, Gary, for this new information.
> >>>
> >>> I will be looking into virtualenv and vertualenvwrapper.
> >>>
> >>> I thought that Django was an IDE. But, it seems that an IDE is one more
> >>> thing that I need that I didn¹t know I needed!?
> >>
> >> Django is a programming _library_ (also called a framework)
> > 
> > Please dont conflate library and framework.
> > Library, framework, DSL are different approaches for solving similar 
> > problems.
> > I personally tend to prefer DSL's, dislike frameworks and am neutral to 
> > libraries.
> > Which is why I would tend to start with flask + template-language + ORM
> > rather than start with a framework.
> > Others may have for very good reasons different preferences and that is 
> > fine¹.
> > 
> > But if you say equate all these, discussion becomes a mess.
> 
> Ahh. Well at least you didn't rail on me for being too lazy to
> capitalize acronyms like html.

No I am not trolling :-)

> 
> Given that until recently he thought Django was an IDE, I think calling
> Django a library is fair, as it describes to him how it relates to
> Python.  You download it and install it and it goes in site-packages
> along with all the other libraries you might install.  Of course it
> comes with utilities as well (which I mentioned).  Making the
> distinctions you are making, in this context, is probably ultimately
> going to be confusing to him at this stage of the game.  As he gets
> familiar with django I don't think he'll find this original
> simplification confusing, nor has it seemed to make this discussion a mess.
> 

True.
Purposive, directed lying is usually better pedagogy than legalistic 
correctness.

> As to the DSL, I'm not quite sure which part of django you're getting
> at.  Are you referring to the (optional) templating system?

Nothing specifically Django I am getting at.
Just that learning
- a templating engine -- eg Cheetah, Mako
- an ORM eg SQLAlchemy
- etc

is more fun than learning to chant the right mantras that a framework
demands without any clue of what/why/how


I dont know Django. Used RoR some years ago and it was frightening.
And Ruby is not bad. So I assume Rails is.
I just assumed -- maybe ignorantly -- that Django and RoR are generically
similar systems

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


Re: Is Django the way to go for a newbie?

2015-08-13 Thread Michael Torrie
On 08/10/2015 10:08 PM, Rustom Mody wrote:
> On Tuesday, August 11, 2015 at 8:59:47 AM UTC+5:30, Michael Torrie wrote:
>> On 08/10/2015 07:49 PM, Dwight GoldWinde wrote:
>>> Thank you, Gary, for this new information.
>>>
>>> I will be looking into virtualenv and vertualenvwrapper.
>>>
>>> I thought that Django was an IDE. But, it seems that an IDE is one more
>>> thing that I need that I didn¹t know I needed!?
>>
>> Django is a programming _library_ (also called a framework)
> 
> Please dont conflate library and framework.
> Library, framework, DSL are different approaches for solving similar problems.
> I personally tend to prefer DSL's, dislike frameworks and am neutral to 
> libraries.
> Which is why I would tend to start with flask + template-language + ORM
> rather than start with a framework.
> Others may have for very good reasons different preferences and that is fine¹.
> 
> But if you say equate all these, discussion becomes a mess.

Ahh. Well at least you didn't rail on me for being too lazy to
capitalize acronyms like html.

Given that until recently he thought Django was an IDE, I think calling
Django a library is fair, as it describes to him how it relates to
Python.  You download it and install it and it goes in site-packages
along with all the other libraries you might install.  Of course it
comes with utilities as well (which I mentioned).  Making the
distinctions you are making, in this context, is probably ultimately
going to be confusing to him at this stage of the game.  As he gets
familiar with django I don't think he'll find this original
simplification confusing, nor has it seemed to make this discussion a mess.

As to the DSL, I'm not quite sure which part of django you're getting
at.  Are you referring to the (optional) templating system?
-- 
https://mail.python.org/mailman/listinfo/python-list


[Back off topic] - Re: Hooking Mechanism when Entering and Leaving a Try Block

2015-08-13 Thread Michael Torrie
On 08/13/2015 12:28 AM, Sven R. Kunze wrote:
> On 12.08.2015 20:44, Sven R. Kunze wrote:
>> On 12.08.2015 18:11, Chris Angelico wrote:
>>> Sounds to me like you want some sort of AST transform, possibly in an
>>> import hook. Check out something like MacroPy for an idea of how
>>> powerful this sort of thing can be.
>>
>> Sounds like I MacroPy would enable me to basically insert a function 
>> call before and after each try: block at import time. Is that correct 
>> so far? That sounds not so bad at all.
>>
>>
>> However, if that only works due to importing it is not a solution. I 
>> need to make sure I catch all try: blocks, the current stack is in 
>> (and is about to step into).
>>
>> Ah yes, and it should work with Python 3 as well. 
> 
> Back to topic, please. :)

But we love being off topic!

Also if you change the subject line to demarcate a branch in the
discussion (and mark it as off topic), that is completely acceptable as
well.  This in fact was done eventually by Marko.  That leaves the
original part of the thread to carry on its merry way.  Of course I am
assuming you read your email using a threaded email client that shows
you the nested tree structure of the replies, instead of the really
strange 1-dimensional gmail-style conversations that lose that structure
entirely.

But I digress.  We get sidetracked rather easily around here.

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


[OT] unwritten list etiquette ate, was Re: Hooking Mechanism when Entering and Leaving a Try Block

2015-08-13 Thread Michael Torrie
On 08/13/2015 12:26 AM, Sven R. Kunze wrote:
> 
> Btw. to me, the *context is the entire post*, not just two lines.

You're a very rare person indeed. Most people seem to not read any of
the post except the first and last lines. At least posting inline shows
me they've read and understood
the portion of my email they are quoting. Many times I've emailed
someone with a few details and
queries (not too many; attention spans are short), only to get a one
sentence, top-posted reply that completely fails to come remotely close
to answering my actual question. I went back and forth with one guy
three times once, each time pleading with him to read what I wrote.

Note that I removed content that isn't relevant to my reply, thus making
it easier for others to follow this.

> I hate if people answer me on every single word I've written and try 
> to explain what've got wrong instead of trying to understand the
> message and my perspective as a whole. I find it very difficult to
> respond to such a post and I am inclined to completely start from an
> empty post.

In my experience, when a person does this (delete everything and start
from an empty post, or just say screw it and top post), he or she is
likely the one who got the wrong message and failed to understand the
message or my perspective.  Not saying you do, but in general it's this
rationale that has led to the reaction people on usenet have to top
posting.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: [Meta] How to post properly (was: Re: Hooking Mechanism when Entering and Leaving a Try Block)

2015-08-13 Thread Steven D'Aprano
On Thu, 13 Aug 2015 07:09 pm, Marko Rauhamaa wrote:

> A third rule, which I'm violating here myself, is stick to
> Python-related topics on this newsgroup.

On the sorts of places that take these sorts of fine distinctions seriously,
your post would be considered Meta rather than Off-topic. That is:

- posts about the main topic (here, that would be Python) are on-topic;

- posts about posting are meta;

- everything else is off-topic.

We have a reasonable tolerance to off-topic discussions, particularly if
they evolve naturally from an on-topic one.



-- 
Steven

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


Re: Mock object but also assert method calls?

2015-08-13 Thread Ben Finney
Thomas Lehmann via Python-list  writes:

> How about asserting that test2 of class Bar is called?

It is unusual to call class methods; do you mean a method on an
instance?

You will make a mock instance of the class, or a mock of the class; and
you'll need to know which it is.

> Of course I can do a patch for a concrete method but I was looking for
> something like:
>
> mocked_object.assert_method_called_with(name="test2", "hello")

The ‘mock’ library defaults to providing ‘MagicMock’, which is “magic”
in the sense that it automatically provides any attribute you request,
and those attributes are themselves also MagicMocks::

import unittest.mock

def test_spam_calls_foo_bar():
""" Should call the `spam` method on the specified `Foo` instance. """
mock_foo = unittest.mock.MagicMock(system_under_test.Foo)
system_under_test.spam(mock_foo)
mock_foo.spam.assert_called_with("hello")

> If find following totally different to the normal API which
> is provided by the mock library:
>
> assert call().test2("hello") in mocked_objects.mock_calls

The ‘assert’ statement is a crude tool, which knows little about the
intent of your assertion. You should be instead using the specialised
methods from ‘unittest.TestCase’ and the methods on the mock objects
themselves.

-- 
 \   “It is the mark of an educated mind to be able to entertain a |
  `\ thought without accepting it.” —Aristotle |
_o__)  |
Ben Finney

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


Re: Module load times

2015-08-13 Thread Joseph L. Casale
Hi Stefan,

> How is the DLL binding implemented? Using "ctypes"? Or something else?

It is through ctypes.

> Obviously, instantiating a large ctypes wrapper will take some time. A
> binary module would certainly be quicker here, both in terms of import time
> and execution time. Since you're generating the code anyway, generating
> Cython code instead shouldn't be difficult but would certainly yield faster
> code.

True, I was using XSLT to auto generate the module. I will however explore this.

> What makes you think the import might be a problem? That's a one-time
> thing. Or is your application a command-line tool or so that needs to start
> and terminate quickly?

The code is used within plugin points and soon to be asynchronous code
(once  the original broken implementation is fixed) where in some cases it
will be instantiated 100's of 1000's of times etc...

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


Re: How to model government organization hierarchies so that the list can expand and compress

2015-08-13 Thread Laura Creighton
Figure out, right now, what you want to do when you find a government
agency that has 2 masters and not one, so the strict heirarchy won't
work.

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


Re: How to model government organization hierarchies so that the list can expand and compress

2015-08-13 Thread Ian Kelly
On Thu, Aug 13, 2015 at 1:10 PM, Alex Glaros  wrote:
> It's like the desktop folder/directory model where you can create unlimited 
> folders and put folders within other folders. Instead of folders, I want to 
> use government organizations.
>
> Example: Let user create agency names: Air Force, Marines, Navy, Army. Then 
> let them create an umbrella collection called "Pentagon", and let users drag 
> Air Force, Marines, Navy, etc. into the umbrella collection.
>
> User may wish to add smaller sub-sets of Army, such as "Army Jeep Repair 
> Services"
>
> User may also want to add a new collection "Office of the President" and put 
> OMB and Pentagon under that as equals.
>
> What would the data model look like for this?  If I have a field: 
> next_higher_level_parent that lets children records keep track of parent 
> record, it's hard for me to imagine anything but an inefficient bubble sort 
> to produce a hierarchical organizational list. Am using Postgres, not graph 
> database.
>
> I'm hoping someone else has worked on this problem, probably not with 
> government agency names, but perhaps the same principle with other objects.

https://en.wikipedia.org/wiki/Tree_(data_structure)
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: How to model government organization hierarchies so that the list can expand and compress

2015-08-13 Thread Stéphane Wirtel

Create a model with a parent_id on the current model

and you can use the mptt concept or some others for the reading.


On 13 Aug 2015, at 21:10, Alex Glaros wrote:

It's like the desktop folder/directory model where you can create 
unlimited folders and put folders within other folders. Instead of 
folders, I want to use government organizations.


Example: Let user create agency names: Air Force, Marines, Navy, Army. 
Then let them create an umbrella collection called "Pentagon", and let 
users drag Air Force, Marines, Navy, etc. into the umbrella 
collection.


User may wish to add smaller sub-sets of Army, such as "Army Jeep 
Repair Services"


User may also want to add a new collection "Office of the President" 
and put OMB and Pentagon under that as equals.


What would the data model look like for this?  If I have a field: 
next_higher_level_parent that lets children records keep track of 
parent record, it's hard for me to imagine anything but an inefficient 
bubble sort to produce a hierarchical organizational list. Am using 
Postgres, not graph database.


I'm hoping someone else has worked on this problem, probably not with 
government agency names, but perhaps the same principle with other 
objects.


Thanks!

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



--
Stéphane Wirtel - http://wirtel.be - @matrixise
--
https://mail.python.org/mailman/listinfo/python-list


How to model government organization hierarchies so that the list can expand and compress

2015-08-13 Thread Alex Glaros
It's like the desktop folder/directory model where you can create unlimited 
folders and put folders within other folders. Instead of folders, I want to use 
government organizations. 

Example: Let user create agency names: Air Force, Marines, Navy, Army. Then let 
them create an umbrella collection called "Pentagon", and let users drag Air 
Force, Marines, Navy, etc. into the umbrella collection. 

User may wish to add smaller sub-sets of Army, such as "Army Jeep Repair 
Services" 

User may also want to add a new collection "Office of the President" and put 
OMB and Pentagon under that as equals. 

What would the data model look like for this?  If I have a field: 
next_higher_level_parent that lets children records keep track of parent 
record, it's hard for me to imagine anything but an inefficient bubble sort to 
produce a hierarchical organizational list. Am using Postgres, not graph 
database.

I'm hoping someone else has worked on this problem, probably not with 
government agency names, but perhaps the same principle with other objects. 

Thanks! 

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


Re: Module load times

2015-08-13 Thread Stefan Behnel
Joseph L. Casale schrieb am 13.08.2015 um 18:56:
> I have an auto generated module that provides functions exported from a
> c dll. Its rather large and we are considering some dynamic code generation
> and caching, however before I embark on that I want to test import times.
> 
> As the module is all auto generated through XSL, things like __all__ are not
> used,  a consumer only imports one class which has methods for their use.
> 
> It is the internal supporting classes which are large such as the ctype 
> function
> prototypes and structures.

How is the DLL binding implemented? Using "ctypes"? Or something else?

Obviously, instantiating a large ctypes wrapper will take some time. A
binary module would certainly be quicker here, both in terms of import time
and execution time. Since you're generating the code anyway, generating
Cython code instead shouldn't be difficult but would certainly yield faster
code.


> My concern is simply reloading this in Python 3.3+ in a timeit loop is not
> accurate. What is the best way to do this?

What makes you think the import might be a problem? That's a one-time
thing. Or is your application a command-line tool or so that needs to start
and terminate quickly?

Stefan


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


Module load times

2015-08-13 Thread Joseph L. Casale
I have an auto generated module that provides functions exported from a
c dll. Its rather large and we are considering some dynamic code generation
and caching, however before I embark on that I want to test import times.

As the module is all auto generated through XSL, things like __all__ are not
used,  a consumer only imports one class which has methods for their use.

It is the internal supporting classes which are large such as the ctype function
prototypes and structures.

My concern is simply reloading this in Python 3.3+ in a timeit loop is not
accurate. What is the best way to do this?

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


Re: OBIEE Developer and Administrator @ Seattle WA

2015-08-13 Thread Stéphane Wirtel

Hi Amrish,

I think you can post to j...@python.org

See: https://www.python.org/community/jobs/howto/

Thank you

Stephane

On 13 Aug 2015, at 18:42, Amrish B wrote:


Hello Folks,

Please go through below job description and send me updated resume to 
amr...@uniteditinc.com


Job Title: OBIEE Developer and Administrator
Location: Seattle WA
Duration: 12+months
Experience: 10+ years only

Job Description:
* maintain the Oracle Business Intelligence Enterprise Edition 
application and develop reports/dashboards for functional areas
* Act as an analyst interacting with departments to 
understand, define, and document report and dashboard requirements
* Assist in configuring complex Oracle systems (Oracle client 
tools, administration of Web Logic, and setup and configuration of web 
server with front end reporting tools)
* Responsible for security administration within OBIEE as well 
as integrations with active directory
* Research, tune, and implement configurations to ensure 
applications are performing to expected standards
* Researches, evaluates and recommends enabling software 
design practices, trends, and related technologies
* Support and comply with security model and company audit 
standards
* Conduct comprehensive analysis of enterprise systems 
concepts, design, and test requirements
* Analyzes, defines, and documents requirements for data, 
workflow, logical processes, interfaces with other systems, internal 
and external checks and controls, and outputs


Qualifications/Knowledge, Skills, & Abilities Requirements
* Bachelor's Degree in Computer Science, Engineering, or 
related discipline, or equivalent, experience
* 8 plus years of experience in data warehouse or reporting 
design and development

* Experience with DBMS (i.e. Oracle) and working with data
* Experience in system administration
* Ability to troubleshoot and solve complex issues in an 
Enterprise environment
* Ability to establish and maintain a high level of customer 
trust and confidence
* Strong analytical and conceptual skills; ability to create 
original concepts and ideas



Thanks & Regards,

Amrish Babu | IT Recruiter
--
https://mail.python.org/mailman/listinfo/python-list



--
Stéphane Wirtel - http://wirtel.be - @matrixise
--
https://mail.python.org/mailman/listinfo/python-list


OBIEE Developer and Administrator @ Seattle WA

2015-08-13 Thread Amrish B
Hello Folks,

Please go through below job description and send me updated resume to 
amr...@uniteditinc.com

Job Title: OBIEE Developer and Administrator
Location: Seattle WA
Duration: 12+months
Experience: 10+ years only
 
Job Description:
* maintain the Oracle Business Intelligence Enterprise Edition 
application and develop reports/dashboards for functional areas
* Act as an analyst interacting with departments to understand, define, 
and document report and dashboard requirements
* Assist in configuring complex Oracle systems (Oracle client tools, 
administration of Web Logic, and setup and configuration of web server with 
front end reporting tools)
* Responsible for security administration within OBIEE as well as 
integrations with active directory 
* Research, tune, and implement configurations to ensure applications 
are performing to expected standards
* Researches, evaluates and recommends enabling software design 
practices, trends, and related technologies
* Support and comply with security model and company audit standards
* Conduct comprehensive analysis of enterprise systems concepts, 
design, and test requirements
* Analyzes, defines, and documents requirements for data, workflow, 
logical processes, interfaces with other systems, internal and external checks 
and controls, and outputs
 
Qualifications/Knowledge, Skills, & Abilities Requirements
* Bachelor's Degree in Computer Science, Engineering, or related 
discipline, or equivalent, experience
* 8 plus years of experience in data warehouse or reporting design and 
development
* Experience with DBMS (i.e. Oracle) and working with data
* Experience in system administration
* Ability to troubleshoot and solve complex issues in an Enterprise 
environment
* Ability to establish and maintain a high level of customer trust and 
confidence
* Strong analytical and conceptual skills; ability to create original 
concepts and ideas
 
 
Thanks & Regards,
 
Amrish Babu | IT Recruiter
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Vaga Java (Belgica, com tudo pago)

2015-08-13 Thread leo kirotawa
Wondering why a position for Java/JS was sent to this list...just wondering...

On Thu, Aug 13, 2015 at 11:59 AM,   wrote:
> https://walljobs.typeform.com/to/uWpUqj
>
> We seek a software developer with experience in web application development.
>
> Should you have the passion to work in the start-up environment and the 
> willingness to evolve in a fast-paced environment, then we'd like to get in 
> touch.
>
> We are located in Brussels, Belgium, in the center of Europe. You should be 
> able to work in an international team, show passion and commitment to towards 
> the project, and be able to adapt to challenging European working standards.
>
> Responsibilities
>
> Understand design documents, giving feedback when necessary, and implement 
> the required changes in the code base.
>
> Interact with an existing large software implementation and independently 
> perform the required actions
>
> Review code from peers
>
> Develop automated tests and other quality assurance techniques
>
> Interact with the marketing, psychology and business teams giving advice and 
> feedback
>
> Adapt and adjust to a fast pacing environment
>
> https://walljobs.typeform.com/to/uWpUqj
> --
> https://mail.python.org/mailman/listinfo/python-list



-- 

--
Leônidas S. Barbosa (Kirotawa)
blog: corecode.wordpress.com
-- 
https://mail.python.org/mailman/listinfo/python-list


Mock object but also assert method calls?

2015-08-13 Thread Thomas Lehmann via Python-list
Hi,

How about asserting that test2 of class Bar is called?
Of course I can do a patch for a concrete method but
I was looking for something like:

mocked_object.assert_method_called_with(name="test2", "hello")

If find following totally different to the normal API which
is provided by the mock library:

assert call().test2("hello") in mocked_objects.mock_calls

Is there a better way?

APPENDIX:
Foo delegates calls to Bar.

[code]
from mock import patch
with patch("__main__.Bar") as mocked_object:
foo = Foo()
foo.test1()
foo.test2("hello")
print(mocked_object.mock_calls)
# print all calls (c'tor as well as normal methods)
for name, args, kwargs in mocked_object.mock_calls:
print(name, args, kwargs)
[/code]

Generates:


test1: Foo has been called
test2: Foo has been called with value hello
[call(), call().test1(), call().test2('hello')]
('', (), {})
('().test1', (), {})
('().test2', ('hello',), {})
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: problem with netCDF4 OpenDAP

2015-08-13 Thread Jason Swails
On Thu, Aug 13, 2015 at 6:32 AM, Tom P  wrote:

> I'm having a problem trying to access OpenDAP files using netCDF4.
> The netCDF4 is installed from the Anaconda package. According to their
> changelog, openDAP is supposed to be supported.
>
> netCDF4.__version__
> Out[7]:
> '1.1.8'
>
> Here's some code:
>
> url = '
> http://www1.ncdc.noaa.gov/pub/data/cmb/ersst/v3b/netcdf/ersst.201507.nc'
> nc = netCDF4.Dataset(url)
>
> I get the error -
> netCDF4/_netCDF4.pyx in netCDF4._netCDF4.Dataset.__init__
> (netCDF4/_netCDF4.c:9551)()
>
> RuntimeError: NetCDF: file not found
>
>
> However if I download the same file, it works -
> url = '/home/tom/Downloads/ersst.201507.nc'
> nc = netCDF4.Dataset(url)
> print nc
>  . . . .
>
> Is it something I'm doing wrong?


​Yes.  URLs are not files and cannot be opened like normal files.  netCDF4
*requires* a local file as far as I can tell.

All the best,
Jason

-- 
Jason M. Swails
BioMaPS,
Rutgers University
Postdoctoral Researcher
-- 
https://mail.python.org/mailman/listinfo/python-list


Vaga Java (Belgica, com tudo pago)

2015-08-13 Thread henrique . calandra
https://walljobs.typeform.com/to/uWpUqj

We seek a software developer with experience in web application development.

Should you have the passion to work in the start-up environment and the 
willingness to evolve in a fast-paced environment, then we'd like to get in 
touch.

We are located in Brussels, Belgium, in the center of Europe. You should be 
able to work in an international team, show passion and commitment to towards 
the project, and be able to adapt to challenging European working standards.

Responsibilities 

Understand design documents, giving feedback when necessary, and implement the 
required changes in the code base. 

Interact with an existing large software implementation and independently 
perform the required actions 

Review code from peers

Develop automated tests and other quality assurance techniques 

Interact with the marketing, psychology and business teams giving advice and 
feedback 

Adapt and adjust to a fast pacing environment 

https://walljobs.typeform.com/to/uWpUqj
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Real-time recoding of video from asx to non-Windows formats

2015-08-13 Thread Michael Torrie
On 08/12/2015 12:04 AM, Montana Burr wrote:
> I'm interested in using Python to create a server for streaming my
> state's traffic cameras - which are only available as Windows Media streams
> - to devices that do not natively support streaming Windows Media content
> (think Linux computers & iPads). I know Python makes various problems easy
> to solve, and I'd like to know if this is one of those problems. I would
> like to use a module that works on any Linux- or UNIX-based computer, as my
> primary computer is UNIX-based.

This is a case of use the best tool for the job.  Python could glue the
parts together, but maybe a bash script would be best.  As for the tools
themselves, they aren't going to be Python.  Things like mplayer, vlc,
ffmpeg all might assist.

VLC is very good at this kind of thing, and can be driven from the
command line, say from a bash script.  VLC can connect to a network
stream, transcode it, and offer it up as a different network stream.
However VLC network transcoding is only a one connection at a time sort
of thing, so it may not be enough for your needs.

If your main target is Linux, windows media streams work fairly well
with mplayer or vlc.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Real-time recoding of video from asx to non-Windows formats

2015-08-13 Thread Python UL



On 12-08-15 08:04, Montana Burr wrote:

Hi,

I'm interested in using Python to create a server for streaming my 
state's traffic cameras - which are only available as Windows Media 
streams - to devices that do not natively support streaming Windows 
Media content (think Linux computers & iPads). I know Python makes 
various problems easy to solve, and I'd like to know if this is one of 
those problems. I would like to use a module that works on any Linux- 
or UNIX-based computer, as my primary computer is UNIX-based.




Hi Montana,

You should take a look at FFmpeg (www.ffmpeg.org).

There's a python wrapper but I doubt you need it.
https://github.com/mhaller/pyffmpeg

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


Re: Linux users: please run gui tests

2015-08-13 Thread Terry Reedy

On 8/13/2015 1:11 AM, Laura Creighton wrote:

In a message of Wed, 12 Aug 2015 21:49:24 -0400, Terry Reedy writes:



https://bugs.python.org/issue15601

Could you add a note to the issue then?



Done, though I wonder if it isn't a separate issue.


I was not sure.  The people currently nosy will get email.


I didn't re-open the issue, which is marked closed.


I decided to do so, so issue is included in new issues list.


--
Terry Jan Reedy

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


Re: AttributeError

2015-08-13 Thread Denis McMahon
On Thu, 13 Aug 2015 02:41:55 -0700, Ltc Hotspot wrote:

>>> How do I define X?

> What are the values of X & Y from the code as follows:

> # print time: ['From', 'stephen.marqu...@uct.ac.za', 'Sat', 'Jan', '5', 
'09:14:16', '2008']

This is the data you need to look at.

X is the position in the printed list of the time information. If you can 
not determine the correct X value by inspection of the list having been 
told which element it should be, then you need to go back to the python 
documentation and read about the list data object and how elements within 
the list are referenced. Once you understand from the documentation how 
to reference the list elements, you will be able to determine by 
inspection of the above list the correct value for X.

Y is the position of the hours element within the time information when 
that information is further split using the ':' separator. You may need 
to refer to the documentation for the split() method of the string data 
object. Once you understand from the documentation how the string.split() 
function creates a list, and how to reference the list elements (as 
above), you will be able to determine by inspection the correct value for 
Y.

This is fundamental python knowledge, and you must discover it in the 
documentation and understand it. You will then be able to determine the 
correct values for X and Y.

Note that the code I posted may need the addition of a line something 
like:

if line.startswith("From "):

in a relevant position, as well as additional indenting to take account 
of that addition.

-- 
Denis McMahon, denismfmcma...@gmail.com
-- 
https://mail.python.org/mailman/listinfo/python-list


problem with netCDF4 OpenDAP

2015-08-13 Thread Tom P

I'm having a problem trying to access OpenDAP files using netCDF4.
The netCDF4 is installed from the Anaconda package. According to their 
changelog, openDAP is supposed to be supported.


netCDF4.__version__
Out[7]:
'1.1.8'

Here's some code:

url = 
'http://www1.ncdc.noaa.gov/pub/data/cmb/ersst/v3b/netcdf/ersst.201507.nc'

nc = netCDF4.Dataset(url)

I get the error -
netCDF4/_netCDF4.pyx in netCDF4._netCDF4.Dataset.__init__ 
(netCDF4/_netCDF4.c:9551)()


RuntimeError: NetCDF: file not found


However if I download the same file, it works -
url = '/home/tom/Downloads/ersst.201507.nc'
nc = netCDF4.Dataset(url)
print nc
 . . . .

Is it something I'm doing wrong?
--
https://mail.python.org/mailman/listinfo/python-list


Re: AttributeError

2015-08-13 Thread Ltc Hotspot
On Thu, Aug 13, 2015 at 2:15 AM, Denis McMahon  wrote:
> On Wed, 12 Aug 2015 16:46:32 -0700, Ltc Hotspot wrote:
>
>> How do I define X?
>>
> -
>> Traceback reads:
>>
>>  10 f  = open(filename,'r')
>>  11 for l in f:
>> ---> 12  h = int(l.split()[X].split(':')[Y])
>>  13  c[h] = c[h] + 1 14 f.close()
>>
>> NameError: name 'X' is not defined
>
> If you read the text that I posted with the solution, it tells you what X
> and Y are. They are numbers that describe the positions of elements in
> your input data.
>
> This absolute refusal by you to read any explanations that are posted are
> exactly why you will never be a good programmer. To become a good
> programmer you need to read and understand the explanations.
>
> In the post with that code example, I wrote:
>
> It also assumes that there is a timestamp of the form hh:mm:ss that
> always appears at the same word position X in each line in the file, and
> that the hours record always at position Y in the timestamp.
>
> You have to replace X and Y in that line with numbers that represent the
> positions in the lists returned by the relevant split commands of the
> actual text elements that you want to extract.
>
> --

Denis,

What are the values of X & Y from the code as follows:

Code reads:
handle = """From stephen.marqu...@uct.ac.za Sat Jan  5 09:14:16 2008
>From lo...@media.berkeley.edu Fri Jan  4 18:10:48 2008
""".split("\n") # snippet file data: mbox-short.txt

count = dict()
#fname = raw_input("Enter file name: ")# insert # to add snippet file data
#handle = open (fname, 'r')# insert # to add snippet file data

for line in handle:
if line.startswith("From "):
time = line.split() # splitting the lines ->
# print time: ['From', 'stephen.marqu...@uct.ac.za', 'Sat',
'Jan', '5', '09:14:16', '2008']
for hours in time: #getting the index pos of time ->

hours = line.split(":")[2] # splitting on ":" ->
line = line.rstrip()

count[hours] = count.get(hours, 0) + 1 # getting the index pos of hours.

lst = [(val,key) for key,val in count.items()] # find the most common words
lst.sort(reverse=True)

for key, val in lst[:12] :
 print key, val

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


Re: AttributeError

2015-08-13 Thread Mark Lawrence

On 12/08/2015 22:04, Ltc Hotspot wrote:

So calling people stupid and ignorant on the internet makes you sexual
arousal and to masturbate with yourself


*plonk* - please follow suit everybody, it's quite clear that he has no 
interest in bothering with any of the data we've all provided.


--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

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


Re: AttributeError

2015-08-13 Thread Denis McMahon
On Wed, 12 Aug 2015 16:46:32 -0700, Ltc Hotspot wrote:

> How do I define X?
> 
-
> Traceback reads:
> 
>  10 f  = open(filename,'r')
>  11 for l in f:
> ---> 12  h = int(l.split()[X].split(':')[Y])
>  13  c[h] = c[h] + 1 14 f.close()
> 
> NameError: name 'X' is not defined

If you read the text that I posted with the solution, it tells you what X 
and Y are. They are numbers that describe the positions of elements in 
your input data.

This absolute refusal by you to read any explanations that are posted are 
exactly why you will never be a good programmer. To become a good 
programmer you need to read and understand the explanations.

In the post with that code example, I wrote:

It also assumes that there is a timestamp of the form hh:mm:ss that 
always appears at the same word position X in each line in the file, and 
that the hours record always at position Y in the timestamp.

You have to replace X and Y in that line with numbers that represent the 
positions in the lists returned by the relevant split commands of the 
actual text elements that you want to extract.

-- 
Denis McMahon, denismfmcma...@gmail.com
-- 
https://mail.python.org/mailman/listinfo/python-list


[OT] How to post properly (was: Re: Hooking Mechanism when Entering and Leaving a Try Block)

2015-08-13 Thread Marko Rauhamaa
Mark Lawrence :

> The rule has been no top posting here for the 15 years I've been using
> Python.

Top posting is simply annoying.

However, I'd like people to also stick to another rule: only quote a few
lines. I should start seeing your contribution to the discussion without
scrolling because those few lines help me decide if I should skip the
posting altogether. (Well, if I can't see any original content at once,
I'll skip the posting.)

A third rule, which I'm violating here myself, is stick to
Python-related topics on this newsgroup.


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


Re: AttributeError

2015-08-13 Thread Ltc Hotspot
So calling people stupid and ignorant on the internet makes you sexual
arousal and to masturbate with yourself

On Wed, Aug 12, 2015 at 1:38 PM, Denis McMahon  wrote:
> On Wed, 12 Aug 2015 12:05:37 -0700, Ltc Hotspot wrote:
>
>>>Have a look at assignment_10_2_v_06.py.
>
>> What should I look at assignment_10_2_v_06.py.:
>
> You shouldn't. You should instead approach your tutor and tell him you
> are too stupid to learn computer programming[1], and can you please
> transfer to floor-scrubbing 101.
>
> [1] You have repeatedly ignored advice and instructions that you have
> been given. This is de-facto proof that you are not capable of learning
> to program computers.
>
> --
> Denis McMahon, denismfmcma...@gmail.com
> --
> https://mail.python.org/mailman/listinfo/python-list
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Hooking Mechanism when Entering and Leaving a Try Block

2015-08-13 Thread Mark Lawrence

On 13/08/2015 07:26, Sven R. Kunze wrote:

On 13.08.2015 02:45, Chris Angelico wrote:

On Thu, Aug 13, 2015 at 6:54 AM, Mark Lawrence  wrote:

On 12/08/2015 19:44, Sven R. Kunze wrote:

On 12.08.2015 18:11, Chris Angelico wrote:

(Please don't top-post.)


Is this some guideline? I actually quite dislike pick somebody's mail to
pieces. It actually pulls things out of context. But if this is a rule
for this, so be it.


The rules here are very simple.  Snip what you don't wish to reply to (yes I
know I forget sometimes), intersperse your answers to what you do want to
respond to.

As Mark says, the key is to intersperse your answers with the context.
In some email clients, you can highlight a block of text and hit
Reply, and it'll quote only that text. (I was so happy when Gmail
introduced that feature. It was the one thing I'd been most missing
from it.)

ChrisA


So, I take this as a "my personal preference guideline" because I cannot
find an official document for this (maybe, I am looking at the wrong
places).



This is a community list.  The rule has been no top posting here for the 
15 years I've been using Python.  I find trying to follow the really 
long threads on python-dev or python-ideas almost impossible as there is 
no rule, so you're up and down responses like a yo-yo.



In order to keep you happy, I perform this ancient type communication
where the most relevant information (i.e. the new one) is either to find
at the bottom (scrolling is such fun) OR hidden between the lines
(wasting time is even more fun these days).


What rubbish.  Just because some people have been brainwashed into 
writing English incorrectly by their using M$ Outlook doesn't mean that 
the rest of the world has to follow suit.  If you don't want to work so 
hard to use this list then simply don't bother coming here, I doubt that 
the list will miss you.



Btw. to me, the *context is the entire post*, not just two lines. I hate
if people answer me on every single word I've written and try to explain
what've got wrong instead of trying to understand the message and my
perspective as a whole. I find it very difficult to respond to such a
post and I am inclined to completely start from an empty post.


Which is why we prefer interspersed posting such as this.

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

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


Re: Hooking Mechanism when Entering and Leaving a Try Block

2015-08-13 Thread Jonas Wielicki
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512



On 13.08.2015 08:26, Sven R. Kunze wrote:
> 
> So, I take this as a "my personal preference guideline" because I
> cannot find an official document for this (maybe, I am looking at
> the wrong places).

- From RFC 1855 (Netiquette Guidelines
):

- If you are sending a reply to a message or a posting be sure you
  summarize the original at the top of the message, or include just
  enough text of the original to give a context.  This will make
  sure readers understand when they start to read your response.
  Since NetNews, especially, is proliferated by distributing the
  postings from one host to another, it is possible to see a
  response to a message before seeing the original.  Giving context
  helps everyone.  But do not include the entire original!

(there is other stuff related to this in there too)

> In order to keep you happy, I perform this ancient type
> communication where the most relevant information (i.e. the new
> one) is either to find at the bottom (scrolling is such fun) OR
> hidden between the lines (wasting time is even more fun these
> days).

I have seen that notion with people who have not much mail traffic or
are not trying to keep track of several threads at once. I personally
have much less trouble (i.e. I am actually saving time!) following
multiple threads when the posters are using proper quoting and are not
top-posting.

regards,
jwi
-BEGIN PGP SIGNATURE-
Version: GnuPG v2

iQIbBAEBCgAGBQJVzE5BAAoJEMBiAyWXYliKe48P+L9fZm55y/0ORi7FtdzDmUaL
1gD5zhSflGrI0dRusfETu8kkAJOi3uDFs0rKRXJuWh3vY9f+Dj0573wWFuJ5CRPz
SRIb3M8s7txo3Oxj+IJEgKk+FRqVwBrw5MIbkuNrhZ0UmZnvO0JhtqPYEmZpb+Ht
Yvnj+PeLChytKzuMYGVz3bwU7FM9C5VMIkXeszL2oEMbqdfwfINP89bS779RQwz0
ZcT3z1OG/rqNgAJrn2/fMVZTMQe9lhfLcgWvIR2+/pxPpU7iuaTqRXC130kc7hIu
ifzZf25Wi2Wxz5B4Psx0dJFKfSxasPa5qEBO1rlrH4vxJI6sPu8CI0P15fS7bO1O
Mh3IPrPPZM8mByxuJxcdKHyCvOOXcs4G0Iz2+QjXuvujP8p9vrA+TVq2trB07FL9
lleXkH0ETjZzwxdzpdmgCePP302nqm5MZimpGLCjmygvSZo/HFj4PH9WWcmEhVgA
kzN1uyk1f0RVk/8KqtnKNWs5pWKORxuCBCeMhm8PeIov1uJwhsWenqHsbmERUciY
RKs3raJQ+M4fedGHAmlrWcI9N0slG2MIcYBCXbA0v0HM/7+JF63Orc6TCqf5iQ1p
O1VyJqUASRKJ9XekWcliGkyuIS9WPR0vUsjjqdpRWfGhd62FAq6xfzPuf8V4PdfI
K+TfUFKDSS6yjLNGxY0=
=8iLz
-END PGP SIGNATURE-
-- 
https://mail.python.org/mailman/listinfo/python-list