task/de40-ta137 -- Extend daemon service config parser to parse
environment.prod setting

nparcel/b2cconfig/__init__.py
* new method parse_scalar_config() that can parse and allocate all
  scalar type variables

b2cconfig/commsb2cconfig.py
nparcel/b2cconfig/exporterb2cconfig.py
nparcel/b2cconfig/healthb2cconfig.py
nparcel/b2cconfig/mapperb2cconfig.py
nparcel/b2cconfig/podb2cconfig.py
nparcel/b2cconfig/reminderb2cconfig.py
nparcel/b2cconfig/reporterb2cconfig.py
* updated __init__() to use the refactored
  nparcel.b2cconfig.parse_scalar_config() method

nparcel/daemonservice.py
* new attribute config that holds the daemon level nparcel.B2CConfig
  object
* add config to the parcel.DaemonService __init__() parameter list
* parse environment.prod from config and set local attribute via
  __init__

nparcel/adpdaemon.py
nparcel/commsdaemon.py
* refactor __init__() so that parcel.B2CConfig() class object is
  passed to the nparcel.DaemonService() class initialiser

nparcel/commsdaemon.py
* update the comms_kwargs property so that prod is taken from self
  rather than the config object

nparcel/adpdaemon.py
nparcel/loaderdaemon.py
* remove prod attribute initialisation from __init__ as this is now
  handled at the nparcel.DaemonServices level
task/de40-ta138 -- Incomplete subject heading for SMS and email failed
notifications

nparcel/emailer.py
* removed a redundant version of the get_subject_line() method.  There
  were actually two methods with the same name in the module
* refactored the get_subject_line() method so that the removal of the
  trailing newline is managed in the parcel.utils.files.templater()
  function

nparcel/utils/files.py
* update the templater() function so that is strips off the trailing
  newline
task/de40-ta139 -- Missing filename in the processing error alert email

nparcel/daemonservice.py
* added parameter to the send_table() method signature so that an
  identifier token can be passed

nparcel/loaderdaemon.py
nparcel/filterdaemon.py
* updated the _start() method so that the call to the send_table method
  includes the filename as an identifier
task/us151-ta134 -- OnDelivery -- Comms Delivery Partner
Configuration settings

nparcel/b2cconfig/__init__.py
* factor out ondelivery_loop into
  nparcel.b2cconfig.ondeliveryb2cconfig
* update the parse_scalar_config(0 method signature so that it
  can accept a "cast_type* parameter to force a cast when the value
  is parsed

nparcel/b2cconfig/commsb2cconfig.py
nparcel/b2cconfig/exporterb2cconfig.py
nparcel/b2cconfig/healthb2cconfig.py
nparcel/b2cconfig/mapperb2cconfig.py
nparcel/b2cconfig/podb2cconfig.py
nparcel/b2cconfig/reminderb2cconfig.py
nparcel/b2cconfig/reporterb2cconfig.py
* factor out environment.prod as this is handled in the
  nparcel.daemonservice module

nparcel/b2cconfig/ondeliveryb2cconfig.py
* new module structure to handle OnDelivery based config items

nparcel/b2cconfig/__init__.py
* refactored the parse_scalar_config() method to handle a list of
  values

nparcel/utils/setter.py
* new module structure to factor out the routine of setting a
  variable value.  Supports scalars, lists and dicts
task/us151-ta134 -- OnDelivery -- Comms Delivery Partner Configuration
settings (2nd commit)

nparcel/daemonservice.py
* parse and load support_emails config config option

nparcel/b2cconfig/commsb2cconfig.py
nparcel/b2cconfig/exporterb2cconfig.py
nparcel/b2cconfig/healthb2cconfig.py
nparcel/b2cconfig/mapperb2cconfig.py
nparcel/b2cconfig/podb2cconfig.py
* factor out the support_emails config parse and load as this in now
  handled by the nparcel.daemonservice module

nparcel/b2cconfig/__init__.py
* factor out the inbound_tcd, tcd_filename_format,
  uncollected_day_range, file_cache_size configuration attributes into
  nparcel.b2cconfig.ondeliveryb2cconfig.py
task/us151-ta132 -- OnDelivery - Uncollected Job Item query should be
Delivery Partner aware

nparcel/table/jobitem.py
* updated the uncollected_jobitems_sql() method's signature to accept
  a tuple of Delivery Partners to filter uncollected job items against
* refactored the uncollected_jobitems_sql() method to incorporate
  Delivery Partners filter

nparcel/ondelivery.py
* updated the process() and get_uncollected_job_items() method
  signature to accept a tuple of delivery_partners
task/us151-ta133 -- OnDelivery - Integrate Delivery Partner
configuration into workflow

nparcel/b2cconfig/__init__.py
* new method parse_dict_config() that can parse a ConfigParser section
  into a python dictionary structure
* refactored the business_units and comms_delivery_partner attributes
  to use parse_dict_config()

nparcel/ondeliverydaemon.py
* refactored the process() method so that each PE and SC4 uncollected
  lookup is done per BU ID.  This is so that we can feed in the
  appropriate Delivery Partners into the SQL per BU
* accept business_units and comms_delivery_partners via config
* new method delivery_partner_lookup() that identifies the business
  unit name associated with  a given BU ID and returns a tuple of
  Delivery Partners
* update the _start() method so that each call to the OnDelivery
  process() method provides the BU's Delivery Partners
Documentation update
Tidy-up before closing of feature
task/de41-ta140 -- OnDelivery -- Comms template selection configuration
settings

nparcel/b2cconfig/ondeliveryb2cconfig.py
* new attribute sc4_delay_ids that provides a tuple of Business Unit
  IDs that use the delay template for Service Code 4 on delivery comms

nparcel/ondeliverydaemon.py
* new attribute sc4_delay_bu_ids that provides a tuple of Business
  Unit IDs that use the delay template for Service Code 4 on delivery
  comms
* new method template_lookup() checks if  a given bu_id has its SC4
  delay template flag set
Documentation update
task/us158-ta148 -- Filter-- Config refactorisation into
FilterB2CConfig

nparcel/b2cconfig/__init__.py
nparcel/b2cconfig/filterb2cconfig.py
* refactor filter facility configuration items into new
  filterb2cconfig.py module
task/us158-ta149 -- Filter - Delivery Partner based rule filtering
and distribution

nparcel/conf/nparceld.conf
* rename the [filter] section to [filters] as it now represents a
  dictionary of Alternate Delivery Partner names and a list
  of tokens to match against the start of the agent code field in the
  source T1250 file

nparcel/ondeliverydaemon.py
* refactor the write() method so that is accepts a delivery_partner
  name and uses this to determine the outbound directory structure
Documentation update and minor fixes to address issues during
system testing.
task/us61-ta152 -- Rename np*.conf to top*.conf
task/us61-ta153  -- Rename working base from .nparceld to .top
task/us61-ta154 -- Rename daemons from np* to top*
task/us61-ta155 -- Rename project base from nparcel to top
task/us61-ta155 -- Rename project base from nparcel to top
Refactor the Mapper facility to use the new top.setter property
constructs