@@ -537,11 +537,22 @@ def __init__(
537
537
self ._check_update_ ()
538
538
JIRA .checked_version = True
539
539
540
- self ._fields = {}
540
+ self ._fields_cache_value : Dict [str , str ] = {} # access via self._fields_cache
541
+
542
+ @property
543
+ def _fields_cache (self ) -> Dict [str , str ]:
544
+ """Cached dictionary of {Field Name: Field ID}. Lazy loaded."""
545
+ if not self ._fields_cache_value :
546
+ self ._update_fields_cache ()
547
+ return self ._fields_cache_value
548
+
549
+ def _update_fields_cache (self ):
550
+ """Update the cache used for `self._fields_cache`."""
551
+ self ._fields_cache_value = {}
541
552
for f in self .fields ():
542
553
if "clauseNames" in f :
543
554
for name in f ["clauseNames" ]:
544
- self ._fields [name ] = f ["id" ]
555
+ self ._fields_cache_value [name ] = f ["id" ]
545
556
546
557
@property
547
558
def server_url (self ) -> str :
@@ -2780,11 +2791,11 @@ def search_issues(
2780
2791
# this will translate JQL field names to REST API Name
2781
2792
# most people do know the JQL names so this will help them use the API easier
2782
2793
untranslate = {} # use to add friendly aliases when we get the results back
2783
- if self ._fields :
2794
+ if self ._fields_cache :
2784
2795
for i , field in enumerate (fields ):
2785
- if field in self ._fields :
2786
- untranslate [self ._fields [field ]] = fields [i ]
2787
- fields [i ] = self ._fields [field ]
2796
+ if field in self ._fields_cache :
2797
+ untranslate [self ._fields_cache [field ]] = fields [i ]
2798
+ fields [i ] = self ._fields_cache [field ]
2788
2799
2789
2800
search_params = {
2790
2801
"jql" : jql_str ,
0 commit comments