On 12/09/19 10:59 AM, Cameron Simpson wrote:
On 12Sep2019 08:24, DL Neil <pythonl...@danceswithmice.info> wrote:
In this day-and-age do you have a script in live/production-use, which is also a module? What is the justification/use case?

Many. Many many.

1: Many of my modules run their unit tests if invoked as the main programme.

I used to do this, but now prefer to keep tests in separate modules - and separate directories.


2: Several modules are their own utility programme. I've got a heap of these - anything that provides useful access to something can often be usefully used from the command line.

This is an very interesting idea - you're way ahead of me on this!

Would it be fair to describe these as more Python for systems programming/system administration, than an application for (simple) users?
(what other kind is there???)


Consider: if you write a package, would it have a __main__.py?

Well, if the answer is ever "yes" then the same applies to ordinary modules, simple enough to not be worth splitting onto a package.

May not properly appreciate this point...


So, yes, for me this is really really common.

Even for my current client project, which is largely a package, several of the individual modules within the package have their own main programmes for testing and for various utility tasks dealing solely with that particular subsystem. There's an overarching shell script to set up the environment and then do various things from the command line, and it directly invokes particular modules for some operations that act only on one subsystem.

Interesting!

Gives me pause for thought: perhaps I lean too heavily on putting 'stuff' in the test routines (and view the application from that 'direction' too often).

Multiple entry-point systems seem relatively unusual these days - perhaps a natural flow-on effect of the rise of gui- and menu-based systems?

With one client, over the years, we've developed a number of (basically) statistical analyses. Each analysis was born from a separate project. Each lives in its own directory (tree). There are some common modules held in a separate 'utility' library/package/directory. Whilst it has been suggested, the idea of an "overarching" menu-type top-level controller/distributor has never risen up the ranks of the "backlog" (sensible criticism: the money would be better spent on other priorities) - they (or at least the older ones) are quite happy to 'drop' to the command line and type the required command+args. I think that's the closest I come to what you have described. (out of interest) Would you characterise it as a common project structure?

--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to