Skip to content

Commit 1c79fa8

Browse files
committed
FIX: Fix csv line endings on Windows
1 parent c898709 commit 1c79fa8

File tree

2 files changed

+57
-67
lines changed

2 files changed

+57
-67
lines changed

databento/common/dbnstore.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,7 @@ def to_csv(
871871
count=2**16,
872872
)
873873

874-
with open(path, "x") as csv_file:
874+
with open(path, "x", newline="") as csv_file:
875875
for i, frame in enumerate(df_iter):
876876
frame.to_csv(
877877
csv_file,

tests/test_historical_bento.py

Lines changed: 56 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import collections
44
import datetime as dt
5-
import sys
65
from io import BytesIO
76
from pathlib import Path
87
from typing import Any, Callable
@@ -493,21 +492,18 @@ def test_mbo_to_csv_writes_expected_file_to_disk(
493492
)
494493

495494
# Assert
496-
written = open(path, mode="rb").read()
495+
written = open(path).read()
497496
assert path.exists()
498497
expected = (
499-
b"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,price,size,channel_id,"
500-
b"order_id,flags,ts_in_delta,sequence\n1609160400000704060,1609160400000429831,160,"
501-
b"1,5482,C,A,3722750000000,1,0,647784973705,128,22993,1170352\n1609160400000711344,"
502-
b"1609160400000431665,160,1,5482,C,A,3723000000000,1,0,647784973631,128,19621,1170"
503-
b"353\n1609160400000728600,1609160400000433051,160,1,5482,C,A,3723250000000,1,0,647"
504-
b"784973427,128,16979,1170354\n1609160400000740248,1609160400000434353,160,1,5482,C"
505-
b",A,3723500000000,1,0,647784973094,128,17883,1170355\n"
498+
"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,price,size,channel_id,"
499+
"order_id,flags,ts_in_delta,sequence\n1609160400000704060,1609160400000429831,160,"
500+
"1,5482,C,A,3722750000000,1,0,647784973705,128,22993,1170352\n1609160400000711344,"
501+
"1609160400000431665,160,1,5482,C,A,3723000000000,1,0,647784973631,128,19621,1170"
502+
"353\n1609160400000728600,1609160400000433051,160,1,5482,C,A,3723250000000,1,0,647"
503+
"784973427,128,16979,1170354\n1609160400000740248,1609160400000434353,160,1,5482,C"
504+
",A,3723500000000,1,0,647784973094,128,17883,1170355\n"
506505
)
507506

508-
if sys.platform == "win32":
509-
expected = expected.replace(b"\n", b"\r\n")
510-
511507
assert written == expected
512508

513509

@@ -529,23 +525,20 @@ def test_mbp_1_to_csv_with_no_options_writes_expected_file_to_disk(
529525
)
530526

531527
# Assert
532-
written = open(path, mode="rb").read()
528+
written = open(path).read()
533529
assert path.exists()
534530
expected = (
535-
b"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,depth,price,size,flags"
536-
b",ts_in_delta,sequence,bid_px_00,ask_px_00,bid_sz_00,ask_sz_00,bid_ct_00,ask_ct_0"
537-
b"0\n1609160400006136329,1609160400006001487,1,1,5482,A,A,0,3720500000000,1,128,172"
538-
b"14,1170362,3720250000000,3720500000000,24,11,15,9\n1609160400006246513,1609160400"
539-
b"006146661,1,1,5482,A,A,0,3720500000000,1,128,18858,1170364,3720250000000,37205000000"
540-
b"00,24,12,15,10\n1609160400007159323,1609160400007044577,1,1,5482,A,B,0,3720250000"
541-
b"000,2,128,18115,1170365,3720250000000,3720500000000,26,12,16,10\n1609160400007260"
542-
b"967,1609160400007169135,1,1,5482,C,A,0,3720500000000,1,128,17361,1170366,37202500000"
543-
b"00,3720500000000,26,11,16,9\n"
531+
"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,depth,price,size,flags"
532+
",ts_in_delta,sequence,bid_px_00,ask_px_00,bid_sz_00,ask_sz_00,bid_ct_00,ask_ct_0"
533+
"0\n1609160400006136329,1609160400006001487,1,1,5482,A,A,0,3720500000000,1,128,172"
534+
"14,1170362,3720250000000,3720500000000,24,11,15,9\n1609160400006246513,1609160400"
535+
"006146661,1,1,5482,A,A,0,3720500000000,1,128,18858,1170364,3720250000000,37205000000"
536+
"00,24,12,15,10\n1609160400007159323,1609160400007044577,1,1,5482,A,B,0,3720250000"
537+
"000,2,128,18115,1170365,3720250000000,3720500000000,26,12,16,10\n1609160400007260"
538+
"967,1609160400007169135,1,1,5482,C,A,0,3720500000000,1,128,17361,1170366,37202500000"
539+
"00,3720500000000,26,11,16,9\n"
544540
)
545541

546-
if sys.platform == "win32":
547-
expected = expected.replace(b"\n", b"\r\n")
548-
549542
assert written == expected
550543

551544

@@ -567,25 +560,22 @@ def test_mbp_1_to_csv_with_all_options_writes_expected_file_to_disk(
567560
)
568561

569562
# Assert
570-
written = open(path, mode="rb").read()
563+
written = open(path).read()
571564
assert path.exists()
572565
expected = (
573-
b"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,depth,price,size,flags"
574-
b",ts_in_delta,sequence,bid_px_00,ask_px_00,bid_sz_00,ask_sz_00,bid_ct_00,ask_ct_00,sy"
575-
b"mbol\n2020-12-28 13:00:00.006136329+00:00,2020-12-28 13:00:00.006001487+00:00,1,1"
576-
b",5482,A,A,0,3720.5,1,128,17214,1170362,3720.25,3720.5"
577-
b",24,11,15,9,ESH1\n2020-12-28 13:00:00.006246513+00:00,2020-12-28 13:00:00.006"
578-
b"146661+00:00,1,1,5482,A,A,0,3720.5,1,128,18858,1170364,3720.25"
579-
b",3720.5,24,12,15,10,ESH1\n2020-12-28 13:00:00.007159323+00:00,2020-1"
580-
b"2-28 13:00:00.007044577+00:00,1,1,5482,A,B,0,3720.25,2,128,18115,1170365,"
581-
b"3720.25,3720.5,26,12,16,10,ESH1\n2020-12-28 13:00:00.00726"
582-
b"0967+00:00,2020-12-28 13:00:00.007169135+00:00,1,1,5482,C,A,0,3720.5,1,1"
583-
b"28,17361,1170366,3720.25,3720.5,26,11,16,9,ESH1\n"
566+
"ts_recv,ts_event,rtype,publisher_id,instrument_id,action,side,depth,price,size,flags"
567+
",ts_in_delta,sequence,bid_px_00,ask_px_00,bid_sz_00,ask_sz_00,bid_ct_00,ask_ct_00,sy"
568+
"mbol\n2020-12-28 13:00:00.006136329+00:00,2020-12-28 13:00:00.006001487+00:00,1,1"
569+
",5482,A,A,0,3720.5,1,128,17214,1170362,3720.25,3720.5"
570+
",24,11,15,9,ESH1\n2020-12-28 13:00:00.006246513+00:00,2020-12-28 13:00:00.006"
571+
"146661+00:00,1,1,5482,A,A,0,3720.5,1,128,18858,1170364,3720.25"
572+
",3720.5,24,12,15,10,ESH1\n2020-12-28 13:00:00.007159323+00:00,2020-1"
573+
"2-28 13:00:00.007044577+00:00,1,1,5482,A,B,0,3720.25,2,128,18115,1170365,"
574+
"3720.25,3720.5,26,12,16,10,ESH1\n2020-12-28 13:00:00.00726"
575+
"0967+00:00,2020-12-28 13:00:00.007169135+00:00,1,1,5482,C,A,0,3720.5,1,1"
576+
"28,17361,1170366,3720.25,3720.5,26,11,16,9,ESH1\n"
584577
)
585578

586-
if sys.platform == "win32":
587-
expected = expected.replace(b"\n", b"\r\n")
588-
589579
assert written == expected
590580

591581

@@ -607,21 +597,21 @@ def test_mbo_to_json_with_no_options_writes_expected_file_to_disk(
607597
)
608598

609599
# Assert
610-
written = open(path, mode="rb").read()
600+
written = open(path).read()
611601
assert path.exists()
612602
assert written.strip() == (
613-
b'{"ts_event":1609160400000429831,"rtype":160,"publisher_id":1,"instrument_id":5482,"a'
614-
b'ction":"C","side":"A","price":3722750000000,"size":1,"channel_id":0,"order_id":64778'
615-
b'4973705,"flags":128,"ts_in_delta":22993,"sequence":1170352}\n{"ts_event":16091604'
616-
b'00000431665,"rtype":160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A'
617-
b'","price":3723000000000,"size":1,"channel_id":0,"order_id":647784973631,"flags":128,'
618-
b'"ts_in_delta":19621,"sequence":1170353}\n{"ts_event":1609160400000433051,"rtype":'
619-
b'160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A","price":3723250000'
620-
b'000,"size":1,"channel_id":0,"order_id":647784973427,"flags":128,"ts_in_delta":16979,'
621-
b'"sequence":1170354}\n{"ts_event":1609160400000434353,"rtype":160,"publisher_id":1'
622-
b',"instrument_id":5482,"action":"C","side":"A","price":3723500000000,"size":1,"channe'
623-
b'l_id":0,"order_id":647784973094,"flags":128,"ts_in_delta":17883,"sequence":11703'
624-
b"55}"
603+
'{"ts_event":1609160400000429831,"rtype":160,"publisher_id":1,"instrument_id":5482,"a'
604+
'ction":"C","side":"A","price":3722750000000,"size":1,"channel_id":0,"order_id":64778'
605+
'4973705,"flags":128,"ts_in_delta":22993,"sequence":1170352}\n{"ts_event":16091604'
606+
'00000431665,"rtype":160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A'
607+
'","price":3723000000000,"size":1,"channel_id":0,"order_id":647784973631,"flags":128,'
608+
'"ts_in_delta":19621,"sequence":1170353}\n{"ts_event":1609160400000433051,"rtype":'
609+
'160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A","price":3723250000'
610+
'000,"size":1,"channel_id":0,"order_id":647784973427,"flags":128,"ts_in_delta":16979,'
611+
'"sequence":1170354}\n{"ts_event":1609160400000434353,"rtype":160,"publisher_id":1'
612+
',"instrument_id":5482,"action":"C","side":"A","price":3723500000000,"size":1,"channe'
613+
'l_id":0,"order_id":647784973094,"flags":128,"ts_in_delta":17883,"sequence":11703'
614+
"55}"
625615
)
626616

627617

@@ -643,21 +633,21 @@ def test_mbo_to_json_with_all_options_writes_expected_file_to_disk(
643633
)
644634

645635
# Assert
646-
written = open(path, mode="rb").read()
636+
written = open(path).read()
647637
assert path.exists()
648638
assert written.strip() == (
649-
b'{"ts_event":1609160400000,"rtype":160,"publisher_id":1,"instrument_id":5482,"action"'
650-
b':"C","side":"A","price":3722.75,"size":1,"channel_id":0,"order_id":647784973705,"fla'
651-
b'gs":128,"ts_in_delta":22993,"sequence":1170352,"symbol":"ESH1"}\n{"ts_event":1609'
652-
b'160400000,"rtype":160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A",'
653-
b'"price":3723.0,"size":1,"channel_id":0,"order_id":647784973631,"flags":128,"ts_in_de'
654-
b'lta":19621,"sequence":1170353,"symbol":"ESH1"}\n{"ts_event":1609160400000,"rtype"'
655-
b':160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A","price":3723.25,"'
656-
b'size":1,"channel_id":0,"order_id":647784973427,"flags":128,"ts_in_delta":16979,"sequ'
657-
b'ence":1170354,"symbol":"ESH1"}\n{"ts_event":1609160400000,"rtype":160,"publisher_'
658-
b'id":1,"instrument_id":5482,"action":"C","side":"A","price":3723.5,"size":1,"channel_'
659-
b'id":0,"order_id":647784973094,"flags":128,"ts_in_delta":17883,"sequence":1170355,"sy'
660-
b'mbol":"ESH1"}'
639+
'{"ts_event":1609160400000,"rtype":160,"publisher_id":1,"instrument_id":5482,"action"'
640+
':"C","side":"A","price":3722.75,"size":1,"channel_id":0,"order_id":647784973705,"fla'
641+
'gs":128,"ts_in_delta":22993,"sequence":1170352,"symbol":"ESH1"}\n{"ts_event":1609'
642+
'160400000,"rtype":160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A",'
643+
'"price":3723.0,"size":1,"channel_id":0,"order_id":647784973631,"flags":128,"ts_in_de'
644+
'lta":19621,"sequence":1170353,"symbol":"ESH1"}\n{"ts_event":1609160400000,"rtype"'
645+
':160,"publisher_id":1,"instrument_id":5482,"action":"C","side":"A","price":3723.25,"'
646+
'size":1,"channel_id":0,"order_id":647784973427,"flags":128,"ts_in_delta":16979,"sequ'
647+
'ence":1170354,"symbol":"ESH1"}\n{"ts_event":1609160400000,"rtype":160,"publisher_'
648+
'id":1,"instrument_id":5482,"action":"C","side":"A","price":3723.5,"size":1,"channel_'
649+
'id":0,"order_id":647784973094,"flags":128,"ts_in_delta":17883,"sequence":1170355,"sy'
650+
'mbol":"ESH1"}'
661651
)
662652

663653

0 commit comments

Comments
 (0)