[Python-ideas] Importing public symbols and simultainiously privatizing them, is too noisy

Rick Johnson rantingrickjohnson at gmail.com
Fri Mar 18 00:04:22 EDT 2016


On Thursday, March 17, 2016 at 12:25:36 PM UTC-5, Eric Snow wrote:

> So like Go does packages?  You should be able to do that
> using a custom loader and a path-entry finder to provide
> that loader.  See the importlib docs for more info.  Just
> be careful to only handle your special directories or else
> normal packages will break.

Yes, i had planned to do it in a manner that will exist side
by with the existing "official import mechanism". It's not
something i plan to do for "every single module". Only those
that have become "too large to easily edit". 

> FWIW, there are more idiomatic ways to combine multiple
> files into a single module.  For instance, make a package
> containing your separate files but make the files private
> (leading underscore).  Then put "from XXX import *" for
> each of them.  If you want to limit what's exported from
> the package, either define __all__ in the sub-files or use
> "from XXX import YYY" in the package __init__.py.

Sure. That will allow me to "spread-out a large module's
source code into N smaller files", and then let Python
"combine the objects, defined in those multiple files, under
one monolithic namespace at run-time"... but i can't define
shared state between them *UNTIL* run-time -- at least, not
without resorting to "import spider webs" and monkey
patching.

I'm not trying to "define a module from N objects contained
in N source files", no, i'm trying to "define a *NAMESPACE*
from N source files". "N source files" that would
transparently share state just as though all the source
existed in the exact same file.

> As far as sharing a namespace between the sub-files, I'd
> recommend against an implicit mechanism (like Go does).
> I've found that it makes it harder to discover code.

Hmm, you're not the only person that has raised this issue.

I'm unaware of how Go handles namespaces, but i've used
other languages that *DO* offer a programmer the option of
"explicitly defining module namespace", and after writing
code for many years, I have not once encountered the issues
that you and others raise.

I'm speculating here, but it may be because i'm very OCD
about creating strong interfaces, and i avoid writing code
that rebinds symbols "in the shadows".  Of course, i'm not
suggesting that you, or anyone else, is incompetent, I'm
merely pondering, because it does sound like a legitimate
possibility...

Hey, i can tell you from personal experience: there is
nothing worst than implementing a "grand idea", only to find
out later, that it was "fools gold". O:-)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160317/d6574146/attachment.html>


More information about the Python-ideas mailing list