Example #1
0
def test_image_repo_parsing_errors(pg_repo_local):
    repo = Repository("test", "pg_mount")
    assert ImageType(get_image=True, default="latest")("test/pg_mount")[1] == repo.images["latest"]
    assert (
        ImageType(get_image=True, default="latest")("test/pg_mount:00000000")[1]
        == repo.images["00000000"]
    )

    with pytest.raises(ImageNotFoundError):
        ImageType(get_image=True, default="latest")("test/pg_mount:doesnt_exist")

    with pytest.raises(RepositoryNotFoundError):
        ImageType(get_image=True, default="latest")("test/doesntexist:latest")

    with pytest.raises(RepositoryNotFoundError):
        RepositoryType(exists=True)("test/doesntexist")
Example #2
0
def pull_c(repository_or_image, download_all, overwrite_object_meta, tags):
    """
    Pull changes / download a single image.
    """
    repository, image = repository_or_image
    repository.pull(
        download_all,
        single_image=image,
        overwrite_objects=overwrite_object_meta,
        overwrite_tags=tags,
    )


@click.command(name="clone")
@click.argument("remote_repository_or_image", type=ImageType(default=None))
@click.argument("local_repository", required=False, type=RepositoryType())
@click.option("-r", "--remote", help="Name of the remote engine")
@click.option(
    "-d",
    "--download-all",
    help="Download all objects immediately instead of on checkout.",
    default=False,
    is_flag=True,
)
@click.option(
    "-f",
    "--overwrite-object-meta",
    help="Overwrite metadata for existing objects",
    is_flag=True,
)
@click.option("-t",
Example #3
0
    Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv`

    `sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."`

    Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without
    having to check the image out).
    """
    from splitgraph.ingestion.csv import csv_adapter

    repository, image = image_spec
    csv_adapter.to_data(query, image, repository, layered, buffer=file)


@click.command(name="import")
@click.argument("repository", type=RepositoryType(exists=True))
@click.argument("table")
@click.option(
    "-f",
    "--file",
    type=click.File("rb"),
    default="-",
    help="File name to import data from, default stdin.",
)
@click.option("-r",
              "--replace",
              default=False,
              is_flag=True,
              help="Replace the table if it already exists.")
@click.option(
    "-k",
Example #4
0
                            conn_params=ddn_params,
                            registry=False,
                            check_version=False)

    try:
        results = engine.run_sql(query)
        emit_sql_results(results, use_json=json, show_all=show_all)
    finally:
        engine.close()


@click.command("readme")
@click.option("--remote",
              default="data.splitgraph.com",
              help="Name of the remote registry to use.")
@click.argument("repository", type=RepositoryType(exists=False))
@click.argument("readme", type=click.File("r"))
def readme_c(remote, repository, readme):
    """Upload or a README to a Splitgraph repository.

    The repository must have already been pushed. The README must be a file in Markdown format.
    """
    from splitgraph.cloud import GQLAPIClient

    client = GQLAPIClient(remote)
    client.upsert_readme(namespace=repository.namespace,
                         repository=repository.repository,
                         readme=readme.read())
    click.echo("README updated for repository %s." % str(repository))