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


===============================================================================
Primary Functional Changes
===============================================================================
    - gristle_freaker
    	- added new default for command line arg 'columns' of -1 - which causes
	  it to include all columns in the frequency distribution.
    - gristle_validator
        - added defaulting behavior for fieldcnt - if nothing is provided it 
	  will use the number of fields in the first rec.

===============================================================================
Primary Defects Fixed
===============================================================================
    - in general
    	- added fileinput.close() to a variety of files, mostly test scripts,
	  which has eliminated a number of tox testing errors.
    - gristle_viewer
    	- added code to handle csv files with inconsistent number of fields
	  which previously caused it to crash.
    - gristle_slicer
        - added code to print human-friendly info if it crashes due to 
	  inconsistent csv structure.


===============================================================================
Primary Internal Changes
===============================================================================
    - scripts in general
        - converted from unittest to pytest
	- eliminated IO bug which caused errors if they were piped to another
	  program that then closed the file connection - like head or tail.
    - added support for test coverage reporting
    - added support for Travis-CI



===============================================================================
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:        -- 82% 
    - unittest status:      -- 
    - manual test status:   -- 
    - pylint status:        -- 9.84

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
