aboutsummaryrefslogtreecommitdiffstats
path: root/python/innocap_file_transfer.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/innocap_file_transfer.py')
-rw-r--r--python/innocap_file_transfer.py48
1 files changed, 14 insertions, 34 deletions
diff --git a/python/innocap_file_transfer.py b/python/innocap_file_transfer.py
index 5bac33c4..07149acb 100644
--- a/python/innocap_file_transfer.py
+++ b/python/innocap_file_transfer.py
@@ -1,54 +1,34 @@
+from io import BytesIO
from serenitas.utils.env import DAILY_DIR
-from csv import DictReader, DictWriter
import datetime
-import re
-import argparse
from csv_headers.citco import GIL, GTL
-from io import StringIO
from serenitas.utils.remote import SftpClient
from serenitas.analytics.dates import prev_business_day
-def extract_data_from_directory(date, file_type):
+def concat_csv(file_type, date):
match file_type:
case "trade":
file_tag = "innocap_serenitas_trades"
case "instrument":
file_tag = "i.innocap_serenitas"
- file_directory = DAILY_DIR / str(date)
-
- pat = re.compile(f"^{file_tag}")
-
- l = []
- for f in [f for f in file_directory.iterdir() if f.is_file()]:
- if match := pat.match(f.name):
- with open(f) as fh:
- reader = DictReader(fh)
- for csv_dict in reader:
- l.append(csv_dict)
-
- return l
-
-
-def gen_csv(l, file_type, date, upload):
- buf = StringIO()
- todays_directory = DAILY_DIR / str(datetime.date.today())
- writer = DictWriter(buf, GTL if file_type == "trade" else GIL)
- writer.writeheader()
- writer.writerows(l)
- buf = buf.getvalue().encode()
fname = f"Innocap_ISOSEL_{file_type}_{date:%Y-%m-%d}.csv"
- dest = todays_directory / fname
- dest.write_bytes(buf)
- if upload:
- innocap_sftp = SftpClient.from_creds("innocap", folder="Innocap")
- innocap_sftp.put(buf, fname)
+ buf = BytesIO()
+ buf.write((",".join(GTL if file_type == "trade" else GIL) + "\n").encode())
+ for f in (DAILY_DIR / str(date)).iterdir():
+ if f.is_file() and f.name.startswith(file_tag):
+ with f.open("rb") as fh:
+ next(fh)
+ buf.write(fh.read())
+ return buf, fname
def main(date, upload):
for file_type in ("trade", "instrument"):
- l = extract_data_from_directory(date, file_type)
- gen_csv(l, file_type, date, upload)
+ buf, fname = concat_csv(file_type, date)
+ if upload:
+ innocap_sftp = SftpClient.from_creds("innocap", folder="Innocap")
+ innocap_sftp.put(buf, fname)
if __name__ == "__main__":