Hi,
I wrote the 'autoimp' module [1], which allows you to import lazy modules:
from autoimp import * (Import lazy wrapper objects around all modules; "lazy
modules" will turn into normal modules when an attribute
is first accessed with getattr()).
from autoimp import A, B (Import specific lazy module wrapper objects).
The main point of autoimp is to make usage of the interactive Python prompt
more productive by including "from autoimp import *" in the PYTHONSTARTUP file.
Thus one can use:
>>urllib2.urlop en('http://www.google.com' ).read() Image.open('t est.bmp') pylab.plot([1,2],[3,4]) scipy.linalg. eig([[1,2],[3,4]]) ...
One can thenceforward use the interactive prompt without using the "import"
statement at all. In practice, I have found that there is little overhead in time
and memory for the initial import of all lazy modules (assuming all of the Python
module paths are on the local disk, and not on a network).
I have also found "autoimp" useful in writing normal Python applications; one can
use "from autoimp import *" at the top of a Python source file and thus have all
Python modules available to that source file, which results in increased
efficiency of writing the program with the downside that one has to think more
carefully about global variables to avoid name conflict bugs.
Now because this feature is useful, I thought of writing a PEP to add the
"lazy import" functionality to the Python interpreter.
Specifically:
lazily import *
lazily import A, B, C
This would involve the introduction of a new keyword, such as "lazily".
The PEP should include extensions to the builtin Python __import__ (__lazilyimport __ ?)
and the imp and zipimport modules so that the new "lazy import" feature can be
fully utilized by "dynamic" Python code.
Closely related to the "autoimp" module is Philip Eby's Importing module [2]. The Importing
module has the ability to lazily import a single module as well as a number of other features,
so Philip may wish to be involved, and features from Importing may be used in the PEP if
desired.
Opinions?
[1]. http://cheeseshop.python.org/pypi/autoimp/1.0.2
[2]. http://peak.telecommunity.com/DevCenter/Importing
_______________ _______________ _______________ _____
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com 11 1851
Hi!
>>I have also found "autoimp" useful in writing normal Python...
+1
--
@-salutations
Michel Claveau
Connelly Barnes enlightened us with:
I wrote the 'autoimp' module [1], which allows you to import lazy modules:
The main point of autoimp is to make usage of the interactive Python
prompt more productive by including "from autoimp import *" in the
PYTHONSTARTUP file.
Sounds like a great idea.
I have also found "autoimp" useful in writing normal Python
applications; one can use "from autoimp import *" at the top of a
Python source file and thus have all Python modules available to
that source file
That sounds like a source of new bugs to me. Besides that, you have no
overview at all of which modules are used by the program. It also
prevents automated checking of that using pylint and friends.
Sybren
--
Sybren Stüvel
Stüvel IT - http://www.stuvel.eu/
In message <ma************ *************** ***********@pyt hon.org>, Connelly
Barnes wrote:
The main point of autoimp is to make usage of the interactive Python
prompt more productive by including "from autoimp import *" in the
PYTHONSTARTUP file.
The main problem I have with your idea is that any kind of import statement
with wildcards in it automatically starts my bogosity meter flashing
its "RED ALERT" sign and clanging all its alarm bells.
Lawrence D'Oliveiro wrote:
In message <ma************ *************** ***********@pyt hon.org>, Connelly
Barnes wrote:
>The main point of autoimp is to make usage of the interactive Python prompt more productive by including "from autoimp import *" in the PYTHONSTARTU P file.
The main problem I have with your idea is that any kind of import statement
with wildcards in it automatically starts my bogosity meter flashing
its "RED ALERT" sign and clanging all its alarm bells.
"from ... import *" was *designed* for interactive use, which is exactly what
Connelly is suggesting. It's not a bad thing in that context.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
I think this is obviously great in interactive mode and would also be
very good in the early stages of developing if you have several sources
files. A little error prone maybe, and should be avoided in
"production " code I suppose. (I would like to track each name exactly,
on each installation of python that I may move to)
BTW what would the benefit of the form "lazily import A, B"? If you
name the modules why not import them directly? Maybe you are not sure
you would need them, but I don't think that the overhead of importing
them should matter..
Anyhow, is it just for completion maybe?
Saizan wrote:
BTW what would the benefit of the form "lazily import A, B"? If you
name the modules why not import them directly? Maybe you are not sure
you would need them, but I don't think that the overhead of importing
them should matter..
It's primarily useful for large packages. scipy used to have a mechanism of
postponed imports because loading all of the extension modules in all of scipy's
subpackages takes a fair bit of time. It especially hurts when you only wanted
one. However, it is quite convenient to simply write "import scipy;
scipy.linalg.ei g(matrix)".
Nonetheless, we removed that feature and stopped importing all of the
subpackages because the postponed import mechanism interfered with a number of
other things (namely, getting docstrings through IPython's ? operator and making
py2exe apps that use scipy). Having a third-party library do the same thing
makes interactive use nice without burdening scipy with the problems.
So, "lazily import A" would make sense if A was a large package where all of the
goodies are buried in A.C.D and A.E, A.X, A.Z, etc. You *do* know that you need
A, but you may not know what you need underneath it.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
In message <ma************ *************** ***********@pyt hon.org>, Robert
Kern wrote:
Lawrence D'Oliveiro wrote:
>In message <ma************ *************** ***********@pyt hon.org>, Connelly Barnes wrote:
>>The main point of autoimp is to make usage of the interactive Python prompt more productive by including "from autoimp import *" in the PYTHONSTART UP file.
The main problem I have with your idea is that any kind of import statement with wildcards in it automatically starts my bogosity meter flashing its "RED ALERT" sign and clanging all its alarm bells.
"from ... import *" was *designed* for interactive use, which is exactly
what Connelly is suggesting. It's not a bad thing in that context.
But there is nothing in the language that constrains its use to that
context, is there?
Clang, clang...
Lawrence D'Oliveiro wrote:
In message <ma************ *************** ***********@pyt hon.org>, Robert
Kern wrote:
>Lawrence D'Oliveiro wrote:
>>In message <ma************ *************** ***********@pyt hon.org>, Connelly Barnes wrote:
The main point of autoimp is to make usage of the interactive Python prompt more productive by including "from autoimp import *" in the PYTHONSTARTU P file. The main problem I have with your idea is that any kind of import statement with wildcards in it automatically starts my bogosity meter flashing its "RED ALERT" sign and clanging all its alarm bells.
"from ... import *" was *designed* for interactive use, which is exactly what Connelly is suggesting. It's not a bad thing in that context.
But there is nothing in the language that constrains its use to that
context, is there?
No. What's your point?
Connelly Barnes states that the main point of autoimp is to make usage of the
interactive prompt better by including "from autoimp import *" into a
PYTHONSTARTUP file. That file is only executed for interactive sessions. He's
not suggesting that people do "from autoimp import *" in their modules.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: svilen |
last post by:
hello again.
i'm now into using python instead of another language(s) for
describing structures of data, including names, structure,
type-checks, conversions, value-validations, metadata etc. And i have
things to offer, and to request.
And a lot of ideas, but who needs them....
here's an example (from type_struct.py):
|
by: praz |
last post by:
Hi,
I am trying to import a delimited text file using a macro. The problem
is i am not able to generate a Primary key (Let access add primary
key). I have tried saving the import specs using the import wizard and
specifying the same in the macro, but when I run the macro, the text
file is imported without the ID field (Primary key field).
Please any help appreciated.
|
by: Natan |
last post by:
When you create and aspx page, this is generated by default:
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Configuration;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
|
by: Keith Jackson |
last post by:
Does anybody know of a tool that will take a module as input, look for
any wildcard imports, and then identify what symbols in the module come
from which wildcard import? It could then expand out the from module
import * to from module import foo, bar. It might need to ask the user
on this, since they might want the wildcard import for something
special, but it would still be *much* nicer then expanding the imports
out by hand.
...
|
by: dv |
last post by:
Hi,
I have the following question,
I have an application which transfers a csv file (via FTP) to the server
then on the server I have a PHP script which put the content of the CSV into
a mysql
The question is now how can I start without manual interaction this PHP file
?
| |
by: micklee74 |
last post by:
hi
is there something like an automatic debugger module available in
python? Say if i enable this auto debugger, it is able to run thru the
whole python program, print variable values at each point, or print
calls to functions..etc...just like the pdb module, but now it's
automatic.
thanks
|
by: leeroy881 |
last post by:
Is there a way to automatically import incoming emails into a SQL
Server Database?
I know it is inefficient, but we have to run a number of rules on the
email after it is received. Store it in a database and be able to
connect other things, meetings, contacts, etc. Moving it back and
forth in chunks can be difficult and the overhead could spiral out of
control.
So we were thinking of moving it to the DB as it was retrieved.
What do you...
|
by: Silfheed |
last post by:
Heyas
So we have the following situation: we have a testee.py that we want
to automatically test out and verifiy that it is worthy of being
deployed. We want our tester.py to test the code for testee.py
without changing the code for testee.py. testee.py has a module in it
that we want to mock in some tests and in others use the real module.
/foo.py: (real module)
class bar:
|
by: myjish18 |
last post by:
Hello,
We have a DB2 UDB database v8.2.7 (db2 v8.2 fixpak 14) on AIX 5.3
which has Automatic Storage (AS) enabled. We want to disable
automatic storage on entire database and/or disable automatic storage
on all tablespaces. DB2 Manual says it once AS is enabled, it cant be
changed. Is there any way to disable the AS or any other alternative?
Please advice.
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |