Ejemplo n.º 1
0
def test_long_reconcile(us_capitals):

    df = pd.DataFrame.from_dict(us_capitals, orient="index", columns=["Capital"])

    results = reconcile(df["Capital"], type_id="Q515")

    assert results.shape == (51, 7)
Ejemplo n.º 2
0
def test_reconcile_against_triple(gene_data):

    results = reconcile(
        gene_data["gene"], type_id="Q7187", has_property=("P703", "Q15978631")
    )

    assert results["id"][0] == "Q227339"
Ejemplo n.º 3
0
def test_reconcile_against_triple(gene_data):

    results = reconcile(
        gene_data["gene"], property_mapping={"P703": gene_data["species"]}
    )

    assert results["id"][0] == "Q227339"
Ejemplo n.º 4
0
def test_basic_reconcile(city_data):

    expected_last_column = pd.Series(city_data["City"].unique())
    results = reconcile(city_data["City"], type_id="Q515")

    assert results.shape == (4, 7)
    pd.testing.assert_series_equal(
        expected_last_column, results["input_value"], check_names=False
    )
Ejemplo n.º 5
0
def test_reconcile_without_type(city_data):

    results = reconcile(city_data["City"])

    expected_names = ["Rio de Janeiro", "São Paulo", "Christmas"]

    retrieved = results["name"].to_list()[0:3]

    assert retrieved == expected_names
Ejemplo n.º 6
0
def main():
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='command')

    # import
    import_parser = subparsers.add_parser('import')
    sources = ["checking", "credit", "gnucash"]
    import_parser.add_argument("--source",
                               choices=sources,
                               dest="source",
                               required=True)
    import_parser.add_argument("--file", dest="fname", required=True)
    import_parser.add_argument("--startdate", dest="start_date", required=True)
    import_parser.add_argument("--enddate", dest="end_date", required=True)

    # db setup
    setup_parser = subparsers.add_parser('create-tables')
    setup_parser.add_argument("--drop", action="store_true", dest="drop")

    # reconcile
    reconcile_parser = subparsers.add_parser('reconcile')
    reconcile_parser.add_argument("--exact-only",
                                  action="store_true",
                                  dest="exact_only")
    reconcile_parser.add_argument("--reset-transactions",
                                  action="store_true",
                                  dest="reset_transactions")

    # remove
    remove_parser = subparsers.add_parser('remove')
    remove_parser.add_argument("--batch-id", dest="batchid", required=True)

    args = parser.parse_args()
    if args.command == "create-tables":
        db_setup.create_tables(args.drop)
    elif args.command == "import":
        importer.import_file(args.fname, args.source, args.start_date,
                             args.end_date)
    elif args.command == "reconcile":
        reconciler.reconcile(args.exact_only, args.reset_transactions)
    elif args.command == "remove":
        remover.remove_batch(args.batchid)
Ejemplo n.º 7
0
def test_long_reconcile(us_capitals):

    df = pd.DataFrame.from_dict(
        us_capitals, orient="index", columns=["Capital"]
    ).reset_index()

    results = reconcile(
        df["Capital"], type_id="Q515", property_mapping={"P1376": df["index"]}
    )

    assert results.shape == (51, 7)
Ejemplo n.º 8
0
def test_no_results():
    """Tests if parsing with absent results still works"""

    test_series = pd.Series(["Querula rubricollis", "Querula rubricollis"])

    reconciled = reconcile(test_series, type_id="Q16521")

    expected_results = pd.DataFrame(
        {
            "id": [np.NaN],
            "match": [False],
            "input_value": ["Querula rubricollis"],
        }
    )

    pd.testing.assert_frame_equal(expected_results, reconciled)
Ejemplo n.º 9
0
def reconcile_profs():

    profs = pd.read_csv("results/profs.csv")

    reconciled_profs = reconcile(profs["professor"], type_id="Q5")

    best_matches = reconciled_profs.loc[
        (reconciled_profs["score"].eq(100.0))
        & (reconciled_profs["match"].eq(True))][["id", "input_value"]]

    merged_profs = best_matches.merge(profs,
                                      left_on="input_value",
                                      right_on="professor",
                                      how="left").drop("input_value", axis=1)

    merged_profs["lattes_id"] = merged_profs["lattes"].str.replace(
        "http://lattes.cnpq.br/", "", regex=True)

    return merged_profs
Ejemplo n.º 10
0
def test_fake_top_res(city_data):
    with raises(ValueError):
        reconcile(city_data["City"], type_id="Q515", top_res="I'm such a fake argument")
Ejemplo n.º 11
0
def main():
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='command')

    # import
    import_parser = subparsers.add_parser('import')
    sources = ["Gnucash", "Institution"]
    import_parser.add_argument("-s",
                               "--source",
                               choices=sources,
                               dest="source",
                               required=True)
    import_parser.add_argument("-a",
                               "--account",
                               dest="account",
                               required=False,
                               help="target account description or ID")
    import_parser.add_argument("-f", "--file", dest="fname", required=True)
    import_parser.add_argument(
        "-i",
        "--infer",
        action='store_true',
        dest="infer",
        help=
        "infer dates from filename, format: file-name_{{startdate}}_{{enddate}}.csv dates YYYYMMDD"
    )
    import_parser.add_argument("--startdate",
                               dest="start_date",
                               required=False,
                               help="start date formatted as YYYY-MM-DD")
    import_parser.add_argument("--enddate",
                               dest="end_date",
                               required=False,
                               help="end date formatted as YYYY-MM-DD")

    # db setup
    setup_parser = subparsers.add_parser('create-tables')
    setup_parser.add_argument("--drop",
                              action="store_true",
                              dest="drop",
                              help="drop existing tables")
    setup_parser.add_argument("--force",
                              action="store_true",
                              dest="force",
                              help="force dropping tables without prompt")

    # reconcile
    reconcile_parser = subparsers.add_parser('reconcile')
    reconcile_parser.add_argument("--exact-only",
                                  action="store_true",
                                  dest="exact_only")
    reconcile_parser.add_argument("--reset-transactions",
                                  action="store_true",
                                  dest="reset_transactions")

    # remove
    remove_parser = subparsers.add_parser('remove')
    remove_parser.add_argument("--batch-id", dest="batchid", required=True)

    args = parser.parse_args()
    if args.command == "create-tables":
        db_setup.create_tables(args.drop, args.force)
    elif args.command == "import":
        importer.import_file(args.fname, args.source, args.account, args.infer,
                             args.start_date, args.end_date)
    elif args.command == "reconcile":
        reconciler.reconcile(args.exact_only, args.reset_transactions)
    elif args.command == "remove":
        remover.remove_batch(args.batchid)