UPDATE: Adhering to PEP8 conventions on naming packages using lower-case letters and underscores nicely sidesteps this issue. So, for namespace with a root package of "MyFirstPackage" would have a lib/python/myfirstpackage folder with any .py files that need to accompany the namespace in it.

The loader failing because the package matched the root namespace is probably still a bug of some sort, but now that I know a little better about naming conventions I can see why this might not have been tested.

Hope this saves some of you norms (like me) some time if you run across it.

Okay, here's the latest.

I had started to outfit some of our repos with boilerplate IPM modules to take advantage of the requirements.txt processing. Modeling some of the things mu team and I had seen elsewhere, we put a FileCopy in the module file to copy the contents of the repo's python directory to a subdirectory of lib/python that matched the root package name.

A high-speed team member picked through the custom loader to suss out the behavior and found that once it encountered the subdirectory matching the root package name, the resolution of the modules that are stored in globals never happened.

So, removing the directory restored the default loading behavior and I will caulk it up to my poor understanding of how repo-based modules are supposed to be deployed.

Assuming that we will eventually have file-based .py modules to deploy, what is the best way to keep FooOperation.py from one namespace out of the way of FooOperation.py in another?

Right, I understand the predicate aspect of FindDocuments(), but I understood that any value used in a predicate must first be created as a property with CreateProperty(). The doc for that method is sparse, and I have not quite grok'd how a dynArry would play into the expression. Creating a property for "FullName" is pretty self-explanatory, especially since it is at the root of the hierarchy. I've also seen an example in the forums where a property was created using a specific index in an array -- which would not be terribly useful for an unordered collection. Assuming that the person object in the example is the document in the DocDB and the PhoneNumber array above has no particular order, what would be the expression used in CreateProperty() for "type" and/or "number??

I think once I see how that particular aspect is supposed to work, the rest of it is easy.

Thank you all for taking the time to offer help.

One of the best features I've run across in these types of tools is the ability to remember the anonymizations that were applied to a message. For example, you would define the MRN and Encounter Number fields as key fields for an HL7 message type and whatever transformations were applied to the first message with those keys will be applied to any of them that follow. It is certainly a non-trivial feature to implement, but it gives you the ability to keep a patient encounter intact as the visit goes from admit to discharge. This scares out a lot of problems before go-live.

Regardless, nice work and thank you for your efforts.

Hi Andre-Claude,

Thank you for the contribution! We've begun to fold the use of this Mock framework into our daily activities.

I know this post is rather old, but I do have a question. Some of the classes in the repository use classes that are not present in the repo any where (Tests.Fw.Mock.CIsEqualObjectParamValidator for example). If you are willing, would you be able to commit those to the GitLab site?

Again, thank you for sharing this with the rest of us.