On 16/03/2023 01.47, Loris Bennett wrote:
I have written a program which, as part of the non-core functionality,
contains a module to generate email.  This is currently very specific
to my organisation, so the main program contains

   import myorg.mailer

This module is specific to my organisation in that it can ask an
internal server to generate individualised salutations for a given UID
which is known within the organisation.

I want to share the code with other institutions, so I would like to

   1. replace the organisation-specific mailer with a generic one
   2. allow an organisation-specific mailer to be used instead of the
      generic one, if so desired

This may call for the plug-in pattern, ie the user will choose whether to plug-in the specific, or the generic, module.

In Python, we would tend to use a Dependency Injection approach (one of Uncle Bob's SOLID principles).

There's a rather abstract description of the plugin pattern at https://martinfowler.com/eaaCatalog/plugin.html

OpenClassrooms has a more practical discussion at https://openclassrooms.com/en/courses/6397806-design-your-software-architecture-using-industry-standard-patterns/6896171-plug-in-architecture

There is a PyPi library called pluggy (not used it). I've used informal approaches using an ABC as a framework/reminder (see @George's response).

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

Reply via email to