• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rjfarmer / gfModParser / 13875355623

15 Mar 2025 06:06PM UTC coverage: 77.114% (-4.8%) from 81.897%
13875355623

push

github

rjfarmer
Finish of properties

59 of 135 new or added lines in 9 files covered. (43.7%)

529 of 686 relevant lines covered (77.11%)

0.77 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

60.83
/gfModParser/modules/properties.py
1
# SPDX-License-Identifier: GPL-2.0+
2
import pyparsing
1✔
3

4
from . import attributes
1✔
5
from . import components
1✔
6
from . import expressions
1✔
7
from . import simds
1✔
8
from . import namespaces
1✔
9
from . import procedures
1✔
10
from . import arrays
1✔
11
from . import namelists
1✔
12

13

14
class Properties:
1✔
15
    """
16
    Stores properties of an object
17
    """
18

19
    def __init__(self, properties, *, version):
1✔
20
        self._raw = properties
1✔
21
        self.version = version
1✔
22
        self._properties = None
1✔
23
        self._components = None
1✔
24

25
        self._comp_access = None
1✔
26
        self._parameter = None
1✔
27

28
    def _load(self):
1✔
29
        p = pyparsing.OneOrMore(pyparsing.nestedExpr()).parseString(self._raw)
1✔
30

31
        self._properties = p[0]
1✔
32

33
        if isinstance(self._properties[2], str):
1✔
34
            self._comp_access = self._properties[2]
1✔
35
            _ = self._properties.pop(2)
1✔
36
        if self.attributes.is_parameter:
1✔
37
            self._parameter = self._properties[2]
1✔
38
            _ = self._properties.pop(6)
1✔
39

40
    @property
1✔
41
    def attributes(self):
1✔
42
        if self._properties is None:
1✔
43
            self._load()
1✔
44
        return attributes.Attributes(self._properties[0], version=self.version)
1✔
45

46
    @property
1✔
47
    def components(self):
1✔
48
        if self._properties is None:
1✔
49
            self._load()
1✔
50
        if self._components is None:
1✔
51
            self._components = components.Components(
1✔
52
                self._properties[1], version=self.version
53
            )
54

55
        return self._components
1✔
56

57
    @property
1✔
58
    def component_access(self):
1✔
NEW
59
        return self._comp_access
×
60

61
    @property
1✔
62
    def typespec(self):
1✔
63
        if self._properties is None:
1✔
64
            self._load()
1✔
65
        return expressions.typespec(self._properties[2], version=self.version)
1✔
66

67
    @property
1✔
68
    def namespace(self):
1✔
69
        if self._properties is None:
×
70
            self._load()
×
NEW
71
        return namespaces.namespace(self._properties[3], version=self.version)
×
72

73
    @property
1✔
74
    def common_symbol(self):
1✔
75
        if self._properties is None:
×
76
            self._load()
×
NEW
77
        return int(self._properties[4])
×
78

79
    @property
1✔
80
    def formal_argument(self):
1✔
81
        if self._properties is None:
×
82
            self._load()
×
NEW
83
        return procedures.arglist(self._properties[5], version=self.version)
×
84

85
    @property
1✔
86
    def parameter(self):
1✔
NEW
87
        if self._parameter is not None:
×
NEW
88
            return expressions.expression(self._parameter, version=self.version)
×
89

90
    @property
1✔
91
    def array_spec(self):
1✔
92
        if self._properties is None:
×
93
            self._load()
×
NEW
94
        return arrays.arrayspec(self._properties[6], version=self.version)
×
95

96
    @property
1✔
97
    def symbol_reference(self):
1✔
98
        if self._properties is None:
×
99
            self._load()
×
100
        if not any([i == "CRAY_POINTER" for i in self.attributes]):
×
NEW
101
            return int(self._properties[7])
×
102

103
    @property
1✔
104
    def cray_pointer_reference(self):
1✔
105
        if self._properties is None:
×
106
            self._load()
×
107
        if any([i == "CRAY_POINTER" for i in self.attributes]):
×
NEW
108
            return self._properties[7]
×
109

110
    @property
1✔
111
    def derived(self):
1✔
112
        if self._properties is None:
×
113
            self._load()
×
NEW
114
        return namespaces.derived_ns(self._properties[8], version=self.version)
×
115

116
    @property
1✔
117
    def actual_argument(self):
1✔
118
        if self._properties is None:
×
119
            self._load()
×
NEW
120
        return procedures.arglist(self._properties[9], version=self.version)
×
121

122
    @property
1✔
123
    def namelist(self):
1✔
124
        if self._properties is None:
×
125
            self._load()
×
NEW
126
        return namelists.namelist(self._properties[10], version=self.version)
×
127

128
    @property
1✔
129
    def intrinsic(self):
1✔
130
        if self._properties is None:
×
131
            self._load()
×
NEW
132
        return int(self._properties[11])
×
133

134
    @property
1✔
135
    def intrinsic_symbol(self):
1✔
136
        if self._properties is None:
×
137
            self._load()
×
NEW
138
        if len(self._properties) > 12:
×
NEW
139
            return int(self._properties[12])
×
140

141
    @property
1✔
142
    def hash(self):
1✔
143
        if self._properties is None:
×
144
            self._load()
×
NEW
145
        if len(self._properties) > 13:
×
NEW
146
            return int(self._properties[13])
×
147

148
    @property
1✔
149
    def simd(self):
1✔
150
        if self._properties is None:
×
151
            self._load()
×
NEW
152
        if len(self._properties) >= 14:
×
NEW
153
            return simds.simd(self._properties[14], version=self.version)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc