@@ -4605,7 +4605,7 @@ def test_ogr_geojson_arrow_stream_pyarrow_mixed_timezone(tmp_vsimem):
4605
4605
4606
4606
4607
4607
def test_ogr_geojson_arrow_stream_pyarrow_utc_plus_five (tmp_vsimem ):
4608
- pytest .importorskip ("pyarrow" )
4608
+ # pytest.importorskip("pyarrow")
4609
4609
4610
4610
filename = str (
4611
4611
tmp_vsimem / "test_ogr_geojson_arrow_stream_pyarrow_utc_plus_five.geojson"
@@ -4621,22 +4621,37 @@ def test_ogr_geojson_arrow_stream_pyarrow_utc_plus_five(tmp_vsimem):
4621
4621
lyr .CreateFeature (f )
4622
4622
ds = None
4623
4623
4624
+ try :
4625
+ import pyarrow # NOQA
4626
+
4627
+ has_pyarrow = True
4628
+ except ImportError :
4629
+ has_pyarrow = False
4630
+ if has_pyarrow :
4631
+ ds = ogr .Open (filename )
4632
+ lyr = ds .GetLayer (0 )
4633
+ stream = lyr .GetArrowStreamAsPyArrow ()
4634
+ assert stream .schema .field ("datetime" ).type .tz == "+05:00"
4635
+ values = []
4636
+ for batch in stream :
4637
+ for x in batch .field ("datetime" ):
4638
+ values .append (x .value )
4639
+ assert values == [1653982496789 , 1653986096789 ]
4640
+
4641
+ mem_ds = ogr .GetDriverByName ("Memory" ).CreateDataSource ("" )
4642
+ mem_lyr = mem_ds .CreateLayer ("test" , geom_type = ogr .wkbPoint )
4624
4643
ds = ogr .Open (filename )
4625
4644
lyr = ds .GetLayer (0 )
4626
- stream = lyr .GetArrowStreamAsPyArrow ()
4627
- assert stream .schema .field ("datetime" ).type .tz == "+05:00"
4628
- values = []
4629
- for batch in stream :
4630
- for x in batch .field ("datetime" ):
4631
- values .append (x .value )
4632
- assert values == [1654000496789 , 1654004096789 ]
4645
+ mem_lyr .WriteArrow (lyr )
4646
+
4647
+ f = mem_lyr .GetNextFeature ()
4648
+ assert f ["datetime" ] == "2022/05/31 12:34:56.789+05"
4633
4649
4634
4650
4635
4651
###############################################################################
4636
4652
4637
4653
4638
4654
def test_ogr_geojson_arrow_stream_pyarrow_utc_minus_five (tmp_vsimem ):
4639
- pytest .importorskip ("pyarrow" )
4640
4655
4641
4656
filename = str (
4642
4657
tmp_vsimem / "test_ogr_geojson_arrow_stream_pyarrow_utc_minus_five.geojson"
@@ -4652,22 +4667,37 @@ def test_ogr_geojson_arrow_stream_pyarrow_utc_minus_five(tmp_vsimem):
4652
4667
lyr .CreateFeature (f )
4653
4668
ds = None
4654
4669
4670
+ try :
4671
+ import pyarrow # NOQA
4672
+
4673
+ has_pyarrow = True
4674
+ except ImportError :
4675
+ has_pyarrow = False
4676
+ if has_pyarrow :
4677
+ ds = ogr .Open (filename )
4678
+ lyr = ds .GetLayer (0 )
4679
+ stream = lyr .GetArrowStreamAsPyArrow ()
4680
+ assert stream .schema .field ("datetime" ).type .tz == "-05:00"
4681
+ values = []
4682
+ for batch in stream :
4683
+ for x in batch .field ("datetime" ):
4684
+ values .append (x .value )
4685
+ assert values == [1654018496789 , 1654022096789 ]
4686
+
4687
+ mem_ds = ogr .GetDriverByName ("Memory" ).CreateDataSource ("" )
4688
+ mem_lyr = mem_ds .CreateLayer ("test" , geom_type = ogr .wkbPoint )
4655
4689
ds = ogr .Open (filename )
4656
4690
lyr = ds .GetLayer (0 )
4657
- stream = lyr .GetArrowStreamAsPyArrow ()
4658
- assert stream .schema .field ("datetime" ).type .tz == "-05:00"
4659
- values = []
4660
- for batch in stream :
4661
- for x in batch .field ("datetime" ):
4662
- values .append (x .value )
4663
- assert values == [1654000496789 , 1654004096789 ]
4691
+ mem_lyr .WriteArrow (lyr )
4692
+
4693
+ f = mem_lyr .GetNextFeature ()
4694
+ assert f ["datetime" ] == "2022/05/31 12:34:56.789-05"
4664
4695
4665
4696
4666
4697
###############################################################################
4667
4698
4668
4699
4669
4700
def test_ogr_geojson_arrow_stream_pyarrow_unknown_timezone (tmp_vsimem ):
4670
- pytest .importorskip ("pyarrow" )
4671
4701
4672
4702
filename = str (
4673
4703
tmp_vsimem / "test_ogr_geojson_arrow_stream_pyarrow_unknown_timezone.geojson"
@@ -4683,15 +4713,33 @@ def test_ogr_geojson_arrow_stream_pyarrow_unknown_timezone(tmp_vsimem):
4683
4713
lyr .CreateFeature (f )
4684
4714
ds = None
4685
4715
4716
+ try :
4717
+ import pyarrow # NOQA
4718
+
4719
+ has_pyarrow = True
4720
+ except ImportError :
4721
+ has_pyarrow = False
4722
+ if has_pyarrow :
4723
+ ds = ogr .Open (filename )
4724
+ lyr = ds .GetLayer (0 )
4725
+ stream = lyr .GetArrowStreamAsPyArrow ()
4726
+ assert stream .schema .field ("datetime" ).type .tz is None
4727
+ values = []
4728
+ for batch in stream :
4729
+ for x in batch .field ("datetime" ):
4730
+ values .append (x .value )
4731
+ assert values == [1654000496789 , 1654004096789 ]
4732
+
4733
+ mem_ds = ogr .GetDriverByName ("Memory" ).CreateDataSource ("" )
4734
+ mem_lyr = mem_ds .CreateLayer ("test" , geom_type = ogr .wkbPoint )
4686
4735
ds = ogr .Open (filename )
4687
4736
lyr = ds .GetLayer (0 )
4688
- stream = lyr .GetArrowStreamAsPyArrow ()
4689
- assert stream .schema .field ("datetime" ).type .tz is None
4690
- values = []
4691
- for batch in stream :
4692
- for x in batch .field ("datetime" ):
4693
- values .append (x .value )
4694
- assert values == [1654000496789 , 1654004096789 ]
4737
+ mem_lyr .WriteArrow (lyr )
4738
+
4739
+ f = mem_lyr .GetNextFeature ()
4740
+ # We have lost the timezone info here, as there's no way in Arrow to
4741
+ # have a mixed of with and without timezone in a single column
4742
+ assert f ["datetime" ] == "2022/05/31 12:34:56.789"
4695
4743
4696
4744
4697
4745
###############################################################################
0 commit comments