docs: def register(name=EopDb.DEFAULT_DBNAME):
      """Decorator for registering an Eop Database
  
      Example:
  
      .. code-block:: python
  
          @register
          class SqliteEnvDatabase:
              # sqlite implementation
              # this database will be known as 'default'
  
          @register('json')
          class JsonEnvDatabase:
              # JSON implementation
  
          EopDb.get(58090.2)                    # get Eop from SqliteEnvDatabase
          EopDb.get(58090.2, dbname='default')  # same as above
          EopDb.get(58090.2, dbname='json')     # get Eop from JsonEnvDatabase
      """
  
      # I had a little trouble setting this function up, due to the fact that
      # I wanted it to be usable both as a simple decorator (``@register``)
      # and a decorator with arguments (``@register('mydatabase')``).
      # The current implementation allows this dual-use, but it's a bit hacky.
  
      # In the simple decorator mode, when the @register decorator is called
      # the argument passed is the class to decorate. So it *is* the decorated
      # function
  
      # In the decorator-with-arguments mode, the @register decorator should provide
      # a callable that will be the decorated function. This callable takes
      # the class you want to decorate
  
      if isinstance(name, str):
          # decorator with argument
          def wrapper(klass):
              EopDb.register(klass, name)
              return klass
  
          return wrapper
  
      else:
          # simple decorator mode
          klass = name
  
          EopDb.register(klass)
          return klass