As the post above said, that pre-formatting changed it. It's not a csv file 
any more, and can't be imported :).

Basically, comfort with python debugging, csv files and such and such is 
unfortunately a pre-requisite for writing your own importer, even with 
reds-importers. Without that, it's hard to get someone over the initial 
hump via messaging here. If that is not an option right now, I'd suggest 
starting with the simple option of importing with Beancount's built in csv 
import for your file here, and adding the balance manually on each import 
for now, until you get comfortable with your workflow and figure out the 
biggest problems to solve.

On Sunday, December 10, 2023 at 5:12:27 AM UTC-8 micro...@gmail.com wrote:

> Well I was able to use LibreOffice to easily pre-format the CSV file to 
> make things a little easier for me with the import code, but no luck yet.
>
> Updated file format looks like this:
>
> Date             Description         Amount              Balance 
> 12/1/23       PAYMENT          $951.28              $25,000.62
>
> Updated import code looks like this:
>
> ```
> from beancount_reds_importers.libreader import csvreader
> from beancount_reds_importers.libtransactionbuilder import banking
>
> class Importer(csvreader.Importer, banking.Importer):
>     IMPORTER_NAME = 'chasemortgage'
>
>     def custom_init(self):
>         self.max_rounding_error = 0.04
>         self.filename_pattern_def = '*chase.com.csv'
>         self.header_identifier = 'Date,Description,Amount,Balance'
>         self.date_format = '%x'
>
>         self.header_map = {
>             "Description": 'payee',
>             "Date":             'date',
>             "Amount":       'amount',
>             "Balance:":      'balance',
>             }
> ```
>
> I'm getting this error in the terminal:
>
> ERROR:root:Importer importers.chasemortgage.Importer.identify() raised an 
> unexpected error: nothing to repeat at position 0
>
> I have tried with and without the balance function tacked onto the end but 
> am getting the same error so I think its unrelated to that.
>
> Any ideas on what to try next? Thanks!
>
> On Friday, December 8, 2023 at 9:13:34 PM UTC-5 fin wrote:
>
>> Chris Bond wrote: 
>> > ------=_Part_10662_427767134.1701975257612 
>> > Content-Type: multipart/alternative; 
>> > boundary="----=_Part_10663_1945899272.1701975257612" 
>> > 
>> > ------=_Part_10663_1945899272.1701975257612 
>> > Content-Type: text/plain; charset="UTF-8" 
>> > 
>> > I have what I think may be a very simple CSV file: 
>> > 
>> > Column headers are these: 
>> > Date,Description,Amount,Unapplied,Balance 
>> > 
>> > Corresponding data fields look like this: 
>> > Dec 1, 2023,PAYMENT,$951.28,$951.28,$25,000.62 
>>
>> you have a comma in the first field, you don't want to use 
>> dates with commas in them if you are using csv format. 
>>
>> sorry i don't have the time to look into this further but 
>> i noticed this and thought it worth a comment. :) 
>>
>> good luck, 
>>
>> keep on trying, i learned a lot by doing a lot of 
>> experiments and writing my own importers. 
>>
>>
>> > I have had some success using Red's ofx importer framework, but am 
>> really 
>> > struggling to figure out the CSV importer from the examples in the git 
>> > repo. I started with the Discover example that looks like this: 
>> > 
>> > from beancount_reds_importers.libreader import csvreader 
>> > from beancount_reds_importers.libtransactionbuilder import banking 
>> > 
>> > class Importer(csvreader.Importer, banking.Importer): 
>> > IMPORTER_NAME = """ Discover credit card .csv importer.""" 
>> > 
>> > def custom_init(self): 
>> > self.max_rounding_error = 0.04 
>> > self.filename_pattern_def = 'Discover.*' 
>> > self.header_identifier = 'Trans. Date,Post 
>> > Date,Description,Amount,Category' 
>> > self.date_format = '%m/%d/%Y' 
>> > self.header_map = { 
>> > "Category": 'payee', 
>> > "Description": 'memo', 
>> > "Trans. Date": 'date', 
>> > "Post Date": 'postDate', 
>> > "Amount": 'amount', 
>> > } 
>> > 
>> > def skip_transaction(self, ot): 
>> > return False 
>> > 
>> > def prepare_processed_table(self, rdr): 
>> > # Need to invert numbers supplied by Discover 
>> > rdr = rdr.convert('amount', lambda x: -1 * x) 
>> > return rdr 
>> > 
>> > I'm pretty sure I don't need the def skip_transaction(self, ot) and def 
>> > prepare_processed_table(self, rdr): bits, but am at a loss to figure 
>> out 
>> > what fields I need to modify in the def custom_init(self) for my 
>> situation. 
>> > There is not an example CSV file for that importer in the repo so it 
>> makes 
>> > it a little more challenging for me to hack on it. I think I don't need 
>> the 
>> > "Unapplied" column but am not sure. Even just some hints would be 
>> really 
>> > helpful. 
>> > 
>> > Thank you in advance! 
>> > Chris 
>> > 
>>
>> fin 
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beancount+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/28cee46d-670e-4a93-9351-cf6ea47da6f0n%40googlegroups.com.

Reply via email to