Data Validation¶
Pydantic Style Classes for validating data for Custom Content Upload and BrightView Training
UploadItem
¶
Validation model for an item of custom content to be uploaded. Checks for required fields, with valid types and formatting.
Fields¶
- title: String, Document Title
- url: Url, Unique Document Url,
- guid: String, Unique Document Identifier
- author: String, Document Author
- language: String, 2 letter langauge code
- date: String, Date or Datetime
- contents: String, Document text (max length 16384 characters)
- geolocation: Optional Mapping Identifier
- custom: Optinal Mapping of key value string pairs
- age: Optional Integer
- gender: Optional gender M/F
- pageId: Optional String
- parentGuid: Optional String
- authorProfileID: Optional String
- engagementType: Optional String REPLY/RETWEET/COMMENT
Example Usage¶
>>> from hexpy.models import UploadItem >>> item_dict = { "date": "2010-01-26T16:14:00", "contents": "Example content", "guid": "This is my guid", "title": "Example Title", "author": "me", "language": "en", "gender": "F", "geolocation": { "id": "USA.NY" }, "pageId": "This is a pageId", "parentGuid": "123123", "authorProfileId": "1234567", "custom": { "field0": "value0", "field1": "45.2", "field2": "123", "field3": "value3", "field4": "value4", "field5": "5_stars", "field6": "1200", "field7": "5", "field8": "value5", "field9": "value6" } } >>> upload_item = UploadItem(**item_dict)
UploadCollection
¶
Validation model for collection of items to be uploaded. Checks for duplicate upload items, easily convert to/from dataframe
Fields¶
- items: List of UploadItems or valid dictionaries
Example Usage¶
>>> from hexpy.models import UploadItem, UploadCollection >>> items = [ { "date": "2010-01-26T16:14:00", "contents": "Example content", "guid": "This is my guid", "title": "Example Title", "author": "me", "language": "en", "gender": "F", "geolocation": { "id": "USA.NY" }, "pageId": "This is a pageId", "parentGuid": "123123", "authorProfileId": "1234567", "custom": { "field0": "value0", "field1": "45.2", "field2": "123", "field3": "value3", "field4": "value4", "field5": "5_stars", "field6": "1200", "field7": "5", "field8": "value5", "field9": "value6" } } ] >>> upload_collection = UploadCollection(items=items)
Methods¶
from_dataframe¶
from_dataframe(df: pd.DataFrame) -> UploadCollection
Create UploadCollection from pandas DataFrame containing necessary fields.
Arguments:
- df: pd.DataFrame
to_dataframe¶
python
to_dataframe() -> pd.DataFrame
Convert UploadCollection to pandas Dataframe with one colume for each field.
TrainItem
¶
Validation model for training post to be uploaded. Checks for required fields, with valid types and formatting.
Fields¶
- type: String, Custom Content Type Name
- title: String, Document Title
- url: Url, Unique Document Url
- author: String, Document Author
- language: String, 2 letter langauge code
- date: String, Date or Datetime
- contents: String, Document Body
- categoryid: Integer of Category defined in Monitor
Example Usage¶
>>> from hexpy.models import TrainItem >>> item_dict = { "title": "Example Title", "date": "2010-01-26T16:14:00", "author": "me", "url": "http://www.crimsonhexagon.com/post1", "contents": "Example content", "language": "en", "categoryid": 9107252649, } >>> train_item = TrainItem(**item)
TrainCollection
¶
Validation model for collections of training posts to be uploaded. Checks for duplicate training posts, easily convert to/from dataframe
Fields¶
- items: List of TrainItems or valid dictionaries
Example Usage¶
>>> from hexpy.models import TrainItem, TrainCollection >>> items = [ { "title": "Example Title", "date": "2010-01-26T16:14:00", "author": "me", "url": "http://www.crimsonhexagon.com/post1", "contents": "Example content", "language": "en", "categoryid": 9107252649, } ] >>> train_collection = TrainCollection(items=items])
Methods¶
from_dataframe¶
from_dataframe(df: pd.DataFrame) -> TrainCollection
Create TrainCollection from pandas DataFrame containing necessary fields.
Arguments:
- df: pd.DataFrame
to_dataframe¶
python
to_dataframe() -> pd.DataFrame
Convert TrainCollection to pandas Dataframe with one colume for each field.
AnalysisRequest
¶
Model for submitting valid analysis request via AnalysisAPI
Fields¶
- analysis: List of analysis type strings
- keywords: String of boolean logic
- sources: List of source strings
- startDate: Datetime String
- endDate: Datetime String
- timezone: String
- requestUsage: Boolean
- gender: Optional include/exclude and array of gender strings
- languages: Optional include/exclude and array of language strings
- locations: Optional include/exclude and array of location strings
Example Usage¶
>>> from hexpy.models import AnalysisRequest >>> request_dict = { "analysis": [ "volume", "sentiment", "emotion", "affinity", "gender", "age", "location", "source", "reach" ], "keywords": "iPhone", "languages": { "type": "include", "values": [ "EN" ] }, "gender": { "type": "include", "values": [ "M" ] }, "locations": { "type": "exclude", "values": [ "JPN" ] }, "sources": [ "TWITTER", "TUMBLR", "INSTAGRAM", "BLOGS", "REVIEWS", "GOOGLE_PLUS", "NEWS", "YOUTUBE", "FORUMS" ], "startDate": "2016-09-20T00:00:00+00:00", "endDate": "2016-09-21T00:00:00+00:00", "timezone": "America/New_York", "requestUsage": True } >>> analysis_request = AnalysisRequest(**request_dict)