code: def parse_known_args(self, args=None, namespace=None):
          
          # load the config_manager within the scope of the method that uses it
          # so that we avoid circular references in the outer scope
          from configman.config_manager import ConfigurationManager
          configuration_manager = ConfigurationManager(
              definition_source=[self.get_required_config()],
              values_source_list=self.value_source_list,
              argv_source=args,
              app_name=self.prog,
              app_version=self.version,
              app_description=self.description,
              use_auto_help=False,
          )
          conf = configuration_manager.get_config(
              mapping_class=create_key_translating_dot_dict(
                  "HyphenUnderscoreDict",
                  (('-', '_'),)
              )
          )
          return conf
docs: this method hijacks the normal argparse Namespace generation,
          shimming configman into the process. The return value will be a
          configman DotDict rather than an argparse Namespace.