""" Parameters for Analysis Modules and charts. Naming principles: Classes - XxxParam These are for specific groups of parameters, with their own validation and/or defaults, but still have to be named. Defined in their own separate modules. Constants - ParamXxx These are "ready to use" full named parameters. Defined below. Chart Constants - XXX_XXX Just convenience for defining charts, likely going away, when chart definitions move into database. """ from .multiparam import MultiParam from .param import Param from .sort_by import SortByParam __all__ = [ "MultiParam", "Param", "SortByParam", "ParamSchema", "ParamBrackets", "ParamBracketsApplyTo", "BRACKETS_AGE", "BRACKETS_RECENCY", "BRACKETS_ITEM_COUNT", "MAP_DATA_ITEM", "MAP_DATA_GROUP", "MAP_DATA_DAY", "SORTED_MONTHS", "SORTED_SUPERFAN_LEVELS", ] ParamSchema = Param("schema", configurable=False) ParamBrackets = Param("brackets", list, required=False) ParamBracketsApplyTo = Param("brackets_apply_to", int, required=False, values=[1, 2]) # Notice we have special handling for 9999 in analytics modules, for better display BRACKETS_AGE = [(0, 17), (18, 24), (25, 34), (35, 44), (45, 54), (55, 64), (65, 9999)] BRACKETS_RECENCY = [(0, 1), (2, 3), (4, 5), (6, 12), (13, 21), (22, 30), (31, 9999)] BRACKETS_ITEM_COUNT = [(0, 1), (2, 3), (4, 9999)] MAP_DATA_ITEM = {"id": "label", "label": "label", "value": "value"} MAP_DATA_GROUP = {"id": "group", "group": "group"} MAP_DATA_DAY = {"id": "label", "day": "label", "value": "value"} SORTED_MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ] SORTED_SUPERFAN_LEVELS = [ "Most Intense Superfans", "Superfans: Strong Engagement", "Superfans: Moderate Engagement", "Superfans: Low Engagement", "Superfans: Weak Engagement", ] SUPERFAN_MODEL_ATTRIBUTE_LABELS = { "superfan_fanclub_member": "Are in the Fan Club, %", "superfan_vip_status": "Have VIP status, %", "superfan_marketing_optin": "Have Marketing Opt-in, %", "superfan_presave_status": "Have Presave Status, %", "superfan_paid_status": "Have Paid Status, %", "enrPurchaseQuantity": "Items purchased, on average", "userTracksPlayed": "Tracks played, on average", "profile_followers": "Profile followers, on average", "superfan_media_follows_count": "Media follows count, on average", "superfan_unique_newsletter_signups": "Newsletter signups, on average", } RFM_MODEL_ATTRIBUTE_LABELS = { "enrTransactionRecency": "Average Recency, days since last transaction", "enrTransactionFrequency": "Average Frequency, # of items purchased", "enrTransactionMonetary": "Average Monetary value, $", }