views:

118

answers:

3

I'm trying to put together a really simple module with one .py source file in it, and have already run into a roadblock. I was going to call it scons-config but import scons-config doesn't work in Python. I found this SO question and looked at PEP8 style guide but am kind of bewildered, it doesn't talk about two-word-name conventions.

What's the right way to deal with this?

  • module name: SconsConfig? scons_config? sconsconfig? scons.config?
  • name of the single .py file in it: scons-config.py? scons_config.py?

edit: I did see "the use of underscores is discouraged" and that left me at a dead end: should I use "sconsconfig" or "scons_config" (I guess the other ones are out)?

+8  A: 

If you have to, always use underscores _.

Using a dot . would not even work, otherwise

from scons.config import whatever

would break.

But I think PEP 8 clearly describes it here:

Package and Module Names

Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.

UPDATE:

To directly target your question: I think sconsconfig is fine. It is not too long and quite readable.

But honestly, I don't think anyone will blame you if you use underscores and your code will run with either decision. There is always a certain level where you should not care that much anymore.

Felix Kling
I saw "use of underscores is discouraged" and it left me at a dead end.
Jason S
@Jason S: Well, use it if readability really suffers or think about another name ;) It is *only* discouraged, not forbidden.
Felix Kling
"There is always a certain level where you should not care that much anymore." True but there are almost always consequences for these kinds of decisions and if you're a beginner like me it's daunting. Thanks!
Jason S
A: 

- is a no go. The symbol is used for minus operator. The same is true in most programming languages. Use _.

Wai Yip Tung
+3  A: 

First, the module name is the same as the name of the single .py file. In Python-speak, a collection of several .py files is a package.

PEP-8 discourages breaking up package names with underscores. A quick peak at my site-packages directory shows that multiword names are commonly just run together (e.g., setuptools, sqlalchemy)

Module names (that is, file names) may be broken up by underscores (and I usually do this, because I hate namesthatruntogethersoyoucanhardlyreadthem).

Stick with lower-case only (per PEP-8). This avoids problems when going from case-sensitive to case-insensitive filesystems and vice versa.

Dan Menes