adpay.stats package

This package provides the functionality behind all adpay calculations.

The responsibility break down is:

  • adpay.stats.cache provides a cache for speeding up the calculations (legacy mode only)
  • adpay.stats.consts is the module hosting configuration
  • adpay.stats.legacy provides the legacy, user-value algorithm for calculating payments
  • adpay.stats.main provides the default algorithm for calculating payments
  • adpay.stats.tasks provides functionality for periodical calculations
  • adpay.stats.utils provides helper functionality for calculating payments

adpay.stats.cache module

adpay.stats.cache.keyword_inc(keyword)[source]

Increment keyword count

Parameters:keyword – keyword to be incremented
Returns:
adpay.stats.cache.reset_keywords_stats()[source]

Reset keyword stats to default/

Returns:

adpay.stats.tasks module

adpay.stats.tasks.adpay_task(*args, **kwargs)[source]

Recalculate payments and schedule them again in interval_seconds. :param interval_seconds: time after which the task will rerun.

adpay.stats.tasks.calculate_events_payments(*args, **kwargs)[source]

Routing function for different algorithms. Controlled by adpay.stats.consts constant values.

Parameters:
  • campaign_doc
  • timestamp
  • payment_percentage_cutoff
Returns:

adpay.stats.tasks.configure_tasks(interval_seconds=2)[source]

Schedule payment calculation. :param interval_seconds:

adpay.stats.tasks.force_payment_recalculation(*args, **kwargs)[source]

Recalculate payments now.

adpay.stats.utils module

adpay.stats.utils.FILTER_SEPARATOR = '--'

Filter separator, used in range filters (see protocol or api documentation).

adpay.stats.utils.create_user_budget(*args, **kwargs)[source]

Calculate individual user budgets.

User budget dictionary default values for each event type are:

{ ‘default_value’: 0.0, # Default value for this event type ‘event_value’: 0.0, # Calculated event value (used later on) ‘num’: 0, # Number of events of this time in the time period ‘share’: 0.0 # Share of this user for this event type in the time period }
Parameters:
  • campaign_doc – Campaign document
  • timestamp – Timestamp (last hour)
  • uid
Returns:

User budget dictionary

adpay.stats.utils.delete_campaign(*args, **kwargs)[source]

Delete campaign document and all campaign banners

Parameters:campaign_id
Returns:
adpay.stats.utils.filter_event(event_doc, campaign_doc, banner_doc)[source]

Filter out events that don’t pass our validation conditions. See adpay,stats.consts module for more details.

Parameters:
  • event_doc – Event document under consideration.
  • campaign_doc – Campaign document for this event.
  • banner_doc – Banner document for this event.
Returns:

Reason status for rejection (0 - not rejected). See adpay.stats.consts.

adpay.stats.utils.get_default_event_payment(event_doc, max_cpc, max_cpm)[source]

This is maximum payment. Defined in campaign or, in case of custom events (eg. conversions) in event itself.

Parameters:
  • event_doc – Event document
  • max_cpc – Cost per click
  • max_cpm – Cost per view/impression (CPM)
Returns:

Payment per event

adpay.stats.utils.update_events_payments(*args, **kwargs)[source]

Update or create event payments in the database by dividing user budget among events.

Parameters:
  • campaign_doc – Campaign document
  • timestamp – Timestamp for the time period of calculation
  • uid – User identifier
  • user_budget – User budget
Returns:

adpay.stats.utils.validate_bounds(bounds, keyword_values)[source]

Validate if keyword value is correct. Value is between bounds (bounds has two elements) or Value is equal to bounds (default, bounds is assumed to have one element)

Parameters:
  • bounds – Iterable (1 or 2 elements)
  • keyword_values – Keyword value being tested.
Returns:

True or False

adpay.stats.utils.validate_exclude_keywords(filters_dict, keywords)[source]

Validate campaign exclude filters.

Parameters:
  • filters_dict – Required and excluded keywords
  • keywords – Keywords being tested.
Returns:

True or False

adpay.stats.utils.validate_keywords(filters_dict, keywords)[source]

Validate campaign filters.

Parameters:
  • filters_dict – Required and excluded keywords
  • keywords – Keywords being tested.
Returns:

True or False

adpay.stats.utils.validate_require_keywords(filters_dict, keywords)[source]

Validate campaign require filters.

Parameters:
  • filters_dict – Required and excluded keywords
  • keywords – Keywords being tested.
Returns:

True or False