===============================================================================
Version:     0.53
Copyright 2011,2012,2013 Ken Farmer
See the file "LICENSE" for the full license governing this code. 
===============================================================================

===============================================================================
BACKWARDS COMPATABILITY ISSUES
===============================================================================
    - Addition of columntype option in this release also involves changes
      to the columns option: it will no longer accept values of 'all' or 
      '-1'.  Use columntype instead.

===============================================================================
Primary Functional Changes
===============================================================================
    - gristle_freaker
    	- Changed behavior for doing 'all' columntype frequency distributions -
	  rather than defaulting to this or using the columns are, it is now
	  handled through a separate option: columntype.  Columntype now 
	  defaults to 'specified' which requires the option 'columns' to be 
	  provided by the user.  However, 'all' can also be provided, which 
	  will cause all fields to be concatenated into a single key.
	- Added new columntype behavior: 'each'.  This value causes the freaker
	  to create a separate frequency distribution for each column in the
	  input file.  These are written to the output one set after another
	  with a special first column that describes which input column the
	  output is associated with.

===============================================================================
Primary Defects Fixed
===============================================================================
    - n/a

===============================================================================
Primary Internal Changes
===============================================================================
    - n/a



===============================================================================
Overall Testing status:
===============================================================================
    - test harness on python 2.7    - done
    - test harness on python 2.6    - done
    - run pylint                    - done
    - check coverage                - done
    - test automatically installing:
        - sqlalchemy
        - envoy
        - etc
    - test pip install with vanilla environment
    - test setup install with vanilla environment


===============================================================================
Module status:
===============================================================================
field_determinator.py
    - test coverage:        -- 93%
    - unittest status:      -- 
    - pylint status:        --

field_math.py
    - test coverage:        -- 95%
    - unittest status:      -- 
    - pylint status:        -- 

field_misc.py
    - test coverage:        -- 91%
    - unittest status:      -- 
    - pylint status:        -- 

field_type.py
    - test coverage:        -- 94%
    - unittest status:      -- 
    - pylint status:        -- 

file_type.py
    - test coverage:        -- 78%
    - unittest status:      -- 
    - pylint status:        -- 

metadata.py              
    - test coverage:        -- 82%
    - unittest status:      -- 
    - pylint status:        -- 
    
preferences.py
    - test coverage:        -- 0%
    - pylint status:        --
    
simplesql.py
    - test coverage:        -- 97%
    - unittest status:      --
    - pylint status:        -- 

location_slicer.py
    - test coverage:        -- 96%
    - unittest status:      --
    - pylint status:        -- 8.76


===============================================================================
Script Test status:
===============================================================================

gristle_determinator
    - test coverage:        -- 64% 
    - unittest status:      --
    - manual test status:   --
    - pylint status:        -- 8.50

gristle_freaker
    - test coverage:        -- 91%
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.7

gristle_file_converter.py     
    - test coverage:        -- 67% 
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.95

gristle_slicer
    - test coverage:        -- 83% 
    - unittest status:      --
    - manual test status:   --
    - pylint status:        -- 9.68

gristle_filter
    - test coverage:        -- 92%
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.74
    
gristle_viewer
    - test coverage:        -- 76% 
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.64

gristle_differ
    - test coverage:        -- 80%
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.40

gristle_scalar
    - test coverage:        -- 64% 
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.68

gristle_metadata.py       
    - test coverage:        -- 
    - pylint status         -- 9.27

gristle_md_reporter.py       
    - test coverage:        -- 
    - pylint status         -- 9.18

gristle_validator
    - test coverage:        -- 
    - pylint status         -- 9.55


===============================================================================
Manual test cases:
   - these are gradually migrating into the test harnesses, but I'm tracking
     them here so that I can see progress and coverage.
===============================================================================

1.  gristle_slicer.py           
    - multi empty args              -- 
    - full arg after empty file arg -- 
    - single empty filename arg     -- 
    - file passed via stdin empty   -- 

2.  gristle_viewer.py           
    - multi empty args              -- in test harness
    - multi full args               -- in test harness
    - full arg after empty file arg --
    - single empty filename arg     -- in test harness
    - single full filename arg      -- in test-harness

3.  gristle_determinator.py         
    - single empty filename arg:    -- 
    - single full filename arg:     -- 
    - file passed via stdin empty   -- 

4.  gristle_differ.py
    - file1 or file2 empty          -- 
    - both files empty              -- 

5.  gristle_freaker.py
    - multi-empty filename args     -- in test-harness
    - multi-full args               -- in test-harness
    - full arg after empty file arg -- 
    - single empty filename arg     -- in test-harness
    - file passed via stdin empty   -- in test-harness

6.  gristle_scalar.py
    - multiple empty file args      -- in test-harness
    - multi-full args               -- in test-harness
    - full arg after empty file arg -- in test-harness
    - stdin empty                   -- in test-harness
        - single real file arg      -- in test-harness
    - single empty file arg         -- in test-harness

7.  gristle_filter.py
    - multi-empty args              -- in test-harness
    - multi-full args               -- in test-harness
    - full arg after empty file arg -- in test-harness
    - file passed via stdin empty   -- in test-harness

8.  gristle_file_converter
    - multi-empty args              -- old-FAIL (no multiple args)
    - multi-full args               -- old-FAIL (no multiple args)
    - full arg after empty file arg -- old-FAIL (no multiple args)
    - file passed via stdin empty   -- old-FAIL (no stdin)
    - single empty filename arg     -- in test harness
