4040 download_diffs_finalize ,
4141)
4242from .client_pull import pull_project_async , pull_project_wait , pull_project_finalize
43- from .client_push import push_project_async , push_project_wait , push_project_finalize
43+ from .client_push import push_project_async , push_project_wait , push_project_finalize , UploadChunksCache
4444from .utils import DateTimeEncoder , get_versions_with_file_changes , int_version , is_version_acceptable
4545from .version import __version__
4646
@@ -106,6 +106,8 @@ def __init__(
106106 self ._user_info = None
107107 self ._server_type = None
108108 self ._server_version = None
109+ self ._feature_flags = {}
110+ self .upload_chunks_cache = UploadChunksCache ()
109111 self .client_version = "Python-client/" + __version__
110112 if plugin_version is not None : # this could be e.g. "Plugin/2020.1 QGIS/3.14"
111113 self .client_version += " " + plugin_version
@@ -362,8 +364,7 @@ def server_type(self):
362364 """
363365 if not self ._server_type :
364366 try :
365- resp = self .get ("/config" , validate_auth = False )
366- config = json .load (resp )
367+ config = self .server_config ()
367368 if config ["server_type" ] == "ce" :
368369 self ._server_type = ServerType .CE
369370 elif config ["server_type" ] == "ee" :
@@ -384,14 +385,26 @@ def server_version(self):
384385 """
385386 if self ._server_version is None :
386387 try :
387- resp = self .get ("/config" , validate_auth = False )
388- config = json .load (resp )
388+ config = self .server_config ()
389389 self ._server_version = config ["version" ]
390390 except (ClientError , KeyError ):
391391 self ._server_version = ""
392392
393393 return self ._server_version
394394
395+ def server_features (self ):
396+ """
397+ Returns feature flags of the server.
398+ """
399+ if self ._feature_flags :
400+ return self ._feature_flags
401+ config = self .server_config ()
402+ return {
403+ "v2_push_enabled" : config .get ("v2_push_enabled" , False )
404+ and is_version_acceptable (self .server_version (), "2025.6.2" ),
405+ "v2_pull_enabled" : config .get ("v2_pull_enabled" , False ),
406+ }
407+
395408 def workspaces_list (self ):
396409 """
397410 Find all available workspaces
0 commit comments