Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import esridump
from .lodes import OnTheMap
from .core import AreaFilter, GEO_URLS
try: # Python 2.7+
from logging import NullHandler
except ImportError:
class NullHandler(logging.Handler):
def emit(self, record):
pass
logging.getLogger(__name__).addHandler(NullHandler())
class GeoClient(census.core.Client):
@supported_years(2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2000, 1990)
def geo_tract(self, fields, geojson_geometry, year=None, **kwargs):
if year is None:
year = self.default_year
filtered_tracts = AreaFilter(geojson_geometry,
GEO_URLS['tracts'][self.default_year])
for tract, intersection_proportion in filtered_tracts:
context = {'state' : tract['properties']['STATE'],
'county' : tract['properties']['COUNTY']}
within = 'state:{state} county:{county}'.format(**context)
tract_id = tract['properties']['TRACT']
result = self.get(fields,
{'for': 'tract:{}'.format(tract_id),
@supported_years()
def state_county_subdivision(self, fields, state_fips,
county_fips, subdiv_fips, **kwargs):
return self.get(fields, geo={
'for': 'county subdivision:{}'.format(subdiv_fips),
'in': 'state:{} county:{}'.format(state_fips, county_fips),
}, **kwargs)
class ACS1DpClient(ACS1Client):
dataset = 'acs1/profile'
years = (2017, 2016, 2015, 2014, 2013, 2012)
class SF1Client(Client):
default_year = 2010
dataset = 'sf1'
years = (2010, 2000, 1990)
def _switch_endpoints(self, year):
if year > 2000:
self.endpoint_url = 'https://api.census.gov/data/%s/dec/%s'
self.definitions_url = 'https://api.census.gov/data/%s/dec/%s/variables.json'
self.definition_url = 'https://api.census.gov/data/%s/dec/%s/variables/%s.json'
self.groups_url = 'https://api.census.gov/data/%s/dec/%s/groups.json'
else:
self.endpoint_url = super(SF1Client, self).endpoint_url
self.definitions_url = super(SF1Client, self).definitions_url
def state_district_place(self, fields, state_fips,
district, place, **kwargs):
return self.get(fields, geo={
'for': 'place/remainder (or part):{}'.format(place),
'in': 'state:{} congressional district:{}'.format(
state_fips, district),
}, **kwargs)
@supported_years(2010)
def state_zipcode(self, fields, state_fips, zcta, **kwargs):
return self.get(fields, geo={
'for': 'zip code tabulation area (or part):{}'.format(zcta),
'in': 'state:{}'.format(state_fips),
}, **kwargs)
class SF3Client(Client):
default_year = 2000
dataset = 'sf3'
years = (2000, 1990)
@supported_years()
def state_county_tract(self, fields, state_fips,
county_fips, tract, **kwargs):
return self.get(fields, geo={
'for': 'tract:{}'.format(tract),
'in': 'state:{} county:{}'.format(state_fips, county_fips),
}, **kwargs)
@supported_years()
def state_county_blockgroup(self, fields, state_fips, county_fips,
@supported_years()
def state_legislative_district_upper(self, fields, state_fips, legislative_district, **kwargs):
return self.get(fields, geo={
'for': 'state legislative district (upper chamber):{}'.format(str(legislative_district).zfill(3)),
'in': 'state:{}'.format(state_fips),
}, **kwargs)
@supported_years()
def state_legislative_district_lower(self, fields, state_fips, legislative_district, **kwargs):
return self.get(fields, geo={
'for': 'state legislative district (lower chamber):{}'.format(str(legislative_district).zfill(3)),
'in': 'state:{}'.format(state_fips),
}, **kwargs)
class ACSClient(Client):
def _switch_endpoints(self, year):
if year > 2009:
self.endpoint_url = 'https://api.census.gov/data/%s/acs/%s'
self.definitions_url = 'https://api.census.gov/data/%s/acs/%s/variables.json'
self.definition_url = 'https://api.census.gov/data/%s/acs/%s/variables/%s.json'
self.groups_url = 'https://api.census.gov/data/%s/acs/%s/groups.json'
else:
self.endpoint_url = super(ACSClient, self).endpoint_url
self.definitions_url = super(ACSClient, self).definitions_url
self.definition_url = super(ACSClient, self).definition_url
self.groups_url = super(ACSClient, self).groups_url
def tables(self, *args, **kwargs):
self._switch_endpoints(kwargs.get('year', self.default_year))