# uproot.classname_encode

Defined in uproot.model on line 206.

uproot.model.classname_encode(classname, version=None, unknown=False)

  Converts a C++ (decoded) classname, such as `Some::Thing` into a Python classname (encoded), such as `Model_Some_3a3a_Thing`.

  If `version` is a number such as `2`, the Python name is suffixed by version, such as `Model_Some_3a3a_Thing_v2`.

  If `unknown` is True, the `Model_` prefix becomes `Unknown_`.

  C++ classnames can include namespace delimiters (`::`) and template arguments (`<` and `>`), which have to be translated into `[A-Za-z_][A-Za-z0-9_]*` for Python. Non-conforming characters and also underscores are translated to their hexadecimal equivalents and surrounded by underscores. Additionally, Python models of C++ classes are prepended with `Model_` (or `Unknown_` if a streamer isn’t found).