cannect 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cannect-1.0.0/LICENSE +21 -0
- cannect-1.0.0/PKG-INFO +214 -0
- cannect-1.0.0/README.md +188 -0
- cannect-1.0.0/pyproject.toml +29 -0
- cannect-1.0.0/setup.cfg +4 -0
- cannect-1.0.0/src/cannect/__init__.py +30 -0
- cannect-1.0.0/src/cannect/api/__init__.py +0 -0
- cannect-1.0.0/src/cannect/config.py +114 -0
- cannect-1.0.0/src/cannect/core/__init__.py +0 -0
- cannect-1.0.0/src/cannect/core/ascet/__init__.py +3 -0
- cannect-1.0.0/src/cannect/core/ascet/amd.py +698 -0
- cannect-1.0.0/src/cannect/core/ascet/formula.py +33 -0
- cannect-1.0.0/src/cannect/core/ascet/oid.py +29 -0
- cannect-1.0.0/src/cannect/core/ascet/ws.py +154 -0
- cannect-1.0.0/src/cannect/core/can/__init__.py +2 -0
- cannect-1.0.0/src/cannect/core/can/ascet/__init__.py +3 -0
- cannect-1.0.0/src/cannect/core/can/ascet/_db2code.py +344 -0
- cannect-1.0.0/src/cannect/core/can/ascet/_db2elem.py +399 -0
- cannect-1.0.0/src/cannect/core/can/ascet/comdef.py +256 -0
- cannect-1.0.0/src/cannect/core/can/ascet/comrx.py +139 -0
- cannect-1.0.0/src/cannect/core/can/ascet/diag.py +691 -0
- cannect-1.0.0/src/cannect/core/can/db/__init__.py +4 -0
- cannect-1.0.0/src/cannect/core/can/db/reader.py +148 -0
- cannect-1.0.0/src/cannect/core/can/db/schema.py +269 -0
- cannect-1.0.0/src/cannect/core/can/db/specification/__init__.py +0 -0
- cannect-1.0.0/src/cannect/core/can/db/specification/message.py +230 -0
- cannect-1.0.0/src/cannect/core/can/db/specification/styles.py +81 -0
- cannect-1.0.0/src/cannect/core/can/db/specification/wrapper.py +161 -0
- cannect-1.0.0/src/cannect/core/can/db/vcs.py +104 -0
- cannect-1.0.0/src/cannect/core/can/rule.py +229 -0
- cannect-1.0.0/src/cannect/core/can/testcase/__init__.py +0 -0
- cannect-1.0.0/src/cannect/core/can/testcase/unitcase/__init__.py +0 -0
- cannect-1.0.0/src/cannect/core/can/testcase/unitcase/asw2can.py +48 -0
- cannect-1.0.0/src/cannect/core/can/testcase/unitcase/decode.py +63 -0
- cannect-1.0.0/src/cannect/core/can/testcase/unitcase/diagnosis.py +479 -0
- cannect-1.0.0/src/cannect/core/can/testcase/unitcase/encode.py +60 -0
- cannect-1.0.0/src/cannect/core/ir/__init__.py +2 -0
- cannect-1.0.0/src/cannect/core/ir/changehistory.py +310 -0
- cannect-1.0.0/src/cannect/core/ir/delivereables.py +71 -0
- cannect-1.0.0/src/cannect/core/ir/diff.py +97 -0
- cannect-1.0.0/src/cannect/core/ir/ir.py +581 -0
- cannect-1.0.0/src/cannect/core/ir/sdd.py +148 -0
- cannect-1.0.0/src/cannect/core/mdf.py +66 -0
- cannect-1.0.0/src/cannect/core/subversion.py +136 -0
- cannect-1.0.0/src/cannect/core/testcase/__init__.py +3 -0
- cannect-1.0.0/src/cannect/core/testcase/plotter.py +181 -0
- cannect-1.0.0/src/cannect/core/testcase/style.py +981 -0
- cannect-1.0.0/src/cannect/core/testcase/testcase.py +160 -0
- cannect-1.0.0/src/cannect/core/testcase/unitcase.py +227 -0
- cannect-1.0.0/src/cannect/errors.py +20 -0
- cannect-1.0.0/src/cannect/schema/__init__.py +5 -0
- cannect-1.0.0/src/cannect/schema/candb.py +226 -0
- cannect-1.0.0/src/cannect/schema/datadictionary.py +60 -0
- cannect-1.0.0/src/cannect/utils/__init__.py +3 -0
- cannect-1.0.0/src/cannect/utils/excel.py +29 -0
- cannect-1.0.0/src/cannect/utils/logger.py +81 -0
- cannect-1.0.0/src/cannect/utils/ppt.py +236 -0
- cannect-1.0.0/src/cannect/utils/tools.py +207 -0
- cannect-1.0.0/src/cannect.egg-info/PKG-INFO +214 -0
- cannect-1.0.0/src/cannect.egg-info/SOURCES.txt +61 -0
- cannect-1.0.0/src/cannect.egg-info/dependency_links.txt +1 -0
- cannect-1.0.0/src/cannect.egg-info/requires.txt +17 -0
- cannect-1.0.0/src/cannect.egg-info/top_level.txt +1 -0
cannect-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 JeHyeuk
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
cannect-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cannect
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: HYUNDAI-KEFICO EMS/ASW CONVENIENCE TOOL
|
|
5
|
+
Requires-Python: >=3.8
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: kaleido
|
|
9
|
+
Requires-Dist: lxml
|
|
10
|
+
Requires-Dist: mdfreader
|
|
11
|
+
Requires-Dist: numpy
|
|
12
|
+
Requires-Dist: pandas
|
|
13
|
+
Requires-Dist: plotly
|
|
14
|
+
Requires-Dist: psutil
|
|
15
|
+
Requires-Dist: pyautogui
|
|
16
|
+
Requires-Dist: pygetwindow
|
|
17
|
+
Requires-Dist: pyperclip
|
|
18
|
+
Requires-Dist: python-can
|
|
19
|
+
Requires-Dist: python-docx
|
|
20
|
+
Requires-Dist: python-dotenv
|
|
21
|
+
Requires-Dist: python-pptx
|
|
22
|
+
Requires-Dist: pywin32
|
|
23
|
+
Requires-Dist: tqdm
|
|
24
|
+
Requires-Dist: xlsxwriter
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# cannect
|
|
28
|
+
|
|
29
|
+
<b>HMG/EMS ASW CONVENIENCE TOOL</b><br>
|
|
30
|
+
THIS FRAMEWORK IS PURPOSE-BUILT AND WILL NOT FUNCTION IN ENVIRONMENTS WHERE THE DOMAIN IS NOT VERIFIED OR AUTHORIZED. ALL RESOURCES REFER TO THE COMPANY'S INTERNAL NETWORK(INTRANET), AND THIS FRAMEWORK PROVIDES CONVENIENCE TOOLS FOR THOSE RESOURCES. THE RESOURCES THEMSELVES ARE PROCESSED TO PREVENT REMOVAL FROM THE INTRANET, AND USERS MUST EXERCISE CAUTION. ANY ATTEMPT TO EXPORT INTERNAL RESOURCES USING THIS FRAMEWORK MAY RESULT IN DISADVANTAGES OR DISCIPLINARY ACTION IN ACCORDANCE WITH THE COMPANY'S SECURITY POLICY.<br><br>
|
|
31
|
+
<b>HMG/EMS ASW 편의 도구</b><br>
|
|
32
|
+
이 프레임워크는 특수한 목적을 위해 제작되었으며 사용하는 도메인이 검증 또는 허용되지 않은 환경에서는 작동이 불가합니다. 모든 리소스는 회사 내부망을 참조하며 본 프레임워크는 그 리소스에 대한 편의 도구를 제공합니다. 리소스 자체는 회사 내부망에서 반출되지 않도록 처리되며 사용자 또한 유의하여 사용하여야 합니다. 만일 이 프레임워크를 사용하여 내부 리소스를 반출하려는 시도를 할 경우 사내 보안 정책에 의거 불이익 또는 처벌을 받을 수 있습니다
|
|
33
|
+
|
|
34
|
+
## USER GUIDE
|
|
35
|
+
### INITIALIZE
|
|
36
|
+
|
|
37
|
+
리소스 사용을 위한 내부 서버 mount 필요하다. (매 실행 시 상위에 삽입되어야 하는 코드)
|
|
38
|
+
```commandline
|
|
39
|
+
from cannect import mount
|
|
40
|
+
|
|
41
|
+
mount(r"D:\SVN") # 사용자 Local의 SVN 최상위 경로를 입력
|
|
42
|
+
# 또는
|
|
43
|
+
mount() # 미입력 시, 내부 서버에 있는 SVN 경로를 사용(성능 저하 모드 및 사용자간 충돌 가능성 내포)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 1. ASCET MODULE(AMD)
|
|
47
|
+
#### 1.1. Ascet.Amd
|
|
48
|
+
▲*.main.amd ▲*.data.amd ▲*.implementation.amd ▲*.specification.amd 에 대한 Ascet.AmdIO의 Wrapper 클래스이다.
|
|
49
|
+
|
|
50
|
+
```commandline
|
|
51
|
+
from cannect import Ascet
|
|
52
|
+
|
|
53
|
+
# READ *.amd
|
|
54
|
+
# INSTANCE {amd} CONTAINS FOLLOWING ATTRIBUTES
|
|
55
|
+
# .name: [str] NAME OF MODULE
|
|
56
|
+
# .main: [<Ascet.AmdIO>] Ascet.AmdIO({*.main.amd})
|
|
57
|
+
# .impl: [<Ascet.AmdIO>] Ascet.AmdIO({*.implementation.amd})
|
|
58
|
+
# .data: [<Ascet.AmdIO>] Ascet.AmdIO({*.data.amd})
|
|
59
|
+
# .spec: [<Ascet.AmdIO>] Ascet.AmdIO({*.specification.amd})
|
|
60
|
+
|
|
61
|
+
src = # {*.main.amd} 또는 {*.zip} (모델 전체 경로)
|
|
62
|
+
amd = Ascet.Amd(src)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### 1.2. Ascet.AmdIO
|
|
66
|
+
개별 *.amd 파일에 대한 IO 클래스이다.
|
|
67
|
+
|
|
68
|
+
##### 1.2.1. <i>.root</i>
|
|
69
|
+
```commandline
|
|
70
|
+
main = amd.main
|
|
71
|
+
print(main.root)
|
|
72
|
+
```
|
|
73
|
+
```commandline
|
|
74
|
+
결과
|
|
75
|
+
name ComDef_HEV
|
|
76
|
+
nameSpace /HNB_GASOLINE/_29_CommunicationVehicle/Standar...
|
|
77
|
+
OID _040g00002u801q070g7g807i9bh0a
|
|
78
|
+
timeStamp 2025-10-01T06:48:17
|
|
79
|
+
componentType ASCET_Module
|
|
80
|
+
specificationType CCode
|
|
81
|
+
defaultProjectName ComDef_HEV_DEFAULT
|
|
82
|
+
defaultProjectOID _040g1j9410g01q87180hrfqf5892o
|
|
83
|
+
path D:\ETASData\ASCET6.1\Export\ComDef_HEV\ComDef_...
|
|
84
|
+
file ComDef_HEV.main.amd
|
|
85
|
+
model ComDef_HEV
|
|
86
|
+
type ComponentMain
|
|
87
|
+
dtype: object
|
|
88
|
+
```
|
|
89
|
+
##### 1.2.2. <i>.digestValue</i> & <i>.signatureValue</i>
|
|
90
|
+
```commandline
|
|
91
|
+
print(main.digestValue)
|
|
92
|
+
print("---")
|
|
93
|
+
print(main.signatureValue)
|
|
94
|
+
```
|
|
95
|
+
```commandline
|
|
96
|
+
결과
|
|
97
|
+
P4vSzV9B/VN5kcuO0ICAfxWO2vo=
|
|
98
|
+
---
|
|
99
|
+
bB8aNE2ULCnQ+BB5y5HVHnwsnRZUzbCX1cqPHZ2hik1e3CZ4aMXmeZezMZl2nrXd
|
|
100
|
+
dieNjpiHg2iTOdQurIad4mLu0ixv2UVLa7FC0SgkBarFV7VgAYAXq8x7xd/KrEaA
|
|
101
|
+
EAeJmWb+uKW5hkQwrQ7bHe3BuNOoPmX1uIFZv7aKqmZDVdypC+0C3q1CbbeMjfWU
|
|
102
|
+
xwMQ8jsUjXlJCjdtpyBhPlS8O/dJ5tm7mnNTrSk8wp+nSbk17E5g9xy9SmyC3CUZ
|
|
103
|
+
0I7XDtbazFkOQKSkBgwpmEv0qkdeeQJ/JuSePXFi66E962zf+CqQ4PTZX2e9lW1u
|
|
104
|
+
k8jWuLYv6t5ckBo/Tn6hoQ==
|
|
105
|
+
```
|
|
106
|
+
##### 1.2.3. <i>.dataframe(tag:str, depth:str)</i>
|
|
107
|
+
tag의 Attribute를 데이터프레임으로 변환한다.<br>
|
|
108
|
+
@param tag: [str] 변환하고자 하는 태그 이름 e.g. "Element", "MethodSignature"<br>
|
|
109
|
+
@param depth: [str] 선택한 태그 하위 태그 적용 깊이 e.g. "recursive"
|
|
110
|
+
|
|
111
|
+
```commandline
|
|
112
|
+
print(main.dataframe('Element', depth='recursive'))
|
|
113
|
+
print('---')
|
|
114
|
+
print(main.dataframe('MethodSignature', depth='tag'))
|
|
115
|
+
```
|
|
116
|
+
```commandline
|
|
117
|
+
결과
|
|
118
|
+
name OID ignore comment modelType basicModelType unit kind scope virtual dependent volatile calibrated set get read write reference maxSizeX componentName componentID model
|
|
119
|
+
0 ABS_ActvSta_Can _040g1ngg00p91o07186g9qpv1tv0a false ABS_ActiveStatus ##2G##ESC - TCS11 - ABS_ACT scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
120
|
+
1 ABS_DfctvSta_Can _040g1ngg01a01no71c8g7rr1uh8ga false ABS_DefectiveStatus ##2G##ESC - TCS11 - ABS_DEF scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
121
|
+
2 ABS_DiagSta_Can _040g1ngg00p91o07182g9bnv64o0e false ABS_DiagnosticStatus ##2G##ESC - TCS11 - ABS_DIAG scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
122
|
+
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
|
|
123
|
+
1172 xEV_TotGridEnergy_Can _040g1ngg01a01og70g8g5pjg6r3lc false Total grid energy into the battery scalar cont message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
124
|
+
1173 CRC16bit_Calculator _040g1ngg00p91og70gbg6kpeec400 false CRC 16bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708a0du6locrr2 ComDef_HEV
|
|
125
|
+
1174 CRC8bit_Calculator _040g1ngg01a01o8704fg42b3o0102 false CRC 8bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708cg4rviuqor2 ComDef_HEV
|
|
126
|
+
|
|
127
|
+
[1175 rows x 22 columns]
|
|
128
|
+
---
|
|
129
|
+
name OID public default defaultMethod hidden availableForOS model
|
|
130
|
+
0 _ABS_ESC_01_10ms _040g1ngg00p91o870kb0a7d8r4524 true false true false true ComDef_HEV
|
|
131
|
+
1 _ACU_02_00ms _040g030000001mo7109g4avsmjn5i true false false false true ComDef_HEV
|
|
132
|
+
2 _BCM_12_200ms _040g030000001mo710eg5p0lpf73a true false false false true ComDef_HEV
|
|
133
|
+
.. ... ... ... ... ... ... ... ...
|
|
134
|
+
62 _SMK_02_200ms _040g1j9410g01q071g90p9vm1m4g2 true false false false true ComDef_HEV
|
|
135
|
+
63 _TMU_01_200ms _040g1ngg00p91o871cbg8vcrhmigk true false false false true ComDef_HEV
|
|
136
|
+
64 _WAKEUP_01_00ms _040g030000001mo7109g4a84q0t5g true false false false true ComDef_HEV
|
|
137
|
+
|
|
138
|
+
[65 rows x 8 columns]
|
|
139
|
+
```
|
|
140
|
+
##### 1.2.4. <i>.datadict(tag:str, depth:str)</i>
|
|
141
|
+
1.2.3.절의 dictionary 형태 (예제 없음)
|
|
142
|
+
|
|
143
|
+
##### 1.2.5. <i>.export(path:str)</i>
|
|
144
|
+
파일로 저장
|
|
145
|
+
```commandline
|
|
146
|
+
main.export(r'./')
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
##### 1.2.6. 기타 기능
|
|
150
|
+
```commandline
|
|
151
|
+
# .export_to_downloads()
|
|
152
|
+
# 1.2.5.절의 저장 경로를 C:\User\Downloads 로 지정
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```commandline
|
|
156
|
+
# .findParent(*elems:Element)
|
|
157
|
+
# Element의 부모 Element 를 리턴
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```commandline
|
|
161
|
+
# .serialize()
|
|
162
|
+
# export를 위한 문자열을 리턴
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```commandline
|
|
166
|
+
# .strictFind(tag:str, **kwargs)
|
|
167
|
+
# 태그와 Attribute가 kwargs의 조건을 만족하는 태그를 리턴
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```commandline
|
|
171
|
+
# .replace(tag:str, attr_name:str, attr_value:dict)
|
|
172
|
+
# @tag와 @attr_name에 부합하는 태그를 찾은 뒤 attr_value.key값을 attr_value.value로 변경
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### 1.3. WorkspaceIO
|
|
176
|
+
워크스페이스 또는 SVN 전체 프로젝트 접근
|
|
177
|
+
|
|
178
|
+
### 2. CAN
|
|
179
|
+
#### 2.1. Database
|
|
180
|
+
```commandline
|
|
181
|
+
from cannect import DataBaseCAN
|
|
182
|
+
|
|
183
|
+
db = DataBaseCAN.Reader(src='')
|
|
184
|
+
# 특정 프로젝트를 위한 DB를 사용할 경우 json 파일 형식의 데이터를 @src에 사용
|
|
185
|
+
# 미적용 시 SVN 내 최신 DB 사용
|
|
186
|
+
print(db)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
```commandline
|
|
190
|
+
결과
|
|
191
|
+
ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
|
|
192
|
+
0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
|
|
193
|
+
1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
|
|
194
|
+
2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp
|
|
195
|
+
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
|
|
196
|
+
1791 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_Alive 2 54 LDC IG1 unsigned 0x0 0.0 0.0 0.0 3.0 No 0 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
|
|
197
|
+
1792 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_stDesModDcdc 4 56 LDC IG1 0x0:Init (wake-up)/0x5:Idle / Neutral/0x8:Forw... unsigned 0x0 0.0 0.0 0.0 15.0 No 0 Desired LDC operation mode by EMS 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 Ldc_stDesMod
|
|
198
|
+
1793 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_ChkSum 4 60 LDC IG1 0x0:No error/0x1:Engine speed sensor defective unsigned 0x0 0.0 0.0 0.0 15.0 No 0 "This signal indicates Checksum for robustness... 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
|
|
199
|
+
|
|
200
|
+
[1794 rows x 39 columns]
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
2.1.1. Database/Reader - 속성
|
|
204
|
+
```commandline
|
|
205
|
+
print(db.source) # json 파일 전체 경로 / pd.DataFrame 입력 시 "direct"
|
|
206
|
+
print(db.traceability) # 원본 DB 이름 (Excel 파일명)
|
|
207
|
+
print(db.revision) # 원본 DB의 SVN Revision 및 로컬 재생성 횟수
|
|
208
|
+
```
|
|
209
|
+
```commandline
|
|
210
|
+
결과
|
|
211
|
+
E:\SVN\dev.bsw\ ...{보안상 생략}... \dev\자체제어기_KEFICO-EMS_CANFD_r21713@03.json
|
|
212
|
+
자체제어기_KEFICO-EMS_CANFD
|
|
213
|
+
r21713@03
|
|
214
|
+
```
|
cannect-1.0.0/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# cannect
|
|
2
|
+
|
|
3
|
+
<b>HMG/EMS ASW CONVENIENCE TOOL</b><br>
|
|
4
|
+
THIS FRAMEWORK IS PURPOSE-BUILT AND WILL NOT FUNCTION IN ENVIRONMENTS WHERE THE DOMAIN IS NOT VERIFIED OR AUTHORIZED. ALL RESOURCES REFER TO THE COMPANY'S INTERNAL NETWORK(INTRANET), AND THIS FRAMEWORK PROVIDES CONVENIENCE TOOLS FOR THOSE RESOURCES. THE RESOURCES THEMSELVES ARE PROCESSED TO PREVENT REMOVAL FROM THE INTRANET, AND USERS MUST EXERCISE CAUTION. ANY ATTEMPT TO EXPORT INTERNAL RESOURCES USING THIS FRAMEWORK MAY RESULT IN DISADVANTAGES OR DISCIPLINARY ACTION IN ACCORDANCE WITH THE COMPANY'S SECURITY POLICY.<br><br>
|
|
5
|
+
<b>HMG/EMS ASW 편의 도구</b><br>
|
|
6
|
+
이 프레임워크는 특수한 목적을 위해 제작되었으며 사용하는 도메인이 검증 또는 허용되지 않은 환경에서는 작동이 불가합니다. 모든 리소스는 회사 내부망을 참조하며 본 프레임워크는 그 리소스에 대한 편의 도구를 제공합니다. 리소스 자체는 회사 내부망에서 반출되지 않도록 처리되며 사용자 또한 유의하여 사용하여야 합니다. 만일 이 프레임워크를 사용하여 내부 리소스를 반출하려는 시도를 할 경우 사내 보안 정책에 의거 불이익 또는 처벌을 받을 수 있습니다
|
|
7
|
+
|
|
8
|
+
## USER GUIDE
|
|
9
|
+
### INITIALIZE
|
|
10
|
+
|
|
11
|
+
리소스 사용을 위한 내부 서버 mount 필요하다. (매 실행 시 상위에 삽입되어야 하는 코드)
|
|
12
|
+
```commandline
|
|
13
|
+
from cannect import mount
|
|
14
|
+
|
|
15
|
+
mount(r"D:\SVN") # 사용자 Local의 SVN 최상위 경로를 입력
|
|
16
|
+
# 또는
|
|
17
|
+
mount() # 미입력 시, 내부 서버에 있는 SVN 경로를 사용(성능 저하 모드 및 사용자간 충돌 가능성 내포)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 1. ASCET MODULE(AMD)
|
|
21
|
+
#### 1.1. Ascet.Amd
|
|
22
|
+
▲*.main.amd ▲*.data.amd ▲*.implementation.amd ▲*.specification.amd 에 대한 Ascet.AmdIO의 Wrapper 클래스이다.
|
|
23
|
+
|
|
24
|
+
```commandline
|
|
25
|
+
from cannect import Ascet
|
|
26
|
+
|
|
27
|
+
# READ *.amd
|
|
28
|
+
# INSTANCE {amd} CONTAINS FOLLOWING ATTRIBUTES
|
|
29
|
+
# .name: [str] NAME OF MODULE
|
|
30
|
+
# .main: [<Ascet.AmdIO>] Ascet.AmdIO({*.main.amd})
|
|
31
|
+
# .impl: [<Ascet.AmdIO>] Ascet.AmdIO({*.implementation.amd})
|
|
32
|
+
# .data: [<Ascet.AmdIO>] Ascet.AmdIO({*.data.amd})
|
|
33
|
+
# .spec: [<Ascet.AmdIO>] Ascet.AmdIO({*.specification.amd})
|
|
34
|
+
|
|
35
|
+
src = # {*.main.amd} 또는 {*.zip} (모델 전체 경로)
|
|
36
|
+
amd = Ascet.Amd(src)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
#### 1.2. Ascet.AmdIO
|
|
40
|
+
개별 *.amd 파일에 대한 IO 클래스이다.
|
|
41
|
+
|
|
42
|
+
##### 1.2.1. <i>.root</i>
|
|
43
|
+
```commandline
|
|
44
|
+
main = amd.main
|
|
45
|
+
print(main.root)
|
|
46
|
+
```
|
|
47
|
+
```commandline
|
|
48
|
+
결과
|
|
49
|
+
name ComDef_HEV
|
|
50
|
+
nameSpace /HNB_GASOLINE/_29_CommunicationVehicle/Standar...
|
|
51
|
+
OID _040g00002u801q070g7g807i9bh0a
|
|
52
|
+
timeStamp 2025-10-01T06:48:17
|
|
53
|
+
componentType ASCET_Module
|
|
54
|
+
specificationType CCode
|
|
55
|
+
defaultProjectName ComDef_HEV_DEFAULT
|
|
56
|
+
defaultProjectOID _040g1j9410g01q87180hrfqf5892o
|
|
57
|
+
path D:\ETASData\ASCET6.1\Export\ComDef_HEV\ComDef_...
|
|
58
|
+
file ComDef_HEV.main.amd
|
|
59
|
+
model ComDef_HEV
|
|
60
|
+
type ComponentMain
|
|
61
|
+
dtype: object
|
|
62
|
+
```
|
|
63
|
+
##### 1.2.2. <i>.digestValue</i> & <i>.signatureValue</i>
|
|
64
|
+
```commandline
|
|
65
|
+
print(main.digestValue)
|
|
66
|
+
print("---")
|
|
67
|
+
print(main.signatureValue)
|
|
68
|
+
```
|
|
69
|
+
```commandline
|
|
70
|
+
결과
|
|
71
|
+
P4vSzV9B/VN5kcuO0ICAfxWO2vo=
|
|
72
|
+
---
|
|
73
|
+
bB8aNE2ULCnQ+BB5y5HVHnwsnRZUzbCX1cqPHZ2hik1e3CZ4aMXmeZezMZl2nrXd
|
|
74
|
+
dieNjpiHg2iTOdQurIad4mLu0ixv2UVLa7FC0SgkBarFV7VgAYAXq8x7xd/KrEaA
|
|
75
|
+
EAeJmWb+uKW5hkQwrQ7bHe3BuNOoPmX1uIFZv7aKqmZDVdypC+0C3q1CbbeMjfWU
|
|
76
|
+
xwMQ8jsUjXlJCjdtpyBhPlS8O/dJ5tm7mnNTrSk8wp+nSbk17E5g9xy9SmyC3CUZ
|
|
77
|
+
0I7XDtbazFkOQKSkBgwpmEv0qkdeeQJ/JuSePXFi66E962zf+CqQ4PTZX2e9lW1u
|
|
78
|
+
k8jWuLYv6t5ckBo/Tn6hoQ==
|
|
79
|
+
```
|
|
80
|
+
##### 1.2.3. <i>.dataframe(tag:str, depth:str)</i>
|
|
81
|
+
tag의 Attribute를 데이터프레임으로 변환한다.<br>
|
|
82
|
+
@param tag: [str] 변환하고자 하는 태그 이름 e.g. "Element", "MethodSignature"<br>
|
|
83
|
+
@param depth: [str] 선택한 태그 하위 태그 적용 깊이 e.g. "recursive"
|
|
84
|
+
|
|
85
|
+
```commandline
|
|
86
|
+
print(main.dataframe('Element', depth='recursive'))
|
|
87
|
+
print('---')
|
|
88
|
+
print(main.dataframe('MethodSignature', depth='tag'))
|
|
89
|
+
```
|
|
90
|
+
```commandline
|
|
91
|
+
결과
|
|
92
|
+
name OID ignore comment modelType basicModelType unit kind scope virtual dependent volatile calibrated set get read write reference maxSizeX componentName componentID model
|
|
93
|
+
0 ABS_ActvSta_Can _040g1ngg00p91o07186g9qpv1tv0a false ABS_ActiveStatus ##2G##ESC - TCS11 - ABS_ACT scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
94
|
+
1 ABS_DfctvSta_Can _040g1ngg01a01no71c8g7rr1uh8ga false ABS_DefectiveStatus ##2G##ESC - TCS11 - ABS_DEF scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
95
|
+
2 ABS_DiagSta_Can _040g1ngg00p91o07182g9bnv64o0e false ABS_DiagnosticStatus ##2G##ESC - TCS11 - ABS_DIAG scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
96
|
+
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
|
|
97
|
+
1172 xEV_TotGridEnergy_Can _040g1ngg01a01og70g8g5pjg6r3lc false Total grid energy into the battery scalar cont message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
|
|
98
|
+
1173 CRC16bit_Calculator _040g1ngg00p91og70gbg6kpeec400 false CRC 16bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708a0du6locrr2 ComDef_HEV
|
|
99
|
+
1174 CRC8bit_Calculator _040g1ngg01a01o8704fg42b3o0102 false CRC 8bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708cg4rviuqor2 ComDef_HEV
|
|
100
|
+
|
|
101
|
+
[1175 rows x 22 columns]
|
|
102
|
+
---
|
|
103
|
+
name OID public default defaultMethod hidden availableForOS model
|
|
104
|
+
0 _ABS_ESC_01_10ms _040g1ngg00p91o870kb0a7d8r4524 true false true false true ComDef_HEV
|
|
105
|
+
1 _ACU_02_00ms _040g030000001mo7109g4avsmjn5i true false false false true ComDef_HEV
|
|
106
|
+
2 _BCM_12_200ms _040g030000001mo710eg5p0lpf73a true false false false true ComDef_HEV
|
|
107
|
+
.. ... ... ... ... ... ... ... ...
|
|
108
|
+
62 _SMK_02_200ms _040g1j9410g01q071g90p9vm1m4g2 true false false false true ComDef_HEV
|
|
109
|
+
63 _TMU_01_200ms _040g1ngg00p91o871cbg8vcrhmigk true false false false true ComDef_HEV
|
|
110
|
+
64 _WAKEUP_01_00ms _040g030000001mo7109g4a84q0t5g true false false false true ComDef_HEV
|
|
111
|
+
|
|
112
|
+
[65 rows x 8 columns]
|
|
113
|
+
```
|
|
114
|
+
##### 1.2.4. <i>.datadict(tag:str, depth:str)</i>
|
|
115
|
+
1.2.3.절의 dictionary 형태 (예제 없음)
|
|
116
|
+
|
|
117
|
+
##### 1.2.5. <i>.export(path:str)</i>
|
|
118
|
+
파일로 저장
|
|
119
|
+
```commandline
|
|
120
|
+
main.export(r'./')
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
##### 1.2.6. 기타 기능
|
|
124
|
+
```commandline
|
|
125
|
+
# .export_to_downloads()
|
|
126
|
+
# 1.2.5.절의 저장 경로를 C:\User\Downloads 로 지정
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
```commandline
|
|
130
|
+
# .findParent(*elems:Element)
|
|
131
|
+
# Element의 부모 Element 를 리턴
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```commandline
|
|
135
|
+
# .serialize()
|
|
136
|
+
# export를 위한 문자열을 리턴
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```commandline
|
|
140
|
+
# .strictFind(tag:str, **kwargs)
|
|
141
|
+
# 태그와 Attribute가 kwargs의 조건을 만족하는 태그를 리턴
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```commandline
|
|
145
|
+
# .replace(tag:str, attr_name:str, attr_value:dict)
|
|
146
|
+
# @tag와 @attr_name에 부합하는 태그를 찾은 뒤 attr_value.key값을 attr_value.value로 변경
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### 1.3. WorkspaceIO
|
|
150
|
+
워크스페이스 또는 SVN 전체 프로젝트 접근
|
|
151
|
+
|
|
152
|
+
### 2. CAN
|
|
153
|
+
#### 2.1. Database
|
|
154
|
+
```commandline
|
|
155
|
+
from cannect import DataBaseCAN
|
|
156
|
+
|
|
157
|
+
db = DataBaseCAN.Reader(src='')
|
|
158
|
+
# 특정 프로젝트를 위한 DB를 사용할 경우 json 파일 형식의 데이터를 @src에 사용
|
|
159
|
+
# 미적용 시 SVN 내 최신 DB 사용
|
|
160
|
+
print(db)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```commandline
|
|
164
|
+
결과
|
|
165
|
+
ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
|
|
166
|
+
0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
|
|
167
|
+
1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
|
|
168
|
+
2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp
|
|
169
|
+
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
|
|
170
|
+
1791 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_Alive 2 54 LDC IG1 unsigned 0x0 0.0 0.0 0.0 3.0 No 0 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
|
|
171
|
+
1792 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_stDesModDcdc 4 56 LDC IG1 0x0:Init (wake-up)/0x5:Idle / Neutral/0x8:Forw... unsigned 0x0 0.0 0.0 0.0 15.0 No 0 Desired LDC operation mode by EMS 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 Ldc_stDesMod
|
|
172
|
+
1793 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_ChkSum 4 60 LDC IG1 0x0:No error/0x1:Engine speed sensor defective unsigned 0x0 0.0 0.0 0.0 15.0 No 0 "This signal indicates Checksum for robustness... 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
|
|
173
|
+
|
|
174
|
+
[1794 rows x 39 columns]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
2.1.1. Database/Reader - 속성
|
|
178
|
+
```commandline
|
|
179
|
+
print(db.source) # json 파일 전체 경로 / pd.DataFrame 입력 시 "direct"
|
|
180
|
+
print(db.traceability) # 원본 DB 이름 (Excel 파일명)
|
|
181
|
+
print(db.revision) # 원본 DB의 SVN Revision 및 로컬 재생성 횟수
|
|
182
|
+
```
|
|
183
|
+
```commandline
|
|
184
|
+
결과
|
|
185
|
+
E:\SVN\dev.bsw\ ...{보안상 생략}... \dev\자체제어기_KEFICO-EMS_CANFD_r21713@03.json
|
|
186
|
+
자체제어기_KEFICO-EMS_CANFD
|
|
187
|
+
r21713@03
|
|
188
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "cannect"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "HYUNDAI-KEFICO EMS/ASW CONVENIENCE TOOL"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
dependencies = [
|
|
12
|
+
"kaleido",
|
|
13
|
+
"lxml",
|
|
14
|
+
"mdfreader",
|
|
15
|
+
"numpy",
|
|
16
|
+
"pandas",
|
|
17
|
+
"plotly",
|
|
18
|
+
"psutil",
|
|
19
|
+
"pyautogui",
|
|
20
|
+
"pygetwindow",
|
|
21
|
+
"pyperclip",
|
|
22
|
+
"python-can",
|
|
23
|
+
"python-docx",
|
|
24
|
+
"python-dotenv",
|
|
25
|
+
"python-pptx",
|
|
26
|
+
"pywin32",
|
|
27
|
+
"tqdm",
|
|
28
|
+
"xlsxwriter"
|
|
29
|
+
]
|
cannect-1.0.0/setup.cfg
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
__all__ = [
|
|
2
|
+
|
|
3
|
+
# .core
|
|
4
|
+
"Ascet",
|
|
5
|
+
"AscetCAN",
|
|
6
|
+
"DataBaseCAN",
|
|
7
|
+
"IR",
|
|
8
|
+
"Subversion",
|
|
9
|
+
|
|
10
|
+
# .utils
|
|
11
|
+
"ComExcel",
|
|
12
|
+
"Logger",
|
|
13
|
+
"Tools",
|
|
14
|
+
|
|
15
|
+
# .schema
|
|
16
|
+
"DataDictionary",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
from cannect.config import mount
|
|
20
|
+
from cannect.core import ascet as Ascet
|
|
21
|
+
from cannect.core.can import AscetCAN, DataBaseCAN
|
|
22
|
+
from cannect.core.subversion import Subversion
|
|
23
|
+
from cannect.core.testcase import TestCase, UnitTestCase, Plot
|
|
24
|
+
from cannect.core.ir import IR
|
|
25
|
+
from cannect.core.ir.changehistory import ChangeHistoryManager
|
|
26
|
+
|
|
27
|
+
from cannect.schema import DataDictionary
|
|
28
|
+
|
|
29
|
+
from cannect.utils import ComExcel, Logger
|
|
30
|
+
from cannect.utils import tools as Tools
|
|
File without changes
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
from cannect.schema.datadictionary import DataDictionary
|
|
2
|
+
from cannect.errors import InternalServerError
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
import os, psutil
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
__namespace__ = {
|
|
9
|
+
"21301106": "김남균",
|
|
10
|
+
"22011005": "강지원",
|
|
11
|
+
"22011029": "김병욱",
|
|
12
|
+
"22011032": "김성령",
|
|
13
|
+
"22011033": "김성호",
|
|
14
|
+
"22011057": "김한솔",
|
|
15
|
+
"22011072": "문병헌",
|
|
16
|
+
"22011085": "박원진",
|
|
17
|
+
"22011110": "안성웅",
|
|
18
|
+
"22011115": "양웅",
|
|
19
|
+
"22011133": "이동훈",
|
|
20
|
+
"22403040": "이승욱",
|
|
21
|
+
"22011148": "이제혁",
|
|
22
|
+
"22011154": "이진노",
|
|
23
|
+
"22011160": "임동훈",
|
|
24
|
+
"22403041": "조규나",
|
|
25
|
+
"22011187": "조재형",
|
|
26
|
+
"22011206": "한대성"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
E = ENV = env = DataDictionary(**os.environ)
|
|
31
|
+
E.COMPANY = "HYUNDAI KEFICO Co.,Ltd."
|
|
32
|
+
E.COPYRIGHT = f'Copyright {E.COMPANY} 2020-{datetime.now().year}. All rights reserved.'
|
|
33
|
+
E.DIVISION = "ELECTRIFICATION PT CONTROL TEAM 1"
|
|
34
|
+
E.KOREANAME = __namespace__.get(E.USERNAME, '알 수 없음')
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def mount(svn_path=None):
|
|
38
|
+
"""
|
|
39
|
+
cannect 사용자 초기 환경 설정(Configuration)
|
|
40
|
+
- KEFICO 도메인이 아닌 경우 오류 표출
|
|
41
|
+
- KEFICO 서버 접근 권한 및 SVN 권한 확인
|
|
42
|
+
- 전역 환경 변수 설정
|
|
43
|
+
:return:
|
|
44
|
+
"""
|
|
45
|
+
global E
|
|
46
|
+
|
|
47
|
+
if svn_path is None:
|
|
48
|
+
svn_path = Path(r"\\kefico\keti\ENT\SDT\SVN")
|
|
49
|
+
else:
|
|
50
|
+
svn_path = Path(svn_path)
|
|
51
|
+
|
|
52
|
+
# 운영 환경; KEFICO 도메인 확인
|
|
53
|
+
if not (
|
|
54
|
+
E.get('USERDNSDOMAIN', '') == 'KEFICO.GLOBAL' and
|
|
55
|
+
E.get('USERDOMAIN', '') == 'HKEFICO' and
|
|
56
|
+
E.get('USERDOMAIN_ROAMINGPROFILE', '') == 'HKEFICO'
|
|
57
|
+
):
|
|
58
|
+
raise PermissionError(f'USER: {e.get("USERNAME")} NOT AUTHORIZED')
|
|
59
|
+
|
|
60
|
+
# 전역 환경 변수 설정
|
|
61
|
+
E.DOWNLOADS = E.USERPROFILE / 'Downloads'
|
|
62
|
+
E.SVN = svn_path
|
|
63
|
+
E.SVN_CAN = svn_path / 'dev.bsw/hkmc.ems.bsw.docs/branches/HEPG_Ver1p1/11_ProjectManagement'
|
|
64
|
+
E.SVN_CANDB = E.SVN_CAN / 'CAN_Database'
|
|
65
|
+
E.SVN_CONF = svn_path / 'GSL_Build/1_AswCode_SVN/PostAppSW/0_XML/DEM_Rename'
|
|
66
|
+
E.SVN_HISTORY = svn_path / 'GSL_Release/4_SW변경이력'
|
|
67
|
+
E.SVN_IR = svn_path / 'GSL_Build/8_IntegrationRequest'
|
|
68
|
+
E.SVN_MODEL = svn_path / 'model/ascet/trunk'
|
|
69
|
+
E.SVN_UNECE = svn_path / 'Autron_CoWork/사이버보안/Module_Test_Results'
|
|
70
|
+
E.SVN_SDD = svn_path / 'GSL_Build/7_Notes'
|
|
71
|
+
for p in psutil.disk_partitions():
|
|
72
|
+
if (Path(p.device) / "ETASData").exists():
|
|
73
|
+
E.ETAS = Path(p.device) / "ETASData"
|
|
74
|
+
if (E.ETAS / "ASCET6.1").exists():
|
|
75
|
+
E.ASCET = Path(E.ETAS / "ASCET6.1")
|
|
76
|
+
|
|
77
|
+
# 접근 권한 1차 확인; KEFICO 서버 권한 확인
|
|
78
|
+
for key, path in E.items():
|
|
79
|
+
if key.startswith("SVN"):
|
|
80
|
+
if not path.exists():
|
|
81
|
+
raise InternalServerError(f"{{{path}}} NOT EXIST IN {E.COMPANY} SERVER")
|
|
82
|
+
|
|
83
|
+
# 접근 권한 2차 확인; SVN 권한 확인
|
|
84
|
+
for path in [
|
|
85
|
+
E.SVN_CAN,
|
|
86
|
+
E.SVN_CONF,
|
|
87
|
+
E.SVN_HISTORY,
|
|
88
|
+
E.SVN_IR,
|
|
89
|
+
E.SVN_MODEL,
|
|
90
|
+
E.SVN_UNECE,
|
|
91
|
+
E.SVN_SDD
|
|
92
|
+
]:
|
|
93
|
+
if not (path / ".svn").is_dir():
|
|
94
|
+
raise InternalServerError(f"{{{path}}} IS NOT LINKED TO SVN")
|
|
95
|
+
return
|
|
96
|
+
|
|
97
|
+
# Initialize
|
|
98
|
+
if E.USERNAME == '22011148':
|
|
99
|
+
mount(svn_path=Path(r"E:\SVN"))
|
|
100
|
+
else:
|
|
101
|
+
mount()
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
if __name__ == "__main__":
|
|
105
|
+
print(env.KOREANAME)
|
|
106
|
+
print(env.TEMP)
|
|
107
|
+
print(env.USERPROFILE / 'Downloads')
|
|
108
|
+
print(env.SVN)
|
|
109
|
+
print(env.SVN_CAN)
|
|
110
|
+
print(env.SVN_CANDB)
|
|
111
|
+
print(env.SVN_SDD)
|
|
112
|
+
print(env.ETAS)
|
|
113
|
+
print(env.ASCET)
|
|
114
|
+
# print(env)
|
|
File without changes
|