Package: diffant
diffantdiffantuses the structure of configuration files to do a more helpful comparison than standard diff.diffantallows you to compare:inijsonyamlFor example, for the purpose of comparing configuration, these two files are the same. There should be no diff:file_01.inifile_02.ini[info][info]email=bob@example.comphone=212-555-1212phone=212-555-1212email = bob@example.comdiffantcan meaningfully compare a heavily commented original configuration file with many lines to a minimized comment-less  configuration file and find how the defaults have changed.You are not limited to comparing 2 files,diffantcan compare many files.SAMPLE OUTPUTfruit:  apple
          tests/sample_input.dirs/simple/file01.json
          tests/sample_input.dirs/simple/file03.json

        cherry
          tests/sample_input.dirs/simple/file02.json

        /*MISSING*/
          tests/sample_input.dirs/simple/file04.json

grain:  rice
          tests/sample_input.dirs/simple/file01.json

        /*MISSING*/
          tests/sample_input.dirs/simple/file02.json
          tests/sample_input.dirs/simple/file03.json
          tests/sample_input.dirs/simple/file04.json

inspiration:art:  Pablo Picasso
                    tests/sample_input.dirs/simple/file01.json
                    tests/sample_input.dirs/simple/file03.json

                  Frida Kahlo
                    tests/sample_input.dirs/simple/file02.json

                  /*MISSING*/
                    tests/sample_input.dirs/simple/file04.json

inspiration:music:  Dead Kennedys
                      tests/sample_input.dirs/simple/file01.json
                      tests/sample_input.dirs/simple/file02.json
                      tests/sample_input.dirs/simple/file03.json

                    /*MISSING*/
                      tests/sample_input.dirs/simple/file04.json

inspiration:tools:0:  hammer
                        tests/sample_input.dirs/simple/file02.json

                      /*MISSING*/
                        tests/sample_input.dirs/simple/file01.json
                        tests/sample_input.dirs/simple/file03.json
                        tests/sample_input.dirs/simple/file04.json

inspiration:tools:1:  rack
                        tests/sample_input.dirs/simple/file02.json

                      /*MISSING*/
                        tests/sample_input.dirs/simple/file01.json
                        tests/sample_input.dirs/simple/file03.json
                        tests/sample_input.dirs/simple/file04.json

vegetable:  spinach
              tests/sample_input.dirs/simple/file03.json

            /*MISSING*/
              tests/sample_input.dirs/simple/file01.json
              tests/sample_input.dirs/simple/file02.json
              tests/sample_input.dirs/simple/file04.jsonSAMPLE INPUTfile01.json{"grain":"rice","color":"red","fruit":"apple","inspiration":{"art":"Pablo Picasso","music":"Dead Kennedys"}}file02.json{"color":"red","fruit":"cherry","inspiration":{"art":"Frida Kahlo","music":"Dead Kennedys","tools":["hammer","rack"]}}file03.json{"vegetable":"spinach","color":"red","fruit":"apple","inspiration":{"art":"Pablo Picasso","music":"Dead Kennedys"}}file04.json{"color":"red"}REQUIREMENTSpippython >= 3.8LICENSEGNU General Public License v3.0SETUPpip3 install diffantUSAGEdiffant  <directory with files of same type>BUGSThe files you are comparing need to be  at the top level of a directory that you supply as a positional argument todiffantThe files need to have an extension that reflects their contents (ini,json.yml)You can't compare files of different types or have files of different types in your input directory.SUPPORTdan@omacneil.orgCONTRIBUTORS@morgan: Helpful tweak to README.mdcpat-gpt: about 50% of the code