Critic my module

Devyn Collier Johnson devyncjohnson at gmail.com
Sat Jul 27 10:53:16 EDT 2013


On 07/27/2013 10:33 AM, Dave Angel wrote:
> On 07/27/2013 08:56 AM, Devyn Collier Johnson wrote:
>>
>
>     <SNIP>
>
> Somehow during this thread, you have changed your purpose for this 
> library.  It used to be a library that Python programmers could import 
> and use.  And now, it's a shell replacement?  The user runs the Python 
> interpreter, and types the line   import boash   to get started.
>
>>
>> Yeah, I have a VERY BAD habit of treating bash and the Linux shell (or
>> any/all shells) as the same thing. I know they are all very different,
>> but for some reason I still keep calling all shells in general BASH.
>
> I seem to recall that BASH is an acronym, for Bourne Again SHell.
>
>>
>> I will be sure to create aliases. I make alias commands so that it is
>> easier to guess or remember a command. For instance, a Python user my
>> want to clear the shell's history, but can only remember one form of the
>> command or must guess. On my Ubuntu system, I have set up numerous shell
>> aliases. I am addicted to aliases.
>
> Nothing wrong with aliases.  But how does your user create his own 
> aliases?  That's much more important than having yours available. 
> Remember that any new globals he defines are lost when he exits the 
> interpreter (or crashes).
>
>>
>> I still need to add the other browsers. Do very many people use 
>> Iceweasel?
>>
>> I did not notice that I have "print(subprocess.Popen('(xterm &)'))"
>> instead of "subprocess.Popen('(xterm &)')". The worst computer errors
>> are ID-10-T errors.
>>
>> True, the user my have Xterm open, but what if they use Guake (like me)
>> or Pterm, EvilVTE, Valaterm, Gnome-Terminal, Konsole, etc.?
>
> Exactly.  If they're using a terminal with tabs, they might want to 
> create a new tab, not a new instance of the terminal.  Or if they're 
> running screen or the equivalent, they want the new terminal to show 
> up on their (remote) console.
>
>>
>> How could I add security and convenience? Okay, I will try to add wget.
>> Are there any other shell commands that anyone feels I should add?
>
> How about tab?  The command-completion and filename-completion and 
> parameter-completion logic of a good shell is extremely complex, and 
> very useful.
>
>>
>> The point of this module is to allow Linux shell users to use Python3 as
>> a regular shell. Instead of using CSH, Bash, Tcsh, FISH, etc., users
>> could use Python3 and import this module. Python is more powerful than
>> any shell, so I want to make it easier for anyone to use Python as the
>> default shell. For instance, instead of typing "print(os.getcwd())" to
>> get the current working directory, users could type "boash.ls()". I hope
>> that is easier to remember than "print(os.getcwd())".
>
> It's easier, but doesn't begin to do the same thing.
>
> As for using this INSTEAD of csh, bash, etc., that might be likely 
> once it gets beyond 10% of the usefulness.  Right now, it's at about 
> 0.01% And any habits a user gets within this environment have to be 
> unlearned when he returns to a standard shell.
>
> Back in the early days of MSDOS, the FORMAT command didn't require you 
> to specify a drive letter.  So people could intend to format their 
> floppy, and actually trash their hard disk.  So I had colleagues who 
> put a FORMAT.BAt command on their path which hard-wired the A: 
> parameter. Now what happens to one of those folks when he goes to 
> another machine which doesn't have that batch file?  Ouch!  Instead I 
> wrote a batch file that checked to make sure you had the A: 
> parameter.  Rapidly, my fingers learned that  FORMAT A:  was the valid 
> syntax, and pretty soon the batch file was unnecessary (for me).
>
> If I were going to define a dozen aliases for other people to use, I'd 
> make them something like:
>
> def clear_hist():
>     print "The function you want is probably   clear_history()"
>
>
>> As for the print()
>> command, I do not like how os.getcwd() has single quotes around the
>> output.
>
> Those quotes come from the Python interpreter, not from getcwd().
>
>> Plus, Linux shell do not print output with quotes.
>>
>> I want to make this a very useful and popular module, so I will use the
>> suggestions and add more useful wrappers. Would it help if I made a
>> Youtube video showing how this module can be used?
>>
>> I will post the next version on this mailing list for another review.
>> Thanks everyone, and thanks a lot Steven D'Aprano!
>>
>
> Have you figured out how you're going to do things like cd (os.chdir), 
> which have to remember state?  And how to pass the new current 
> directory to the shell that launched Python?
>
> Have you looked at ipython (ipython.org) ?  At least from there, you 
> can get command completion with tab, one-third of the bash 
> functionality. So if you type  boash.cle   then <tab>  it'll fill in 
> the rest.
>
>

Thanks! I will look into IPython. I am familiar with it already. Yes, I 
have two purposes for the module, but after reading these suggestions I 
have modified my goal and purpose to achieve the goal of making a useful 
and popular Python3 module. The whole point of my boash project is to 
make a useful module. How can I make this module useful? I am fixing the 
problems and implementing suggestions.

Would a Python3 game module be more useful? I plan to make a function 
that rolls a die and prints the output (You got a 5) and other similar 
random games.


Mahalo,

DCJ



More information about the Python-list mailing list