I’m currently creating a code named “SET”. The code’s name is an acronym, which has been defined for many (non programming) reasons, and therefore cannot be changed.
Problem: The easiest, and I believe the less painful way for the end-user to use my code would be naming the package “set”.
But of course this is a problem since this conflicts with the built-in set function.
Question: What are the possible solutions? Some may be (there is probably more):
-
change the package name (eg. setb).
import setbI would really really prefer not to, because then it will be different from the real name
-
make the package’s name upper-case (SET)
import SETIt would be a straight forward solution, but I’m wondering: is this a pythonic proper naming for a package? Also, I find this a bit painful since all modules defined in the code will have something like “import SET.x.y…” (ie. upper-case, written a lot of times). But this is not a really big deal if this is a pythonic way.
-
keep the name “set”
import setWell this is obviously not fine. But it would be a problem only if the user is using “import set”, would not it be? This should not happen in “normal usage conditions”, since the code will provides some scripts to use it, rather use it as a standard python module. But we never know, and it could be imported as it, and there may be even some problems I’m not seeing (with the built-in set).
I’m considering the solution 2., but I’m really not sure. Maybe this is not proper, or maybe you guys have a better solution.
PS: I’ve found some similar topics on the web and on stackoverflow, but it usually deals with names inside a script or module inside a package. The problem here is really related to the code’s name (which is meaningful only written this way), and therefore related to the proper naming of the package’s name.
EDIT
Selected solution: I’ve choosen to use “SET” as the package name. Although many good suggestions have been proposed here: pyset, semt, setool… or the more explicit “starexoplanettool” (expliciting the acronym). Thanks to you all.
EDIT #2
I like the “funny” solution of having a package named S, and a subpackage, E… to get finally:
import S.E.T
Thanks Don Question.
Under the circumstances, it doesn’t matter.
Leading upper case is rare (ConfigParser, HTMLParser). Camel-case is rare (cStringIO).
But that doesn’t make all upper-case wrong.
It just means you should pick a better acronym next time.
“set” is the English word with the largest number of definitions. It is the single poorest choice of acronym possible.
The point is not to conform to a community “standard” of more-or-less acceptable behavior.
The point is to write something that works.
Hardly a concern. People actually run software more often than they write it.
People read and tweak more often than writing, also.
If you’re worried about misspelling, there’s copy and paste.
Also, even a cheap IDE like Komodo Edit can figure out how to code-complete an installed module with a long name.