From 343503fa024e2d2e11ecfcef72e90a467e7cd8f2 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 30 Jul 2025 22:52:15 +0300 Subject: [PATCH 1/7] Update column mapping Transferwise changed their csv format to include "Date Time" column on 3rd position. Update ofxstatement column mapping accordingly. --- src/ofxstatement/plugins/transferwise.py | 6 +++--- tests/sample-statement.csv | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ofxstatement/plugins/transferwise.py b/src/ofxstatement/plugins/transferwise.py index af88494..5c14677 100644 --- a/src/ofxstatement/plugins/transferwise.py +++ b/src/ofxstatement/plugins/transferwise.py @@ -24,9 +24,9 @@ def get_parser(self, filename: str) -> "TransferwiseParser": class TransferwiseParser(CsvStatementParser): date_format: str = "%d-%m-%Y" mappings = { - "amount": 2, + "amount": 3, "date": 1, - "memo": 4, + "memo": 5, "refnum": 0, } @@ -55,7 +55,7 @@ def parse_record(self, line: List[str]) -> Optional[StatementLine]: if sl is None: return None - ccy = line[3] + ccy = line[4] if ccy != self.currency: # Skip lines in some other currencies return None diff --git a/tests/sample-statement.csv b/tests/sample-statement.csv index 63f6b7c..52b1962 100644 --- a/tests/sample-statement.csv +++ b/tests/sample-statement.csv @@ -1,6 +1,6 @@ -"TransferWise ID",Date,Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Total fees" -TRANSFER-175545673,24-08-2020,-357.38,USD,"Sent money to John Doe","Moving to Revolut",787.62,USD,EUR,0.84840,,"John Doe","LT21 1111 2222 3333 4444",,11.35 -TRANSFER-175545673,24-08-2020,-11.35,USD,"TransferWise Charges for: TRANSFER-175545673","Sending money",776.27,,,,,TransferWise,,,0 -TRANSFER-175522746,24-08-2020,125.00,USD,"Received money from the friend. with reference ",,145.00,,,,"Friend.",,,,0.00 -TRANSFER-174549828,20-08-2020,20.17,USD,"Topped up balance",,20.17,,,,,,,,0.17 -TRANSFER-174549828,20-08-2020,-0.17,USD,"TransferWise Charges for: TRANSFER-174549828",,20.00,,,,,,,,0 +"TransferWise ID",Date,"Date Time",Amount,Currency,Description,"Payment Reference","Running Balance","Exchange From","Exchange To","Exchange Rate","Payer Name","Payee Name","Payee Account Number",Merchant,"Total fees" +TRANSFER-175545673,24-08-2020,"24-08-2020 13:43:54",-357.38,USD,"Sent money to John Doe","Moving to Revolut",787.62,USD,EUR,0.84840,,"John Doe","LT21 1111 2222 3333 4444",,11.35 +TRANSFER-175545673,24-08-2020,"24-08-2020 08:12:37",-11.35,USD,"TransferWise Charges for: TRANSFER-175545673","Sending money",776.27,,,,,TransferWise,,,0 +TRANSFER-175522746,24-08-2020,"24-08-2020 19:27:05",125.00,USD,"Received money from the friend. with reference ",,145.00,,,,"Friend.",,,,0.00 +TRANSFER-174549828,20-08-2020,"20-08-2020 16:01:22",20.17,USD,"Topped up balance",,20.17,,,,,,,,0.17 +TRANSFER-174549828,20-08-2020,"20-08-2020 05:55:41",-0.17,USD,"TransferWise Charges for: TRANSFER-174549828",,20.00,,,,,,,,0 From e06ba8114d97c45beda7a599f526b97820df8c11 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 30 Jul 2025 23:02:26 +0300 Subject: [PATCH 2/7] Update dependencies --- Pipfile.lock | 302 +++++++++++++++++++++------------------------------ 1 file changed, 123 insertions(+), 179 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 534e67a..75a760b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -14,53 +14,64 @@ ] }, "default": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" - }, "ofxstatement": { "hashes": [ - "sha256:5c0fa2d61467c4c4ea2319835176bc2c7a8d9a7e28d28824d8bb2a00badf1ac6" + "sha256:4a90c5406b3cd07f7f06d4645ce7e1b574d09531de25cb9c0f4d6819eff55b01", + "sha256:5c1b7b85b7d7bc2397ab0523aec0e702a27ae574ebd550743d951ffed4117152" ], "index": "pypi", - "version": "==0.7.1" + "markers": "python_version >= '3.9'", + "version": "==0.9.2" }, - "ofxstatement-sample": { - "editable": true, - "path": "." - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" + "ofxstatement-transferwise": { + "version": "==1.1.0.dev0" }, - "attrs": { + "platformdirs": { "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", + "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" ], - "version": "==20.3.0" - }, + "markers": "python_version >= '3.9'", + "version": "==4.3.8" + } + }, + "develop": { "black": { "hashes": [ - "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", + "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", + "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", + "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", + "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", + "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", + "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", + "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", + "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", + "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", + "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", + "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", + "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0", + "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", + "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", + "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", + "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355", + "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", + "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e", + "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", + "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", + "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f" ], "index": "pypi", - "version": "==20.8b1" + "markers": "python_version >= '3.9'", + "version": "==25.1.0" }, "click": { "hashes": [ - "sha256:06b3a46da3b40f4bbe19b8ea5ba9a34e7925913a9b51608ff0c1d78ef0b814b4", - "sha256:7340a8666a3e2eff5f2ee778c2d06b606ce9891a61b2ee315e0a3994ffd2226a" + "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", + "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" ], - "version": "==8.0.0rc1" + "markers": "python_version >= '3.10'", + "version": "==8.2.1" }, "dataclasses": { "hashes": [ @@ -72,199 +83,132 @@ }, "importlib-metadata": { "hashes": [ - "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83", - "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070" + "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", + "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" ], "index": "pypi", - "version": "==1.7.0" + "markers": "python_version >= '3.9'", + "version": "==8.7.0" }, "iniconfig": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", + "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" ], - "version": "==1.1.1" - }, - "more-itertools": { - "hashes": [ - "sha256:5652a9ac72209ed7df8d9c15daf4e1aa0e3d2ccd3c87f8265a0673cd9cbc9ced", - "sha256:c5d6da9ca3ff65220c3bfd2a8db06d698f05d4d2b9be57e1deb2be5a45019713" - ], - "version": "==8.7.0" + "markers": "python_version >= '3.8'", + "version": "==2.1.0" }, "mypy": { "hashes": [ - "sha256:2c6cde8aa3426c1682d35190b59b71f661237d74b053822ea3d748e2c9578a7c", - "sha256:3fdda71c067d3ddfb21da4b80e2686b71e9e5c72cca65fa216d207a358827f86", - "sha256:5dd13ff1f2a97f94540fd37a49e5d255950ebcdf446fb597463a40d0df3fac8b", - "sha256:6731603dfe0ce4352c555c6284c6db0dc935b685e9ce2e4cf220abe1e14386fd", - "sha256:6bb93479caa6619d21d6e7160c552c1193f6952f0668cdda2f851156e85186fc", - "sha256:81c7908b94239c4010e16642c9102bfc958ab14e36048fa77d0be3289dda76ea", - "sha256:9c7a9a7ceb2871ba4bac1cf7217a7dd9ccd44c27c2950edbc6dc08530f32ad4e", - "sha256:a4a2cbcfc4cbf45cd126f531dedda8485671545b43107ded25ce952aac6fb308", - "sha256:b7fbfabdbcc78c4f6fc4712544b9b0d6bf171069c6e0e3cb82440dd10ced3406", - "sha256:c05b9e4fb1d8a41d41dec8786c94f3b95d3c5f528298d769eb8e73d293abc48d", - "sha256:d7df6eddb6054d21ca4d3c6249cae5578cb4602951fd2b6ee2f5510ffb098707", - "sha256:e0b61738ab504e656d1fe4ff0c0601387a5489ca122d55390ade31f9ca0e252d", - "sha256:eff7d4a85e9eea55afa34888dfeaccde99e7520b51f867ac28a48492c0b1130c", - "sha256:f05644db6779387ccdb468cc47a44b4356fc2ffa9287135d05b70a98dc83b89a" + "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba", + "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889", + "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a", + "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e", + "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496", + "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d", + "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d", + "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06", + "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8", + "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3", + "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8", + "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d", + "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab", + "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b", + "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f", + "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a", + "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f", + "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be", + "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c", + "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4", + "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937", + "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658", + "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d", + "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c", + "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61", + "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03", + "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70", + "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97", + "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8", + "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad", + "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6", + "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" ], "index": "pypi", - "version": "==0.782" + "markers": "python_version >= '3.9'", + "version": "==1.17.0" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", + "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" ], - "version": "==0.4.3" + "markers": "python_version >= '3.8'", + "version": "==1.1.0" }, "packaging": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", + "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" ], - "version": "==20.9" + "markers": "python_version >= '3.8'", + "version": "==25.0" }, "pathspec": { "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" ], - "version": "==0.8.1" + "markers": "python_version >= '3.8'", + "version": "==0.12.1" }, - "pluggy": { + "platformdirs": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", + "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" ], - "version": "==0.13.1" + "markers": "python_version >= '3.9'", + "version": "==4.3.8" }, - "py": { + "pluggy": { "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", + "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" ], - "index": "pypi", - "version": "==1.10.0" + "markers": "python_version >= '3.9'", + "version": "==1.6.0" }, - "pyparsing": { + "pygments": { "hashes": [ - "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", - "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" + "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", + "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" ], - "version": "==3.0.0b2" + "markers": "python_version >= '3.8'", + "version": "==2.19.2" }, "pytest": { "hashes": [ - "sha256:0e37f61339c4578776e090c3b8f6b16ce4db333889d65d0efb305243ec544b40", - "sha256:c8f57c2a30983f469bf03e68cdfa74dc474ce56b8f280ddcb080dfd91df01043" + "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", + "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" ], "index": "pypi", - "version": "==6.0.2" - }, - "regex": { - "hashes": [ - "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5", - "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79", - "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31", - "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500", - "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11", - "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14", - "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3", - "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439", - "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c", - "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82", - "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711", - "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093", - "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a", - "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb", - "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8", - "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17", - "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000", - "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d", - "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480", - "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc", - "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0", - "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9", - "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765", - "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e", - "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a", - "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07", - "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f", - "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac", - "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7", - "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed", - "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968", - "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7", - "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2", - "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4", - "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87", - "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8", - "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10", - "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29", - "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605", - "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6", - "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042" - ], - "version": "==2021.4.4" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "version": "==0.10.2" - }, - "typed-ast": { - "hashes": [ - "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", - "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", - "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", - "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", - "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", - "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", - "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", - "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", - "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", - "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", - "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", - "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", - "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", - "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", - "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", - "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", - "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", - "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", - "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", - "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", - "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", - "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", - "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", - "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", - "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", - "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", - "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", - "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", - "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", - "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" - ], - "version": "==1.4.3" + "markers": "python_version >= '3.9'", + "version": "==8.4.1" }, "typing-extensions": { "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", + "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" ], - "version": "==3.7.4.3" + "markers": "python_version >= '3.9'", + "version": "==4.14.1" }, "zipp": { "hashes": [ - "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", - "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" + "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", + "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" ], - "version": "==3.4.1" + "markers": "python_version >= '3.9'", + "version": "==3.23.0" } } } From 6441339fffac3e51c4f890c1b98d10b6d8478999 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 30 Jul 2025 23:02:36 +0300 Subject: [PATCH 3/7] Drop support for old pythons --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 8df8aed..5345d31 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.6, 3.7, 3.8] + python-version: ["3.9", "3.10", "3.11"] steps: - uses: actions/checkout@v2 From 538f5a27071c965d1507c6ea16ca45c4e1a5e2e2 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 10 Sep 2025 23:04:31 +0300 Subject: [PATCH 4/7] Move plugin to its own module --- Pipfile | 2 +- setup.py | 2 +- src/ofxstatement/__init__.py | 1 - src/ofxstatement/plugins/__init__.py | 1 - src/ofxstatement_wise/__init__.py | 0 .../plugins/transferwise.py => ofxstatement_wise/wise.py} | 0 tests/test_transferwise.py | 2 +- 7 files changed, 3 insertions(+), 5 deletions(-) delete mode 100644 src/ofxstatement/__init__.py delete mode 100644 src/ofxstatement/plugins/__init__.py create mode 100644 src/ofxstatement_wise/__init__.py rename src/{ofxstatement/plugins/transferwise.py => ofxstatement_wise/wise.py} (100%) diff --git a/Pipfile b/Pipfile index 0461d4c..f3f7986 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ dataclasses = "*" # required by black on python-3.6 [packages] ofxstatement = "*" -ofxstatement-sample = {editable = true, path = "."} +ofxstatement-transferwise = {editable = true, path = "."} [pipenv] allow_prereleases = true diff --git a/setup.py b/setup.py index fce1736..4c1897a 100755 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ namespace_packages=["ofxstatement", "ofxstatement.plugins"], entry_points={ "ofxstatement": [ - "transferwise = ofxstatement.plugins.transferwise:TransferwisePlugin" + "transferwise = ofxstatement_wise.wise:TransferwisePlugin" ] }, install_requires=["ofxstatement"], diff --git a/src/ofxstatement/__init__.py b/src/ofxstatement/__init__.py deleted file mode 100644 index 5284146..0000000 --- a/src/ofxstatement/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__("pkg_resources").declare_namespace(__name__) diff --git a/src/ofxstatement/plugins/__init__.py b/src/ofxstatement/plugins/__init__.py deleted file mode 100644 index 5284146..0000000 --- a/src/ofxstatement/plugins/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__("pkg_resources").declare_namespace(__name__) diff --git a/src/ofxstatement_wise/__init__.py b/src/ofxstatement_wise/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ofxstatement/plugins/transferwise.py b/src/ofxstatement_wise/wise.py similarity index 100% rename from src/ofxstatement/plugins/transferwise.py rename to src/ofxstatement_wise/wise.py diff --git a/tests/test_transferwise.py b/tests/test_transferwise.py index 7edaea6..d31b4cc 100644 --- a/tests/test_transferwise.py +++ b/tests/test_transferwise.py @@ -2,7 +2,7 @@ from ofxstatement.ui import UI -from ofxstatement.plugins.transferwise import TransferwisePlugin +from ofxstatement_wise.wise import TransferwisePlugin def test_transferwise() -> None: From 56beab80664365d6e9f536f1b8a5aed80367ac44 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 10 Sep 2025 23:20:42 +0300 Subject: [PATCH 5/7] Convert to pyproject.toml --- MANIFEST.in | 2 +- Makefile | 2 +- Pipfile.lock | 107 ++++++++++++++++++++++++++----------------------- pyproject.toml | 48 ++++++++++++++++++++++ setup.cfg | 5 --- setup.py | 44 -------------------- 6 files changed, 107 insertions(+), 101 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100755 setup.py diff --git a/MANIFEST.in b/MANIFEST.in index 9561fb1..bb3ec5f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1 @@ -include README.rst +include README.md diff --git a/Makefile b/Makefile index 623dd73..df60601 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ coverage: bin/pytest .PHONY: black black: - black setup.py src tests + black src tests .PHONY: mypy mypy: diff --git a/Pipfile.lock b/Pipfile.lock index 75a760b..3cffbb5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "019186f3c092936702389f5d275c4a9519707259b0319ae24524726ae1dfa617" + "sha256": "ce857bf8455922fc2b2e0440300b58b6bf27cc748b547832d08f28cd5c016a40" }, "pipfile-spec": 6, "requires": {}, @@ -16,23 +16,24 @@ "default": { "ofxstatement": { "hashes": [ - "sha256:4a90c5406b3cd07f7f06d4645ce7e1b574d09531de25cb9c0f4d6819eff55b01", - "sha256:5c1b7b85b7d7bc2397ab0523aec0e702a27ae574ebd550743d951ffed4117152" + "sha256:092285583f5d1784ddccf1f1b8427ed39839ea67d76a7ea65ec0af52edfe9a59", + "sha256:e56f0bdaad75057bc3e091d8983b7c61aa2f71a5e22afc8164ce5238e777a73e" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==0.9.2" + "version": "==0.9.3" }, "ofxstatement-transferwise": { - "version": "==1.1.0.dev0" + "editable": true, + "path": "." }, "platformdirs": { "hashes": [ - "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", - "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" + "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", + "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf" ], "markers": "python_version >= '3.9'", - "version": "==4.3.8" + "version": "==4.4.0" } }, "develop": { @@ -100,42 +101,48 @@ }, "mypy": { "hashes": [ - "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba", - "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889", - "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a", - "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e", - "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496", - "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d", - "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d", - "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06", - "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8", - "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3", - "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8", - "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d", - "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab", - "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b", - "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f", - "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a", - "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f", - "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be", - "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c", - "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4", - "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937", - "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658", - "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d", - "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c", - "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61", - "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03", - "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70", - "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97", - "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8", - "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad", - "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6", - "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" + "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341", + "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5", + "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849", + "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733", + "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81", + "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403", + "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6", + "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01", + "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91", + "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972", + "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8", + "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd", + "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9", + "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0", + "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19", + "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb", + "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd", + "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99", + "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7", + "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056", + "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7", + "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a", + "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed", + "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94", + "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9", + "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58", + "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8", + "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5", + "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a", + "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df", + "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb", + "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d", + "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390", + "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b", + "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b", + "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14", + "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259", + "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==1.17.0" + "version": "==1.17.1" }, "mypy-extensions": { "hashes": [ @@ -163,11 +170,11 @@ }, "platformdirs": { "hashes": [ - "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", - "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" + "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", + "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf" ], "markers": "python_version >= '3.9'", - "version": "==4.3.8" + "version": "==4.4.0" }, "pluggy": { "hashes": [ @@ -187,20 +194,20 @@ }, "pytest": { "hashes": [ - "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", - "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" + "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", + "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==8.4.1" + "version": "==8.4.2" }, "typing-extensions": { "hashes": [ - "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", - "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" + "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", + "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" ], "markers": "python_version >= '3.9'", - "version": "==4.14.1" + "version": "==4.15.0" }, "zipp": { "hashes": [ diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..80c5757 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,48 @@ +[build-system] +requires = ["setuptools>=61.0", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "ofxstatement-transferwise" +version = "1.1.0.dev0" +description = "Transferwise plugin for ofxstatement" +readme = "README.md" +license = "GPL-3.0-or-later" +authors = [ + {name = "Andrey Lebedev", email = "andrey@lebedev.lt"} +] +keywords = ["ofx", "banking", "statement"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Programming Language :: Python :: 3", + "Natural Language :: English", + "Topic :: Office/Business :: Financial :: Accounting", + "Topic :: Utilities", + "Environment :: Console", + "Operating System :: OS Independent", +] +dependencies = [ + "ofxstatement", +] +requires-python = ">=3.6" + +[project.urls] +Homepage = "https://github.com/kedder/ofxstatement-transferwise" + +[project.entry-points.ofxstatement] +transferwise = "ofxstatement_wise.wise:TransferwisePlugin" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.package-dir] +"" = "src" + +[tool.mypy] + +[tool.pycodestyle] +max-line-length = 88 + +[tool.black] +line-length = 88 +target-version = ['py36'] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index b3c7331..0000000 --- a/setup.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[mypy] -namespace_packages=True - -[pycodestyle] -max-line-length=88 diff --git a/setup.py b/setup.py deleted file mode 100755 index 4c1897a..0000000 --- a/setup.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/python3 -"""Setup -""" -from setuptools import find_packages -from distutils.core import setup - -version = "1.1.0.dev0" - -with open("README.md") as f: - long_description = f.read() - -setup( - name="ofxstatement-transferwise", - version=version, - author="Andrey Lebedev", - author_email="andrey@lebedev.lt", - url="https://github.com/kedder/ofxstatement-transferwise", - description=("Transferwise plugin for ofxstatement"), - long_description=long_description, - long_description_content_type="text/markdown", - license="GPLv3", - keywords=["ofx", "banking", "statement"], - classifiers=[ - "Development Status :: 3 - Alpha", - "Programming Language :: Python :: 3", - "Natural Language :: English", - "Topic :: Office/Business :: Financial :: Accounting", - "Topic :: Utilities", - "Environment :: Console", - "Operating System :: OS Independent", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - ], - packages=find_packages("src"), - package_dir={"": "src"}, - namespace_packages=["ofxstatement", "ofxstatement.plugins"], - entry_points={ - "ofxstatement": [ - "transferwise = ofxstatement_wise.wise:TransferwisePlugin" - ] - }, - install_requires=["ofxstatement"], - include_package_data=True, - zip_safe=True, -) From 043adebed6c5e78f7578d545b227a8ad5d3d13be Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 10 Sep 2025 23:32:02 +0300 Subject: [PATCH 6/7] Fix mypy errors --- src/ofxstatement_wise/wise.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ofxstatement_wise/wise.py b/src/ofxstatement_wise/wise.py index 5c14677..f2115ab 100644 --- a/src/ofxstatement_wise/wise.py +++ b/src/ofxstatement_wise/wise.py @@ -31,7 +31,7 @@ class TransferwiseParser(CsvStatementParser): } def __init__( - self, fin: TextIO, currency: str = None, account_id: str = None + self, fin: TextIO, currency: str | None = None, account_id: str | None = None ) -> None: super().__init__(fin) self.currency = currency From b17c64ad8c69f8745faa10c626d2a6a753682487 Mon Sep 17 00:00:00 2001 From: Andrey Lebedev Date: Wed, 10 Sep 2025 23:34:39 +0300 Subject: [PATCH 7/7] No more setup.py --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 5345d31..eb0f26f 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -36,4 +36,4 @@ jobs: pipenv run mypy src tests - name: Black run: | - pipenv run black --check setup.py src tests + pipenv run black --check src tests