<commit_before># fixofx #
### Canonicalize various financial data file formats to OFX 2 (a.k.a XML) ###

`fixofx.py` is a Python utility that canonicalizes various financial data file
formats to OFX 2, which is an XML format and hence a lot easier for other code
to deal with. It recognizes OFX 1.x, OFX 2.x, QFX, QIF, and OFC.

Pipe a data file to `fixofx.py`, or specify an input file with the `-f` flag, and
if the file is successfully parsed, an OFX 2 file with equivalent data will
be output.

Various parts of fixofx go through contortions to try to interpret ambiguous
or malformed data, both of which are very common when importing bank data
files. QIF, in particular, is an extremely irregular file format, and fixofx
makes best efforts but will not cover all cases. Also, some international
formats are recognized and interpreted, such as British versus US date
formats, but more work could be done on this.

Sometimes a data file will not contain information that is important for OFX --
for instance, neither OFC nor QIF include the OFX "FID" and "ORG" fields. Other times,
the data format will include this data, but inconsistently, such as QIF's account
type, which can be ambiguous or absent. In these cases you can ask the user to 
provide hints to fixofx, and convey those hints via command-line options (see 
_Command line operation_, below).

The fixofx project also includes `fakeofx.py`, a utility script to generate fake
OFX files for testing purposes.

## Installation ##
<commit_msg>Added a mention of lynofx.py to the README.<commit_after># fixofx #
### Canonicalize various financial data file formats to OFX 2 (a.k.a XML) ###

`fixofx.py` is a Python utility that canonicalizes various financial data file
formats to OFX 2, which is an XML format and hence a lot easier for other code
to deal with. It recognizes OFX 1.x, OFX 2.x, QFX, QIF, and OFC.

Pipe a data file to `fixofx.py`, or specify an input file with the `-f` flag, and
if the file is successfully parsed, an OFX 2 file with equivalent data will
be output.

Various parts of fixofx go through contortions to try to interpret ambiguous
or malformed data, both of which are very common when importing bank data
files. QIF, in particular, is an extremely irregular file format, and fixofx
makes best efforts but will not cover all cases. Also, some international
formats are recognized and interpreted, such as British versus US date
formats, but more work could be done on this.

Sometimes a data file will not contain information that is important for OFX --
for instance, neither OFC nor QIF include the OFX "FID" and "ORG" fields. Other times,
the data format will include this data, but inconsistently, such as QIF's account
type, which can be ambiguous or absent. In these cases you can ask the user to 
provide hints to fixofx, and convey those hints via command-line options (see 
_Command line operation_, below).

The fixofx project also includes `fakeofx.py`, a utility script to generate fake
OFX files for testing purposes; and `lynofx.py`, a utility for making OFX server
requests from the command line (like a "Lynx for OFX").

## Installation ##

{'fraction_non_alphanumeric': 0.05176246427437282, 'fraction_numerical': 0.0031756113051762463, 'mean_word_length': 4.32994923857868, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3644853', 'n_tokens_mistral': 884, 'n_tokens_neox': 847, 'n_words': 517}