2828from datetime import datetime
2929
3030from pytest_asyncio import fixture
31-
31+ from servicex . python_dataset import PythonDataset
3232from servicex .models import (
3333 TransformRequest ,
3434 ResultDestination ,
3737 TransformedResults ,
3838)
3939
40+ from servicex .configuration import Configuration
41+ from servicex .query_cache import QueryCache
42+ from servicex .dataset_identifier import FileListDataset
43+ from servicex .minio_adapter import MinioAdapter
44+
45+ import tempfile
46+ import pandas as pd
47+ import os
48+
4049
4150@fixture
4251def transform_request () -> TransformRequest :
@@ -50,6 +59,61 @@ def transform_request() -> TransformRequest:
5059 ) # type: ignore
5160
5261
62+ @fixture
63+ def transform_request_python_dataset (dummy_parquet_file ) -> TransformRequest :
64+ return TransformRequest (
65+ title = "Test submission" ,
66+ selection = "ICAgICAgICBkZWYgZm9vKCk6CiAgICAgICAgICAgIHJldHVybgo=" ,
67+ codegen = "uproot" ,
68+ result_destination = ResultDestination .object_store , # type: ignore
69+ result_format = ResultFormat .parquet , # type: ignore,
70+ file_list = [dummy_parquet_file ],
71+ ) # type: ignore
72+
73+
74+ @fixture
75+ def minio_adapter () -> MinioAdapter :
76+ return MinioAdapter ("localhost" , False , "access_key" , "secret_key" , "bucket" )
77+
78+
79+ @fixture
80+ def python_dataset (dummy_parquet_file ):
81+ did = FileListDataset (dummy_parquet_file )
82+ with tempfile .TemporaryDirectory () as temp_dir :
83+ config = Configuration (cache_path = temp_dir , api_endpoints = []) # type: ignore
84+ cache = QueryCache (config )
85+ dataset = PythonDataset (
86+ title = "Test submission" ,
87+ dataset_identifier = did ,
88+ codegen = "uproot" ,
89+ result_format = ResultFormat .parquet , # type: ignore
90+ query_cache = cache ,
91+ ) # type: ignore
92+
93+ def foo ():
94+ return
95+
96+ dataset .with_uproot_function (foo )
97+ dataset .configuration = config
98+ yield dataset
99+
100+
101+ @fixture
102+ def transformed_result_python_dataset (dummy_parquet_file ) -> TransformedResults :
103+ return TransformedResults (
104+ hash = "289e90f6fe3780253af35c428b784ac22d3ee9200a7581b8f0a9bdcc5ae93479" ,
105+ title = "Test submission" ,
106+ codegen = "uproot" ,
107+ request_id = "b8c508d0-ccf2-4deb-a1f7-65c839eebabf" ,
108+ submit_time = datetime .now (),
109+ data_dir = "/foo/bar" ,
110+ file_list = [dummy_parquet_file ],
111+ signed_url_list = [],
112+ files = 1 ,
113+ result_format = ResultFormat .parquet ,
114+ )
115+
116+
53117@fixture
54118def transform_status_response () -> dict :
55119 return {
@@ -115,16 +179,30 @@ def completed_status() -> TransformStatus:
115179
116180
117181@fixture
118- def transformed_result () -> TransformedResults :
182+ def transformed_result (dummy_parquet_file ) -> TransformedResults :
119183 return TransformedResults (
120184 hash = "123-4455" ,
121185 title = "Test" ,
122186 codegen = "uproot" ,
123187 request_id = "123-45-6789" ,
124188 submit_time = datetime .now (),
125189 data_dir = "/foo/bar" ,
126- file_list = ["/tmp/1.root" , "/tmp/2.root" ],
190+ file_list = [dummy_parquet_file ],
127191 signed_url_list = [],
128192 files = 2 ,
129193 result_format = ResultFormat .root_file ,
130194 )
195+
196+
197+ @fixture
198+ def dummy_parquet_file ():
199+ data = {'column1' : [1 , 2 , 3 , 4 ],
200+ 'column2' : ['A' , 'B' , 'C' , 'D' ]}
201+ df = pd .DataFrame (data )
202+ parquet_file_path = '1.parquet'
203+ df .to_parquet (parquet_file_path , index = False )
204+
205+ yield parquet_file_path
206+
207+ if os .path .exists (parquet_file_path ):
208+ os .remove (parquet_file_path )
0 commit comments