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

rjfarmer / gfModParser / 14957016012

11 May 2025 03:02PM UTC coverage: 82.585% (+1.7%) from 80.919%
14957016012

push

github

rjfarmer
Add uncompressed single test

607 of 735 relevant lines covered (82.59%)

0.83 hits per line

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

64.52
/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[6]
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✔
59
        if self._properties is None:
×
60
            self._load()
×
61
        return self._comp_access
×
62

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

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

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

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

87
    @property
1✔
88
    def parameter(self):
1✔
89
        if self._properties is None:
1✔
90
            self._load()
1✔
91
        if self._parameter is not None:
1✔
92
            return expressions.Expression(self._parameter, version=self.version)
1✔
93

94
    @property
1✔
95
    def array_spec(self):
1✔
96
        if self._properties is None:
1✔
97
            self._load()
1✔
98
        return arrays.arrayspec(self._properties[6], version=self.version)
1✔
99

100
    @property
1✔
101
    def symbol_reference(self):
1✔
102
        if self._properties is None:
×
103
            self._load()
×
104
        if not any([i == "CRAY_POINTER" for i in self.attributes]):
×
105
            return int(self._properties[7])
×
106

107
    @property
1✔
108
    def cray_pointer_reference(self):
1✔
109
        if self._properties is None:
×
110
            self._load()
×
111
        if any([i == "CRAY_POINTER" for i in self.attributes]):
×
112
            return self._properties[7]
×
113

114
    @property
1✔
115
    def derived(self):
1✔
116
        if self._properties is None:
×
117
            self._load()
×
118
        return namespaces.derived_ns(self._properties[8], version=self.version)
×
119

120
    @property
1✔
121
    def actual_argument(self):
1✔
122
        if self._properties is None:
×
123
            self._load()
×
124
        return procedures.arglist(self._properties[9], version=self.version)
×
125

126
    @property
1✔
127
    def namelist(self):
1✔
128
        if self._properties is None:
×
129
            self._load()
×
130
        return namelists.namelist(self._properties[10], version=self.version)
×
131

132
    @property
1✔
133
    def intrinsic(self):
1✔
134
        if self._properties is None:
×
135
            self._load()
×
136
        return int(self._properties[11])
×
137

138
    @property
1✔
139
    def intrinsic_symbol(self):
1✔
140
        if self._properties is None:
×
141
            self._load()
×
142
        if len(self._properties) > 12:
×
143
            return int(self._properties[12])
×
144

145
    @property
1✔
146
    def hash(self):
1✔
147
        if self._properties is None:
×
148
            self._load()
×
149
        if len(self._properties) > 13:
×
150
            return int(self._properties[13])
×
151

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

© 2026 Coveralls, Inc