The egg that the provided path points to will be uploaded to Databricks.
     All jobs which use the same major version of the library will be updated
     to use the new version, and all version of this library in the production
     folder with the same major version and a lower minor version will
     be deleted.

    Unlike `upload`, `upload_and_update` does not ask for a folder because it
     relies on the production folder specified in the config. This is to
     protect against accidentally updating jobs to versions of a library still
     in testing/development.

    All egg names already in Databricks must be properly formatted
     with versions of the form <name>-0.0.0.

def upload_and_update(path, token, cleanup):
    """
    The egg that the provided path points to will be uploaded to Databricks.
     All jobs which use the same major version of the library will be updated
     to use the new version, and all version of this library in the production
     folder with the same major version and a lower minor version will
     be deleted.

    Unlike `upload`, `upload_and_update` does not ask for a folder because it
     relies on the production folder specified in the config. This is to
     protect against accidentally updating jobs to versions of a library still
     in testing/development.

    All egg names already in Databricks must be properly formatted
     with versions of the form <name>-0.0.0.
    """
    config = _load_config(CFG_FILE)
    token = _resolve_input(token, 'token', 'token', config)
    folder = _resolve_input(None, 'folder', 'prod_folder', config)

    update_databricks(
        logger,
        path,
        token,
        folder,
        update_jobs=True,
        cleanup=cleanup
    )