|
1 | 1 | import geopandas as gpd |
2 | 2 | import pandera.pandas as pa |
| 3 | +import pandas as pd |
3 | 4 | from .base import BaseValidator |
4 | 5 |
|
5 | 6 | # Expecting ~7,796 records returned (within ±20% tolerance). |
|
10 | 11 |
|
11 | 12 | CityOwnedPropertiesInputSchema = pa.DataFrameSchema( |
12 | 13 | columns={ |
13 | | - "opa_id": pa.Column(int, checks=pa.Check(lambda s: s.dropna() != "")), |
14 | | - "agency": pa.Column(str, nullable=True), |
| 14 | + "opa_id": pa.Column(pa.Int, checks=pa.Check(lambda s: s.dropna() != "")), |
| 15 | + "agency": pa.Column(pa.String, nullable=True), |
15 | 16 | "sideyardeligible": pa.Column( |
16 | 17 | pa.Category, nullable=True, checks=pa.Check.isin(["Yes", "No"]) |
17 | 18 | ), |
|
23 | 24 |
|
24 | 25 | CityOwnedPropertiesOutputSchema = pa.DataFrameSchema( |
25 | 26 | columns={ |
26 | | - "opa_id": pa.Column(int, checks=pa.Check(lambda s: s.dropna() != "")), |
27 | | - "market_value": pa.Column(int, nullable=True), |
28 | | - "sale_date": pa.Column(pa.DateTime, nullable=True), |
29 | | - "sale_price": pa.Column(int, nullable=True), |
30 | | - "owner_1": pa.Column(str, nullable=True), |
31 | | - "owner_2": pa.Column(str, nullable=True), |
32 | | - "building_code_description": pa.Column(str, nullable=True), |
33 | | - "zip_code": pa.Column(str, nullable=True), |
34 | | - "zoning": pa.Column(str, nullable=True), |
35 | | - "parcel_type": pa.Column(str, nullable=True), |
36 | | - "standardized_address": pa.Column(str, nullable=True), |
| 27 | + "opa_id": pa.Column(pa.Int, checks=pa.Check(lambda s: s.dropna() != "")), |
| 28 | + "market_value": pa.Column(pa.Int, nullable=True), |
| 29 | + "sale_date": pa.Column(pd.DatetimeTZDtype(tz="UTC"), nullable=True), |
| 30 | + "sale_price": pa.Column(pa.Float, nullable=True), |
| 31 | + "owner_1": pa.Column(pa.String, nullable=True), |
| 32 | + "owner_2": pa.Column(pa.String, nullable=True), |
| 33 | + "building_code_description": pa.Column(pa.String, nullable=True), |
| 34 | + "zip_code": pa.Column(pa.String, nullable=True), |
| 35 | + "zoning": pa.Column(pa.String, nullable=True), |
| 36 | + "parcel_type": pa.Column(pa.String, nullable=True), |
| 37 | + "standardized_address": pa.Column(pa.String, nullable=True), |
37 | 38 | "vacant": pa.Column(pa.Bool, nullable=True), |
38 | | - "district": pa.Column(str, nullable=True), |
39 | | - "neighborhood": pa.Column(str, nullable=True), |
40 | | - "rco_info": pa.Column(str, nullable=True), |
41 | | - "rco_names": pa.Column(str, nullable=True), |
42 | | - "city_owner_agency": pa.Column(str, nullable=True), |
| 39 | + "district": pa.Column(pa.String, nullable=True), |
| 40 | + "neighborhood": pa.Column(pa.String, nullable=True), |
| 41 | + "rco_info": pa.Column(pa.String, nullable=True), |
| 42 | + "rco_names": pa.Column(pa.String, nullable=True), |
| 43 | + "city_owner_agency": pa.Column(pa.String, nullable=True), |
43 | 44 | "side_yard_eligible": pa.Column( |
44 | 45 | pa.Category, nullable=True, checks=pa.Check.isin(["Yes", "No"]) |
45 | 46 | ), |
|
0 commit comments