Chris Bond wrote:
> ------=_Part_4422_1215321251.1702256755797
> Content-Type: multipart/alternative;
> boundary="----=_Part_4423_2068436066.1702256755797"
>
> ------=_Part_4423_2068436066.1702256755797
> Content-Type: text/plain; charset="UTF-8"
> Content-Transfer-Encoding: quoted-printable
>
> Sorry for my typo in previous post. Here is everything I have right now in=
>=20
> the CSV file:
>
> Date,Description,Amount,Balance=20
> 12/1/23,PAYMENT,951.28,25000.62
>
> Here is my importer code:
>
> ```
> from beancount_reds_importers.libreader import csvreader
> from beancount_reds_importers.libtransactionbuilder import banking
>
> class Importer(csvreader.Importer, banking.Importer):
> IMPORTER_NAME =3D 'chasemortgage'
>
> def custom_init(self):
> self.max_rounding_error =3D 0.04
> self.filename_pattern_def =3D '*chase.com.csv'
> self.header_identifier =3D 'Date,Description,Amount,Balance'
> self.date_format =3D '%x'
>
> self.header_map =3D {
> "Date": 'date',
> "Description": 'payee',
> "Amount": 'amount',
> "Balance:": 'balance',
> }
> ```
>
> I just keep getting "ERROR:root:Importer=20
> importers.chasemortgage.Importer.identify() raised an unexpected error:=20
> nothing to repeat at position 0" and really have no idea what that means.=
>=20
> Any additional thoughts would be very welcome!
how are you running this? what is your environment like?
do you have the right paths set up? what is your directory
like where you are running this? etc.
pretty much what it looks like to me is that it is trying
to run but it may not be finding the data file for some
reason. this is just a guess. :)
if you are following a tutorial or directions from someone
maybe they have it wrong as things do change and sometimes
you just have to figure it out.
put print statements in places and see what the output
looks like or trace it with a debugger and see where it
blows chunks. backtraces, etc.
fin
> On Sunday, December 10, 2023 at 1:12:19=E2=80=AFPM UTC-5 fin wrote:
>
> Chris Bond wrote:=20
>> ------=3D_Part_4968_1593684340.1702208487217=20
>> Content-Type: multipart/alternative;=20
>> boundary=3D"----=3D_Part_4969_1824196410.1702208487217"=20
>>=20
>> ------=3D_Part_4969_1824196410.1702208487217=20
>> Content-Type: text/plain; charset=3D"UTF-8"=20
>> Content-Transfer-Encoding: quoted-printable=20
>>=20
>> Well I was able to use LibreOffice to easily pre-format the CSV file=20
> to=3D20=20
>> make things a little easier for me with the import code, but no luck yet.=
>=20
>>=20
>> Updated file format looks like this:=20
>>=20
>> Date Description Amount Balance=3D20=20
>> 12/1/23 PAYMENT $951.28 $25,000.62=20
>>=20
>> Updated import code looks like this:=20
>>=20
>> ```=20
>> from beancount_reds_importers.libreader import csvreader=20
>> from beancount_reds_importers.libtransactionbuilder import banking=20
>>=20
>> class Importer(csvreader.Importer, banking.Importer):=20
>> IMPORTER_NAME =3D3D 'chasemortgage'=20
>>=20
>> def custom_init(self):=20
>> self.max_rounding_error =3D3D 0.04=20
>> self.filename_pattern_def =3D3D '*chase.com.csv'=20
>> self.header_identifier =3D3D 'Date,Description,Amount,Balance'=20
>> self.date_format =3D3D '%x'=20
>> self.header_map =3D3D {=20
>> "Description": 'payee',=20
>> "Date": 'date',=20
>> "Amount": 'amount',=20
>> "Balance:": 'balance',=20
>> }=20
>> ```=20
>
> you have description before date, but in your data=20
> the date comes first.=20
>
> also, with csv the fields should be separated by=20
> commas, but i see no field separators, and again you=20
> have a comma in a field which will throw things off=20
> unless the data is surrounded by quotation marks and=20
> your importer is looking for matched quotation marks=20
> (not all will allow commas anywhere else no matter=20
> what so that's up to you to fix or test).=20
>
> i stop here with my comments because if you don't=20
> have the format and field names correct than anything=20
> else is going to likely not work well...=20
>
>
> fin=20
>
>
>> I'm getting this error in the terminal:=20
>>=20
>> ERROR:root:Importer importers.chasemortgage.Importer.identify() raised=20
> an=3D=20
>>=3D20=20
>> unexpected error: nothing to repeat at position 0=20
>>=20
>> I have tried with and without the balance function tacked onto the end=20
> but=3D=20
>>=3D20=20
>> am getting the same error so I think its unrelated to that.=20
>>=20
>> Any ideas on what to try next? Thanks!=20
>>=20
>> On Friday, December 8, 2023 at 9:13:34=3DE2=3D80=3DAFPM UTC-5 fin wrote:=
>=20
>>=20
>>> Chris Bond wrote:=20
>>> > ------=3D3D_Part_10662_427767134.1701975257612=20
>>> > Content-Type: multipart/alternative;=3D20=20
>>> > boundary=3D3D"----=3D3D_Part_10663_1945899272.1701975257612"=20
>>> >=20
>>> > ------=3D3D_Part_10663_1945899272.1701975257612=20
>>> > Content-Type: text/plain; charset=3D3D"UTF-8"=20
>>> >=20
>>> > I have what I think may be a very simple CSV file:=20
>>> >=20
>>> > Column headers are these:=20
>>> > Date,Description,Amount,Unapplied,Balance=3D20=20
>>> >=20
>>> > Corresponding data fields look like this:=20
>>> > Dec 1, 2023,PAYMENT,$951.28,$951.28,$25,000.62=20
>>>=20
>>> you have a comma in the first field, you don't want to use=20
>>> dates with commas in them if you are using csv format.=20
>>>=20
>>> sorry i don't have the time to look into this further but=20
>>> i noticed this and thought it worth a comment. :)=20
>>>=20
>>> good luck,=20
>>>=20
>>> keep on trying, i learned a lot by doing a lot of=3D20=20
>>> experiments and writing my own importers.=20
>>>=20
>>>=20
>>> > I have had some success using Red's ofx importer framework, but am=3D2=
> 0=20
>>> really=3D20=20
>>> > struggling to figure out the CSV importer from the examples in the=20
> git=3D=20
>>=3D20=20
>>> > repo. I started with the Discover example that looks like this:=20
>>> >=20
>>> > from beancount_reds_importers.libreader import csvreader=20
>>> > from beancount_reds_importers.libtransactionbuilder import banking=20
>>> >=20
>>> > class Importer(csvreader.Importer, banking.Importer):=20
>>> > IMPORTER_NAME =3D3D """ Discover credit card .csv importer."""=20
>>> >=20
>>> > def custom_init(self):=20
>>> > self.max_rounding_error =3D3D 0.04=20
>>> > self.filename_pattern_def =3D3D 'Discover.*'=20
>>> > self.header_identifier =3D3D 'Trans. Date,Post=3D20=20
>>> > Date,Description,Amount,Category'=20
>>> > self.date_format =3D3D '%m/%d/%Y'=20
>>> > self.header_map =3D3D {=20
>>> > "Category": 'payee',=20
>>> > "Description": 'memo',=20
>>> > "Trans. Date": 'date',=20
>>> > "Post Date": 'postDate',=20
>>> > "Amount": 'amount',=20
>>> > }=20
>>> >=20
>>> > def skip_transaction(self, ot):=20
>>> > return False=20
>>> >=20
>>> > def prepare_processed_table(self, rdr):=20
>>> > # Need to invert numbers supplied by Discover=20
>>> > rdr =3D3D rdr.convert('amount', lambda x: -1 * x)=20
>>> > return rdr=20
>>> >=20
>>> > I'm pretty sure I don't need the def skip_transaction(self, ot) and=20
> def=3D=20
>>=3D20=20
>>> > prepare_processed_table(self, rdr): bits, but am at a loss to figure=
>=20
> ou=3D=20
>> t=3D20=20
>>> > what fields I need to modify in the def custom_init(self) for my=3D20=
>=20
>>> situation.=3D20=20
>>> > There is not an example CSV file for that importer in the repo so=20
> it=3D20=20
>>> makes=3D20=20
>>> > it a little more challenging for me to hack on it. I think I don't=20
> need=3D=20
>>=3D20=20
>>> the=3D20=20
>>> > "Unapplied" column but am not sure. Even just some hints would be=20
> reall=3D=20
>> y=3D20=20
>>> > helpful.=3D20=20
>>> >=20
>>> > Thank you in advance!=20
>>> > Chris=20
>>> >=20
>>>=20
>>> fin=20
>>>=20
>>>=20
>>=20
>> --=3D20=20
>> You received this message because you are subscribed to the Google Groups=
>=20
> "=3D=20
>> Beancount" group.=20
>> To unsubscribe from this group and stop receiving emails from it, send an=
>=20
> e=3D=20
>> mail to [email protected].=20
>> To view this discussion on the web visit=20
> https://groups.google.com/d/msgid/=3D=20
>> beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%40googlegroups.com.=20
>>=20
>> ------=3D_Part_4969_1824196410.1702208487217=20
>> Content-Type: text/html; charset=3D"UTF-8"=20
>> Content-Transfer-Encoding: quoted-printable=20
>>=20
>><div>Well I was able to use LibreOffice to easily pre-format the CSV file=
>=20
> t=3D=20
>> o make things a little easier for me with the import code, but no luck=20
> yet.=3D=20
>><br /></div><div><br /></div><div>Updated file format looks like this:<br=
>=20
> /=3D=20
>>></div><div><br /></div><div><div><span cellspacing=3D3D"0"=20
> border=3D3D"0"><spa=3D=20
>> n><span><span height=3D3D"17"=20
> align=3D3D"left"></span></span></span></span></di=3D=20
>> v><div><span cellspacing=3D3D"0" border=3D3D"0"><span><span><span=20
> height=3D3D"17"=3D=20
>>=20
> align=3D3D"left">Date</span>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=
>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3D=20
>>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 <span align=3D3D"left">Descriptio=
> n</span>=3DC2=3DA0=3DC2=3D=20
>>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 <span=20
> align=3D3D"left">Amount</span>=3D=20
>>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC=
> 2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3D=20
>
>>=3DA0 <span align=3D3D"left">Balance</span>=20
>> </span>=20
>> <span>=20
>> <span height=3D3D"17"=20
> align=3D3D"left"></span></span></span></span></div><div=3D=20
>>><span cellspacing=3D3D"0" border=3D3D"0"><span><span><span height=3D3D"17=
> "=20
> align=3D=20
>>=3D3D"left"></span></span></span></span></div><div><span cellspacing=3D3D"=
> 0"=20
> bo=3D=20
>> rder=3D3D"0"><span><span><span height=3D3D"17"=20
> align=3D3D"left"></span></span></s=3D=20
>> pan></span></div><div><span cellspacing=3D3D"0"=20
> border=3D3D"0"><span><span><spa=3D=20
>> n height=3D3D"17"=20
> align=3D3D"left">12/1/23=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=
>=3DC2=3DA0 =3D=20
>></span></span></span></span><span cellspacing=3D3D"0"=20
> border=3D3D"0"><span><spa=3D=20
>> n><span align=3D3D"left">PAYMENT=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=
>=3DC2=3DA0 =3DC2=3DA0=20
>=3DC2=3DA0 =3D=20
>></span></span></span></span><span cellspacing=3D3D"0"=20
> border=3D3D"0"><span><spa=3D=20
>> n><span=20
> align=3D3D"left">$951.28</span></span></span></span>=3DC2=3DA0=3DC2=3DA0=3D=
> C2=3D=20
>>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA=
> 0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 <span=20
> cells=3D=20
>> pacing=3D3D"0" border=3D3D"0"><span><span><span=20
> align=3D3D"left">$25,000.62</span=3D=20
>>></span></span></span></div><div><br /><span cellspacing=3D3D"0"=20
> border=3D3D"0"=3D=20
>>><span><span><span=20
> align=3D3D"left"></span></span></span></span></div><div><s=3D=20
>> pan cellspacing=3D3D"0" border=3D3D"0"><span><span><span=20
> align=3D3D"left">Updated=3D=20
>> import code looks like this:</span></span></span></span></div><div><span=
>=20
> c=3D=20
>> ellspacing=3D3D"0" border=3D3D"0"><span><span><span align=3D3D"left"><br=
>=20
> /></span=3D=20
>>></span></span></span></div><div><span><span>```</span></span></div><div>f=
> r=3D=20
>
>> om beancount_reds_importers.libreader import csvreader<br />from=20
> beancount_=3D=20
>> reds_importers.libtransactionbuilder import banking<br /><br />class=20
> Import=3D=20
>> er(csvreader.Importer, banking.Importer):<br />=3DC2=3DA0 =3DC2=3DA0=20
> IMPORTER_NAME =3D=20
>>=3D3D 'chasemortgage'</div><div><br /></div><div>=3DC2=3DA0 =3DC2=3DA0 def=
>=20
> custom_ini=3D=20
>> t(self):<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self.max_roundi=
> ng_error =3D3D=20
> 0.04<=3D=20
>> br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self.filename_pattern_de=
> f =3D3D=20
> '*chase.com.=3D=20
>> csv'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self.header_identif=
> ier =3D3D=20
> 'Date,Desc=3D=20
>> ription,Amount,Balance'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =
> self.date_format=20
>=3D=20
>>=3D3D '%x'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self.header_ma=
> p =3D3D {<br=20
> />=3DC2=3DA0=3D=20
>> =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 "Description": 'pa=
> yee',<br />=3DC2=3DA0=20
>=3DC2=3D=20
>>=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 "Date": =3DC2=3DA0 =3DC2=
>=3DA0 =3DC2=3DA0 =3DC2=3DA0=3DC2=3DA0=3D=20
>>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 'date',<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3D=
> A0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0=20
> "=3D=20
>> Amount": =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 'amount',<br />=3DC2=3DA0 =3DC2=
>=3DA0 =3DC2=3DA0 =3DC2=3DA0=20
>=3D=20
>>=3DC2=3DA0 =3DC2=3DA0 "Balance:": =3DC2=3DA0 =3DC2=3DA0=3DC2=3DA0 'balance=
> ',<br />=3DC2=3DA0=20
>=3DC2=3DA0=3D=20
>> =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0=20
> }</div><div><span><span>```</span></span></div=3D=20
>>><div><br /></div><div>I'm getting this error in the=20
> terminal:</div><div><b=3D=20
>> r /></div><div>ERROR:root:Importer=20
> importers.chasemortgage.Importer.identif=3D=20
>> y() raised an unexpected error: nothing to repeat at position=20
> 0</div><div><=3D=20
>> br /></div><div>I have tried with and without the balance function tacked=
>=20
> o=3D=20
>> nto the end but am getting the same error so I think its unrelated to=20
> that.=3D=20
>><br /></div><div><br /></div><div>Any ideas on what to try next?=20
> Thanks!</d=3D=20
>> iv><div><br /></div></div><div class=3D3D"gmail_quote"><div dir=3D3D"auto=
> "=20
> clas=3D=20
>> s=3D3D"gmail_attr">On Friday, December 8, 2023 at 9:13:34=3DE2=3D80=3DAFP=
> M UTC-5=20
> fi=3D=20
>> n wrote:<br/></div><blockquote class=3D3D"gmail_quote" style=3D3D"margin:=
> 0 0=20
> 0=3D=20
>> 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left:=20
> 1ex;">Chri=3D=20
>> s Bond wrote:=20
>><br>> ------=3D3D_Part_10662_427767134.1701975257612=20
>><br>> Content-Type: multipart/alternative;=3D20=20
>><br>>=20
> boundary=3D3D"----=3D3D_Part_10663_1945899272.1701975257612"=3D=20
>> ;=20
>><br>>=20
>><br>> ------=3D3D_Part_10663_1945899272.1701975257612=20
>><br>> Content-Type: text/plain; charset=3D3D"UTF-8"=20
>><br>>=20
>><br>> I have what I think may be a very simple CSV file:=20
>><br>>=20
>><br>> Column headers are these:=20
>><br>> Date,Description,Amount,Unapplied,Balance=3D20=20
>><br>>=20
>><br>> Corresponding data fields look like this:=20
>><br>> Dec 1, 2023,PAYMENT,$951.28,$951.28,$25,000.62=20
>><br>=20
>><br> you have a comma in the first field, you don't want to use=20
>><br>dates with commas in them if you are using csv format.=20
>><br>=20
>><br> sorry i don't have the time to look into this further but=20
>><br>i noticed this and thought it worth a comment. :)=20
>><br>=20
>><br> good luck,=20
>><br>=20
>><br> keep on trying, i learned a lot by doing a lot of=3D20=20
>><br>experiments and writing my own importers.=20
>><br>=20
>><br>=20
>><br>> I have had some success using Red's ofx importer framework,=
>=20
> bu=3D=20
>> t am really=3D20=20
>><br>> struggling to figure out the CSV importer from the examples in=20
> the=3D=20
>> git=3D20=20
>><br>> repo. I started with the Discover example that looks like this:=
>=20
>><br>>=20
>><br>> from beancount_reds_importers.libreader import csvreader=20
>><br>> from beancount_reds_importers.libtransactionbuilder import=20
> banking=20
>><br>>=20
>><br>> class Importer(csvreader.Importer, banking.Importer):=20
>><br>> IMPORTER_NAME =3D3D """ Discover credit card .csv=
>=3D=20
>> importer."""=20
>><br>>=20
>><br>> def custom_init(self):=20
>><br>> self.max_rounding_error =3D3D 0.04=20
>><br>> self.filename_pattern_def =3D3D 'Discover.*'=20
>><br>> self.header_identifier =3D3D 'Trans. Date,Post=3D20=20
>><br>> Date,Description,Amount,Category'=20
>><br>> self.date_format =3D3D '%m/%d/%Y'=20
>><br>> self.header_map =3D3D {=20
>><br>> "Category": 'payee',=20
>><br>> "Description": 'memo',=20
>><br>> "Trans. Date": 'date',=20
>><br>> "Post Date": 'postDate',=20
>><br>> "Amount": 'amount',=20
>><br>> }=20
>><br>>=20
>><br>> def skip_transaction(self, ot):=20
>><br>> return False=20
>><br>>=20
>><br>> def prepare_processed_table(self, rdr):=20
>><br>> # Need to invert numbers supplied by Discover=20
>><br>> rdr =3D3D rdr.convert('amount', lambda x: -1 * x)=20
>><br>> return rdr=20
>><br>>=20
>><br>> I'm pretty sure I don't need the def=20
> skip_transaction(self=3D=20
>> , ot) and def=3D20=20
>><br>> prepare_processed_table(self, rdr): bits, but am at a loss to=20
> figu=3D=20
>> re out=3D20=20
>><br>> what fields I need to modify in the def custom_init(self) for my=
>=20
> s=3D=20
>> ituation.=3D20=20
>><br>> There is not an example CSV file for that importer in the repo so=
>=20
>=3D=20
>> it makes=3D20=20
>><br>> it a little more challenging for me to hack on it. I think I=20
> don&#=3D=20
>> 39;t need the=3D20=20
>><br>> "Unapplied" column but am not sure. Even just some=20
> hints=3D=20
>> would be really=3D20=20
>><br>> helpful.=3D20=20
>><br>>=20
>><br>> Thank you in advance!=20
>><br>> Chris=20
>><br>>=20
>><br>=20
>><br> fin=20
>><br>=20
>><br></blockquote></div>=20
>>=20
>><p></p>=20
>>=20
>> -- <br />=20
>> You received this message because you are subscribed to the Google Groups=
>=20
> &=3D=20
>> quot;Beancount" group.<br />=20
>> To unsubscribe from this group and stop receiving emails from it, send an=
>=20
> e=3D=20
>> mail to <a href=3D3D"mailto:[email protected]">beancount=3D=
>=20
>> [email protected]</a>.<br />=20
>> To view this discussion on the web visit <a href=3D3D"
> https://groups.google.c=3D=20
>>=20
> om/d/msgid/beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%40googlegroups.c=
>=3D=20
>
>> om?utm_medium=3D3Demail&utm_source=3D3Dfooter">
> https://groups.google.com/d/msgi=3D=20
>> d/beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%40googlegroups.com</a>.=
><b=3D=20
>
>> r />=20
>>=20
>> ------=3D_Part_4969_1824196410.1702208487217--=20
>>=20
>> ------=3D_Part_4968_1593684340.1702208487217--=20
>>=20
>
> --=20
> 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 e=
> mail to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/msgid/=
> beancount/494fa7c0-68e4-4f02-a4b0-27b52326cbe3n%40googlegroups.com.
>
> ------=_Part_4423_2068436066.1702256755797
> Content-Type: text/html; charset="UTF-8"
> Content-Transfer-Encoding: quoted-printable
>
><div>Sorry for my typo in previous post. Here is everything I have right no=
> w in the CSV file:</div><div><br /></div><div><div><span cellspacing=3D"0" =
> border=3D"0"><span><span><span height=3D"17" align=3D"left">Date</span>,<sp=
> an align=3D"left">Description</span>,<span align=3D"left">Amount,</span><sp=
> an align=3D"left">Balance</span>
> </span>
> <span>
> <span height=3D"17"
> align=3D"left"></span></span></span></span></div><div=
>><span cellspacing=3D"0" border=3D"0"><span><span><span height=3D"17" align=
>=3D"left"></span></span></span></span></div><div><span cellspacing=3D"0" bo=
> rder=3D"0"><span><span><span height=3D"17" align=3D"left"></span></span></s=
> pan></span></div><div><span cellspacing=3D"0" border=3D"0"><span><span><spa=
> n height=3D"17" align=3D"left">12/1/23,</span></span></span></span><span ce=
> llspacing=3D"0" border=3D"0"><span><span><span align=3D"left">PAYMENT,</spa=
> n></span></span></span><span cellspacing=3D"0" border=3D"0"><span><span><sp=
> an align=3D"left">951.28</span></span></span></span>,<span cellspacing=3D"0=
> " border=3D"0"><span><span><span align=3D"left">25000.62</span></span></spa=
> n></span></div><div><span cellspacing=3D"0" border=3D"0"><span><span><span =
> align=3D"left"><br /></span></span></span></span></div><div><span cellspaci=
> ng=3D"0" border=3D"0"><span><span><span align=3D"left">Here is my importer =
> code:<br /></span></span></span></span></div><div><span cellspacing=3D"0" b=
> order=3D"0"><span><span><span align=3D"left"><br /></span></span></span></s=
> pan></div><div><span cellspacing=3D"0" border=3D"0"><span><span><span align=
>=3D"left">```</span></span></span></span></div><div><div><div><div>from bea=
> ncount_reds_importers.libreader import csvreader<br />from beancount_reds_i=
> mporters.libtransactionbuilder import banking<br /><br />class Importer(csv=
> reader.Importer, banking.Importer):<br /></div></div></div><div><div>=C2=A0=
> =C2=A0 IMPORTER_NAME =3D 'chasemortgage'</div><div><br /></div><div></div>=
></div><div><div><div>=C2=A0 =C2=A0 def custom_init(self):<br />=C2=A0 =C2=
>=A0 =C2=A0 =C2=A0 self.max_rounding_error =3D 0.04<br /></div></div></div><=
> div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.filename_pattern_def =3D '*chase.=
> com.csv'<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.header_identifier =3D 'Date,=
> Description,Amount,Balance'<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 self.date_form=
> at =3D '%x'</div></div><div><div><div><br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 sel=
> f.header_map =3D {<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "Date": =
>=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 'date',</div><div>=C2=
>=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "Descriptio=
> n": 'payee',<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "Amount": =C2=
>=A0 =C2=A0 =C2=A0 'amount',<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
> "Balance:": =C2=A0 =C2=A0=C2=A0 'balance',<br />=C2=A0 =C2=A0 =C2=A0 =C2=A0=
> =C2=A0 =C2=A0 }</div><div>```<br /></div></div></div></div></div><div><br =
> /></div><div>I just keep getting "ERROR:root:Importer importers.chasemortga=
> ge.Importer.identify() raised an unexpected error: nothing to repeat at pos=
> ition 0" and really have no idea what that means. Any additional thoughts w=
> ould be very welcome!<br /></div><div><br /></div><div><br /></div><div><di=
> v dir=3D"auto">On Sunday, December 10, 2023 at 1:12:19=E2=80=AFPM UTC-5 fin=
> wrote:<br /></div><blockquote style=3D"margin: 0px 0px 0px 0.8ex; border-l=
> eft: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Chris Bond wrote:
><br />> ------=3D_Part_4968_1593684340.1702208487217
><br />> Content-Type: multipart/alternative;=20
><br />> boundary=3D"----=3D_Part_4969_1824196410.1702208487217"
><br />>
><br />> ------=3D_Part_4969_1824196410.1702208487217
><br />> Content-Type: text/plain; charset=3D"UTF-8"
><br />> Content-Transfer-Encoding: quoted-printable
><br />>
><br />> Well I was able to use LibreOffice to easily pre-format the CSV =
> file to=3D20
><br />> make things a little easier for me with the import code, but no =
> luck yet.
><br />>
><br />> Updated file format looks like this:
><br />>
><br />> Date Description Amount Balance=
>=3D20
><br />> 12/1/23 PAYMENT $951.28 $25,000.62
><br />>
><br />> Updated import code looks like this:
><br />>
><br />> ```
><br />> from beancount_reds_importers.libreader import csvreader
><br />> from beancount_reds_importers.libtransactionbuilder import banki=
> ng
><br />>
><br />> class Importer(csvreader.Importer, banking.Importer):
><br />> IMPORTER_NAME =3D3D 'chasemortgage'
><br />>
><br />> def custom_init(self):
><br />> self.max_rounding_error =3D3D 0.04
><br />> self.filename_pattern_def =3D3D '*chase.com.csv'
><br />> self.header_identifier =3D3D 'Date,Description,Amount,Ba=
> lance'
><br />> self.date_format =3D3D '%x'
><br />> self.header_map =3D3D {
><br />> "Description": 'payee',
><br />> "Date": 'date',
><br />> "Amount": 'amount',
><br />> "Balance:": 'balance',
><br />> }
><br />> ```
><br />
><br /> you have description before date, but in your data
><br />the date comes first.
><br />
><br /> also, with csv the fields should be separated by
><br />commas, but i see no field separators, and again you
><br />have a comma in a field which will throw things off
><br />unless the data is surrounded by quotation marks and
><br />your importer is looking for matched quotation marks
><br />(not all will allow commas anywhere else no matter
><br />what so that's up to you to fix or test).
><br />
><br /> i stop here with my comments because if you don't
><br />have the format and field names correct than anything
><br />else is going to likely not work well...
><br />
><br />
><br /> fin
><br />
><br />
><br />> I'm getting this error in the terminal:
><br />>
><br />> ERROR:root:Importer importers.chasemortgage.Importer.identify() =
> raised an=3D
><br />>=3D20
><br />> unexpected error: nothing to repeat at position 0
><br />>
><br />> I have tried with and without the balance function tacked onto t=
> he end but=3D
><br />>=3D20
><br />> am getting the same error so I think its unrelated to that.
><br />>
><br />> Any ideas on what to try next? Thanks!
><br />>
><br />> On Friday, December 8, 2023 at 9:13:34=3DE2=3D80=3DAFPM UTC-5 fi=
> n wrote:
><br />>
><br />>> Chris Bond wrote:
><br />>> > ------=3D3D_Part_10662_427767134.1701975257612
><br />>> > Content-Type: multipart/alternative;=3D20
><br />>> > boundary=3D3D"----=3D3D_Part_10663_1945899272.170197525=
> 7612"
><br />>> >
><br />>> > ------=3D3D_Part_10663_1945899272.1701975257612
><br />>> > Content-Type: text/plain; charset=3D3D"UTF-8"
><br />>> >
><br />>> > I have what I think may be a very simple CSV file:
><br />>> >
><br />>> > Column headers are these:
><br />>> > Date,Description,Amount,Unapplied,Balance=3D20
><br />>> >
><br />>> > Corresponding data fields look like this:
><br />>> > Dec 1, 2023,PAYMENT,$951.28,$951.28,$25,000.62
><br />>>
><br />>> you have a comma in the first field, you don't want to use
><br />>> dates with commas in them if you are using csv format.
><br />>>
><br />>> sorry i don't have the time to look into this further but
><br />>> i noticed this and thought it worth a comment. :)
><br />>>
><br />>> good luck,
><br />>>
><br />>> keep on trying, i learned a lot by doing a lot of=3D20
><br />>> experiments and writing my own importers.
><br />>>
><br />>>
><br />>> > I have had some success using Red's ofx importer framew=
> ork, but am=3D20
><br />>> really=3D20
><br />>> > struggling to figure out the CSV importer from the exam=
> ples in the git=3D
><br />>=3D20
><br />>> > repo. I started with the Discover example that looks li=
> ke this:
><br />>> >
><br />>> > from beancount_reds_importers.libreader import csvreade=
> r
><br />>> > from beancount_reds_importers.libtransactionbuilder imp=
> ort banking
><br />>> >
><br />>> > class Importer(csvreader.Importer, banking.Importer):
><br />>> > IMPORTER_NAME =3D3D """ Discover credit card .csv impor=
> ter."""
><br />>> >
><br />>> > def custom_init(self):
><br />>> > self.max_rounding_error =3D3D 0.04
><br />>> > self.filename_pattern_def =3D3D 'Discover.*'
><br />>> > self.header_identifier =3D3D 'Trans. Date,Post=3D20
><br />>> > Date,Description,Amount,Category'
><br />>> > self.date_format =3D3D '%m/%d/%Y'
><br />>> > self.header_map =3D3D {
><br />>> > "Category": 'payee',
><br />>> > "Description": 'memo',
><br />>> > "Trans. Date": 'date',
><br />>> > "Post Date": 'postDate',
><br />>> > "Amount": 'amount',
><br />>> > }
><br />>> >
><br />>> > def skip_transaction(self, ot):
><br />>> > return False
><br />>> >
><br />>> > def prepare_processed_table(self, rdr):
><br />>> > # Need to invert numbers supplied by Discover
><br />>> > rdr =3D3D rdr.convert('amount', lambda x: -1 * x)
><br />>> > return rdr
><br />>> >
><br />>> > I'm pretty sure I don't need the def skip_transaction(s=
> elf, ot) and def=3D
><br />>=3D20
><br />>> > prepare_processed_table(self, rdr): bits, but am at a l=
> oss to figure ou=3D
><br />> t=3D20
><br />>> > what fields I need to modify in the def custom_init(sel=
> f) for my=3D20
><br />>> situation.=3D20
><br />>> > There is not an example CSV file for that importer in t=
> he repo so it=3D20
><br />>> makes=3D20
><br />>> > it a little more challenging for me to hack on it. I th=
> ink I don't need=3D
><br />>=3D20
><br />>> the=3D20
><br />>> > "Unapplied" column but am not sure. Even just some hint=
> s would be reall=3D
><br />> y=3D20
><br />>> > helpful.=3D20
><br />>> >
><br />>> > Thank you in advance!
><br />>> > Chris
><br />>> >
><br />>>
><br />>> fin
><br />>>
><br />>>
><br />>
><br />> --=3D20
><br />> You received this message because you are subscribed to the Goog=
> le Groups "=3D
><br />> Beancount" group.
><br />> To unsubscribe from this group and stop receiving emails from it=
> , send an e=3D
><br />> mail to <a href=3D"" rel=3D"nofollow">beancount+...@googlegroups=
> .com</a>.
><br />> To view this discussion on the web visit <a href=3D"https://grou=
> ps.google.com/d/msgid/=3D" target=3D"_blank" rel=3D"nofollow">https://group=
> s.google.com/d/msgid/=3D</a>
><br />> beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%<a href=3D"http:=
> //40googlegroups.com" target=3D"_blank" rel=3D"nofollow">40googlegroups.com=
></a>.
><br />>
><br />> ------=3D_Part_4969_1824196410.1702208487217
><br />> Content-Type: text/html; charset=3D"UTF-8"
><br />> Content-Transfer-Encoding: quoted-printable
><br />>
><br />><div>Well I was able to use LibreOffice to easily pre-forma=
> t the CSV file t=3D
><br />> o make things a little easier for me with the import code, but n=
> o luck yet.=3D
><br />><br /></div><div><br /></div><di=
> v>Updated file format looks like this:<br /=3D
><br />>></div><div><br /></div><div><=
> ;div><span cellspacing=3D3D"0" border=3D3D"0"><spa=3D
><br />> n><span><span height=3D3D"17" align=3D3D"left">&l=
> t;/span></span></span></span></di=3D
><br />> v><div><span cellspacing=3D3D"0" border=3D3D"0">&=
> lt;span><span><span height=3D3D"17"=3D
><br />> align=3D3D"left">Date</span>=3DC2=3DA0=3DC2=3DA0=3DC2=
>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3D
><br />>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 <span align=3D3D"left=
> ">Description</span>=3DC2=3DA0=3DC2=3D
><br />>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=
> <span align=3D3D"left">Amount</span>=3D
><br />>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=
>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3D
><br />>=3DA0 <span align=3D3D"left">Balance</span>
><br />> </span>
><br />> <span>
><br />> <span height=3D3D"17"
>align=3D3D"left"></span><=
> /span></span></span></div><div=3D
><br />>><span cellspacing=3D3D"0" border=3D3D"0"><span>&l=
> t;span><span height=3D3D"17" align=3D
><br />>=3D3D"left"></span></span></span></span&g=
> t;</div><div><span cellspacing=3D3D"0" bo=3D
><br />> rder=3D3D"0"><span><span><span height=3D3D"17"=
> align=3D3D"left"></span></span></s=3D
><br />> pan></span></div><div><span cellspacing=
>=3D3D"0" border=3D3D"0"><span><span><spa=3D
><br />> n height=3D3D"17" align=3D3D"left">12/1/23=3DC2=3DA0=3DC2=3DA=
> 0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 =3D
><br />></span></span></span></span><span cell=
> spacing=3D3D"0" border=3D3D"0"><span><spa=3D
><br />> n><span align=3D3D"left">PAYMENT=3DC2=3DA0=3DC2=3DA0=3D=
> C2=3DA0=3DC2=3DA0=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D
><br />></span></span></span></span><span cell=
> spacing=3D3D"0" border=3D3D"0"><span><spa=3D
><br />> n><span align=3D3D"left">$951.28</span></span&=
> gt;</span></span>=3DC2=3DA0=3DC2=3DA0=3DC2=3D
><br />>=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=
>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 <span cells=3D
><br />> pacing=3D3D"0" border=3D3D"0"><span><span><spa=
> n align=3D3D"left">$25,000.62</span=3D
><br />>></span></span></span></div><div>=
> ;<br /><span cellspacing=3D3D"0" border=3D3D"0"=3D
><br />>><span><span><span align=3D3D"left"></spa=
> n></span></span></span></div><div><s=3D
><br />> pan cellspacing=3D3D"0" border=3D3D"0"><span><span&g=
> t;<span align=3D3D"left">Updated=3D
><br />> import code looks like this:</span></span></span=
> ></span></div><div><span c=3D
><br />> ellspacing=3D3D"0" border=3D3D"0"><span><span><=
> ;span align=3D3D"left"><br /></span=3D
><br />>></span></span></span></div><div>=
> ;<span><span>```</span></span></div><div&g=
> t;fr=3D
><br />> om beancount_reds_importers.libreader import csvreader<br /&g=
> t;from beancount_=3D
><br />> reds_importers.libtransactionbuilder import banking<br />&=
> lt;br />class Import=3D
><br />> er(csvreader.Importer, banking.Importer):<br />=3DC2=3DA0 =
>=3DC2=3DA0 IMPORTER_NAME =3D
><br />>=3D3D 'chasemortgage'</div><div><br /></div&=
> gt;<div>=3DC2=3DA0 =3DC2=3DA0 def custom_ini=3D
><br />> t(self):<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =
> self.max_rounding_error =3D3D 0.04<=3D
><br />> br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self.filenam=
> e_pattern_def =3D3D '*chase.com.=3D
><br />> csv'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 self=
> .header_identifier =3D3D 'Date,Desc=3D
><br />> ription,Amount,Balance'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=
>=3DA0 =3DC2=3DA0 self.date_format =3D
><br />>=3D3D '%x'<br />=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0=
> self.header_map =3D3D {<br />=3DC2=3DA0=3D
><br />> =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 "Descript=
> ion": 'payee',<br />=3DC2=3DA0 =3DC2=3D
><br />>=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 "Date": =3DC2=
>=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0=3DC2=3DA0=3D
><br />>=3DC2=3DA0=3DC2=3DA0=3DC2=3DA0 'date',<br />=3DC2=3DA0 =3DC=
> 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 "=3D
><br />> Amount": =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 'amount',<br />=
>=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D
><br />>=3DC2=3DA0 =3DC2=3DA0 "Balance:": =3DC2=3DA0 =3DC2=3DA0=3DC2=3DA0=
> 'balance',<br />=3DC2=3DA0 =3DC2=3DA0=3D
><br />> =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 }</div><div=
> ><span><span>```</span></span></div=3D
><br />>><div><br /></div><div>I'm getting thi=
> s error in the terminal:</div><div><b=3D
><br />> r /></div><div>ERROR:root:Importer importers.chas=
> emortgage.Importer.identif=3D
><br />> y() raised an unexpected error: nothing to repeat at position 0&=
> lt;/div><div><=3D
><br />> br /></div><div>I have tried with and without the=
> balance function tacked o=3D
><br />> nto the end but am getting the same error so I think its unrelat=
> ed to that.=3D
><br />><br /></div><div><br /></div><di=
> v>Any ideas on what to try next? Thanks!</d=3D
><br />> iv><div><br /></div></div><div cla=
> ss=3D3D"gmail_quote"><div dir=3D3D"auto" clas=3D
><br />> s=3D3D"gmail_attr">On Friday, December 8, 2023 at 9:13:34=3DE=
> 2=3D80=3DAFPM UTC-5 fi=3D
><br />> n wrote:<br/></div><blockquote class=3D3D"gmail_q=
> uote" style=3D3D"margin: 0 0 0=3D
><br />> 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left:=
> 1ex;">Chri=3D
><br />> s Bond wrote:
><br />><br>&gt; ------=3D3D_Part_10662_427767134.1701975257612
><br />><br>&gt; Content-Type: multipart/alternative;=3D20
><br />><br>&gt; boundary=3D3D&quot;----=3D3D_Part_10663_1=
> 945899272.1701975257612&quot=3D
><br />> ;
><br />><br>&gt;
><br />><br>&gt; ------=3D3D_Part_10663_1945899272.170197525761=
> 2
><br />><br>&gt; Content-Type: text/plain; charset=3D3D&quo=
> t;UTF-8&quot;
><br />><br>&gt;
><br />><br>&gt; I have what I think may be a very simple CSV =
> file:
><br />><br>&gt;
><br />><br>&gt; Column headers are these:
><br />><br>&gt; Date,Description,Amount,Unapplied,Balance=3D20
><br />><br>&gt;
><br />><br>&gt; Corresponding data fields look like this:
><br />><br>&gt; Dec 1, 2023,PAYMENT,$951.28,$951.28,$25,000.62
><br />><br>
><br />><br> you have a comma in the first field, you don&#39;=
> t want to use
><br />><br>dates with commas in them if you are using csv format.
><br />><br>
><br />><br> sorry i don&#39;t have the time to look into this=
> further but
><br />><br>i noticed this and thought it worth a comment. :)
><br />><br>
><br />><br> good luck,
><br />><br>
><br />><br> keep on trying, i learned a lot by doing a lot of=3D2=
> 0
><br />><br>experiments and writing my own importers.
><br />><br>
><br />><br>
><br />><br>&gt; I have had some success using Red&#39;s of=
> x importer framework, bu=3D
><br />> t am really=3D20
><br />><br>&gt; struggling to figure out the CSV importer from=
> the examples in the=3D
><br />> git=3D20
><br />><br>&gt; repo. I started with the Discover example that=
> looks like this:
><br />><br>&gt;
><br />><br>&gt; from beancount_reds_importers.libreader import=
> csvreader
><br />><br>&gt; from beancount_reds_importers.libtransactionbu=
> ilder import banking
><br />><br>&gt;
><br />><br>&gt; class Importer(csvreader.Importer, banking.Imp=
> orter):
><br />><br>&gt; IMPORTER_NAME =3D3D &quot;&quot;&a=
> mp;quot; Discover credit card .csv=3D
><br />> importer.&quot;&quot;&quot;
><br />><br>&gt;
><br />><br>&gt; def custom_init(self):
><br />><br>&gt; self.max_rounding_error =3D3D 0.04
><br />><br>&gt; self.filename_pattern_def =3D3D &#=
> 39;Discover.*&#39;
><br />><br>&gt; self.header_identifier =3D3D &#39;=
> Trans. Date,Post=3D20
><br />><br>&gt; Date,Description,Amount,Category&#39;
><br />><br>&gt; self.date_format =3D3D &#39;%m/%d/=
> %Y&#39;
><br />><br>&gt; self.header_map =3D3D {
><br />><br>&gt; &quot;Category&quot;: &=
> amp;#39;payee&#39;,
><br />><br>&gt; &quot;Description&quot;: &=
> amp;#39;memo&#39;,
><br />><br>&gt; &quot;Trans. Date&quot;: &=
> amp;#39;date&#39;,
><br />><br>&gt; &quot;Post Date&quot;: &=
> amp;#39;postDate&#39;,
><br />><br>&gt; &quot;Amount&quot;: &=
> amp;#39;amount&#39;,
><br />><br>&gt; }
><br />><br>&gt;
><br />><br>&gt; def skip_transaction(self, ot):
><br />><br>&gt; return False
><br />><br>&gt;
><br />><br>&gt; def prepare_processed_table(self, rdr):
><br />><br>&gt; # Need to invert numbers supplied by D=
> iscover
><br />><br>&gt; rdr =3D3D rdr.convert(&#39;amount&=
> amp;#39;, lambda x: -1 * x)
><br />><br>&gt; return rdr
><br />><br>&gt;
><br />><br>&gt; I&#39;m pretty sure I don&#39;t need t=
> he def skip_transaction(self=3D
><br />> , ot) and def=3D20
><br />><br>&gt; prepare_processed_table(self, rdr): bits, but =
> am at a loss to figu=3D
><br />> re out=3D20
><br />><br>&gt; what fields I need to modify in the def custom=
> _init(self) for my s=3D
><br />> ituation.=3D20
><br />><br>&gt; There is not an example CSV file for that impo=
> rter in the repo so =3D
><br />> it makes=3D20
><br />><br>&gt; it a little more challenging for me to hack on=
> it. I think I don&#=3D
><br />> 39;t need the=3D20
><br />><br>&gt; &quot;Unapplied&quot; column but am no=
> t sure. Even just some hints=3D
><br />> would be really=3D20
><br />><br>&gt; helpful.=3D20
><br />><br>&gt;
><br />><br>&gt; Thank you in advance!
><br />><br>&gt; Chris
><br />><br>&gt;
><br />><br>
><br />><br> fin
><br />><br>
><br />><br></blockquote></div>
><br />>
><br />><p></p>
><br />>
><br />> -- <br />
><br />> You received this message because you are subscribed to the Goog=
> le Groups &=3D
><br />> quot;Beancount&quot; group.<br />
><br />> To unsubscribe from this group and stop receiving emails from it=
> , send an e=3D
><br />> mail to <a href=3D3D"mailto:<a href=3D"" rel=3D"nofollow">bea=
> [email protected]</a>">beancount=3D
><br />> +<a href=3D"" rel=3D"nofollow">[email protected]</a><=
> /a>.<br />
><br />> To view this discussion on the web visit <a href=3D3D"<a href=
>=3D"https://groups.google.c" target=3D"_blank" rel=3D"nofollow">https://gro=
> ups.google.c</a>=3D
><br />> om/d/msgid/beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%40goo=
> glegroups.c=3D
><br />> om?utm_medium=3D3Demail&utm_source=3D3Dfooter"><a href=3D=
> "https://groups.google.com/d/msgi=3D" target=3D"_blank" rel=3D"nofollow">ht=
> tps://groups.google.com/d/msgi=3D</a>
><br />> d/beancount/e11cdcaf-4c1b-4154-a731-76cd805b3482n%<a href=3D"htt=
> p://40googlegroups.com" target=3D"_blank" rel=3D"nofollow">40googlegroups.c=
> om</a></a>.<b=3D
><br />> r />
><br />>
><br />> ------=3D_Part_4969_1824196410.1702208487217--
><br />>
><br />> ------=3D_Part_4968_1593684340.1702208487217--
><br />>
><br />
><br /></blockquote></div>
>
><p></p>
>
> -- <br />
> You received this message because you are subscribed to the Google Groups &=
> quot;Beancount" group.<br />
> To unsubscribe from this group and stop receiving emails from it, send an e=
> mail to <a href=3D"mailto:[email protected]">beancount=
> [email protected]</a>.<br />
> To view this discussion on the web visit <a href=3D"https://groups.google.c=
> om/d/msgid/beancount/494fa7c0-68e4-4f02-a4b0-27b52326cbe3n%40googlegroups.c=
> om?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.com/d/msgi=
> d/beancount/494fa7c0-68e4-4f02-a4b0-27b52326cbe3n%40googlegroups.com</a>.<b=
> r />
>
> ------=_Part_4423_2068436066.1702256755797--
>
> ------=_Part_4422_1215321251.1702256755797--
>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beancount/pg4q4k-mqr.ln1%40anthive.com.