Skip to content

Commit ee9848c

Browse files
committed
Merge branch 'dev' into ms/#1362-add-support-for-custom-loadprofiles
# Conflicts: # CHANGELOG.md
2 parents 46250cf + dbf6cd9 commit ee9848c

File tree

14 files changed

+179
-412
lines changed

14 files changed

+179
-412
lines changed

.github/workflows/ci.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,13 @@ jobs:
8888
env:
8989
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.MAVENCENTRAL_SIGNINGKEY }}
9090
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.MAVENCENTRAL_SIGNINGPASS }}
91-
ORG_GRADLE_PROJECT_user: ${{ secrets.MAVENCENTRAL_USER }}
92-
ORG_GRADLE_PROJECT_password: ${{ secrets.MAVENCENTRAL_PASS }}
91+
ORG_GRADLE_PROJECT_mavenCentralUser: ${{ github.actor == 'sebastian-peter' && secrets.MAVENCENTRAL_USER ||
92+
github.actor == 'danielfeismann' && secrets.MAVENCENTRAL_DANIEL_USER }}
93+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ github.actor == 'sebastian-peter' && secrets.MAVENCENTRAL_PASS ||
94+
github.actor == 'danielfeismann' && secrets.MAVENCENTRAL_DANIEL_PASS }}
95+
9396
run: |
97+
echo "Using MavenCentral Token of GitHub Actor: ${{ github.actor }}"
9498
if [ "${GITHUB_REF}" == "refs/heads/main" ]; then
9599
currentVersion=$(./gradlew -q currentVersion)
96100
else
@@ -100,3 +104,18 @@ jobs:
100104
echo "currentVersion=$currentVersion"
101105
102106
./gradlew publish -PdeployVersion=$currentVersion
107+
108+
109+
#MavenCentral Staging
110+
- name: MavenCentral Staging
111+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
112+
env:
113+
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.MAVENCENTRAL_SIGNINGKEY }}
114+
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.MAVENCENTRAL_SIGNINGPASS }}
115+
ORG_GRADLE_PROJECT_mavenCentralUser: ${{ github.actor == 'sebastian-peter' && secrets.MAVENCENTRAL_USER ||
116+
github.actor == 'danielfeismann' && secrets.MAVENCENTRAL_DANIEL_USER }}
117+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ github.actor == 'sebastian-peter' && secrets.MAVENCENTRAL_PASS ||
118+
github.actor == 'danielfeismann' && secrets.MAVENCENTRAL_DANIEL_PASS }}
119+
120+
run: |
121+
./gradlew stagingAtMavenCentralPortal

CHANGELOG.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased/Snapshot]
88

99
### Added
10-
- Extend Validation to EnergyManagement Systems. [#1356](https://github.com/ie3-institute/PowerSystemDataModel/issues/1356)
1110
- Added support for custom load profiles [#1362](https://github.com/ie3-institute/PowerSystemDataModel/issues/1362)
1211

12+
### Fixed
13+
14+
### Changed
15+
16+
## [8.0.0] - 2025-07-22
17+
18+
### Added
19+
- Extend Validation to EnergyManagement Systems. [#1356](https://github.com/ie3-institute/PowerSystemDataModel/issues/1356)
20+
- Added `CITATION.cff` [#1380](https://github.com/ie3-institute/PowerSystemDataModel/issues/1380)
21+
1322
### Fixed
1423
- Fixed handling of `CongestionResult.InputModelType` in `EntityProcessor` [#1325](https://github.com/ie3-institute/PowerSystemDataModel/issues/1325)
1524
- Fixed em fields in input models [#1331](https://github.com/ie3-institute/PowerSystemDataModel/issues/1331)
@@ -19,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1928
- Updated dependabot workflow and added CODEOWNERS [#1328](https://github.com/ie3-institute/PowerSystemDataModel/issues/1328)
2029
- Extend azimuth angle range to [-180°, 180°] for PV inputs [#1330](https://github.com/ie3-institute/PowerSystemDataModel/issues/1330)
2130
- Improved error messages when reading and validating an invalid grid [#1354](https://github.com/ie3-institute/PowerSystemDataModel/issues/1354)
31+
- Changed `SubgridContainer` to represent galvanically seperated grids [#1226](https://github.com/ie3-institute/PowerSystemDataModel/issues/1226)
2232

2333
## [7.0.0] - 2025-05-08
2434

@@ -371,7 +381,8 @@ coordinates or multiple exactly equal coordinates possible
371381
- CsvDataSource now stops trying to get an operator for empty operator uuid field in entities
372382
- CsvDataSource now parsing multiple geoJson strings correctly
373383

374-
[Unreleased/Snapshot]: https://github.com/ie3-institute/powersystemdatamodel/compare/7.0.0...HEAD
384+
[Unreleased/Snapshot]: https://github.com/ie3-institute/powersystemdatamodel/compare/8.0.0...HEAD
385+
[8.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/7.0.0...8.0.0
375386
[7.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/6.0.0...7.0.0
376387
[6.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.1.0...6.0.0
377388
[5.1.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.0.1...5.1.0

CITATION.cff

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
cff-version: 1.0.0
2+
title: "PowerSystemDataModel - Provides an elaborated data model to model energy systems with a high granularity."
3+
message: "If you use this software, please cite it as below."
4+
type: software
5+
authors:
6+
- name: "ie³ - Institute of Energy Systems, Energy Efficiency and Energy Economics - TU Dortmund University"
7+
alias: ie³
8+
address: "Martin-Schmeißer-Weg 12"
9+
city: Dortmund
10+
country: DE
11+
post-code: 44227
12+
website: "https://ie3.etit.tu-dortmund.de/"
13+
- family-names: Hiry
14+
given-names: Johannes
15+
orcid: https://orcid.org/0000-0002-1447-0607
16+
- family-names: Kittl
17+
given-names: Chris
18+
orcid: https://orcid.org/0000-0002-1187-0568
19+
- family-names: Sen-Sarma
20+
given-names: Debopama
21+
- family-names: Peter
22+
given-names: Sebastian
23+
orcid: https://orcid.org/0000-0001-6311-6113
24+
- family-names: Oberließen
25+
given-names: Thomas
26+
orcid: https://orcid.org/0000-0001-5805-5408
27+
- family-names: Feismann
28+
given-names: Daniel
29+
orcid: https://orcid.org/0000-0002-3531-9025
30+
- family-names: Bao
31+
given-names: Johannes
32+
orcid: https://orcid.org/0009-0008-3641-6469
33+
- family-names: Hohmann
34+
given-names: Julian
35+
- family-names: Staudt
36+
given-names: Marius
37+
orcid: https://orcid.org/0009-0005-3309-5258
38+
- family-names: Steffan
39+
given-names: Niklas
40+
- family-names: Kraus
41+
given-names: Mia
42+
- family-names: Strehle
43+
given-names: Dennis
44+
- family-names: Mahr
45+
given-names: Christian
46+
- family-names: Zachopoulos
47+
given-names: Vasilios
48+
- family-names: Bajpai
49+
given-names: Shubham
50+
- family-names: Roumeliotis
51+
given-names: Lara
52+
- family-names: Bung
53+
given-names: Vicky
54+
- family-names: Hütte
55+
given-names: Simon
56+
- family-names: Petersmeier
57+
given-names: Pierre
58+
repository-code: https://github.com/ie3-institute/PowerSystemDataModel
59+
keywords:
60+
- power system data model
61+
- power system
62+
- energy system
63+
license: BSD-3-Clause
64+
version: 7.0.0
65+
date-released: 2025-06-05

build.gradle

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
id 'maven-publish'
55
id 'signing'
66
id 'pmd' // code check, working on source code
7-
id 'com.diffplug.spotless' version '7.1.0' //code format
7+
id 'com.diffplug.spotless' version '7.2.1' //code format
88
id 'com.github.spotbugs' version '6.2.2' // code check, working on byte code
99
id 'de.undercouch.download' version '5.6.0'
1010
id 'kr.motd.sphinx' version '2.10.1' // documentation generation
@@ -41,7 +41,8 @@ apply from: scriptsLocation + 'spotless.gradle'
4141
apply from: scriptsLocation + 'checkJavaVersion.gradle'
4242
apply from: scriptsLocation + 'documentation.gradle'
4343
apply from: scriptsLocation + 'jacoco.gradle' // jacoco java code coverage
44-
apply from: scriptsLocation + 'mavenCentralPublish.gradle'
44+
apply from: scriptsLocation + 'uploadToMavenCentralPortal.gradle' // upload for deploy
45+
apply from: scriptsLocation + 'stagingAtMavenCentralPortal.gradle' // stage for deploy
4546
apply from: scriptsLocation + 'sonarqube.gradle'
4647
apply from: scriptsLocation + 'vcs.gradle'
4748
apply from: scriptsLocation + 'semVer.gradle'
@@ -91,18 +92,18 @@ dependencies {
9192
testImplementation "org.testcontainers:couchbase:$testcontainersVersion"
9293

9394
// logging
94-
implementation platform('org.apache.logging.log4j:log4j-bom:2.25.0')
95+
implementation platform('org.apache.logging.log4j:log4j-bom:2.25.1')
9596
implementation 'org.apache.logging.log4j:log4j-api' // log4j
9697
implementation 'org.apache.logging.log4j:log4j-core' // log4j
9798
implementation 'org.apache.logging.log4j:log4j-slf4j-impl' // log4j -> slf4j
9899

99100
// Databases
100101
implementation 'org.influxdb:influxdb-java:2.25'
101-
implementation 'com.couchbase.client:java-client:3.8.2'
102+
implementation 'com.couchbase.client:java-client:3.8.3'
102103
runtimeOnly 'org.postgresql:postgresql:42.7.7' // postgresql jdbc driver required during runtime
103104

104-
implementation 'commons-io:commons-io:2.19.0' // I/O functionalities
105-
implementation 'commons-codec:commons-codec:1.18.0' // needed by commons-compress
105+
implementation 'commons-io:commons-io:2.20.0' // I/O functionalities
106+
implementation 'commons-codec:commons-codec:1.19.0' // needed by commons-compress
106107
implementation 'org.apache.commons:commons-compress:1.27.1' // I/O functionalities
107108
}
108109

-3.02 KB
Loading

docs/readthedocs/_static/figures/transformerWithSwitchGear.tex

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@
159159
\begin{tikzpicture}
160160
% === Anschlüsse ===
161161
\node[circle, draw = tuGreen, fill = tuGreen, inner sep = 0, minimum height = 1.5mm] (port_a) at (0,0){};
162-
\node[circle, draw = tuOrange, fill = tuOrange, inner sep = 0, minimum height = 1.5mm] (port_b) at (15mm,0){};
163-
\node[circle, draw = tuOrange, fill = tuOrange, inner sep = 0, minimum height = 1.5mm] (port_c) at (30mm,0){};
164-
\node[circle, draw = tuOrange, fill = tuOrange, inner sep = 0, minimum height = 1.5mm] (port_d) at (45mm,0){};
162+
\node[circle, draw = tuOrange, fill = tuGreen, inner sep = 0, minimum height = 1.5mm] (port_b) at (15mm,0){};
163+
\node[circle, draw = tuOrange, fill = tuGreen, inner sep = 0, minimum height = 1.5mm] (port_c) at (30mm,0){};
164+
\node[circle, draw = tuOrange, fill = tuGreen, inner sep = 0, minimum height = 1.5mm] (port_d) at (45mm,0){};
165165
\node[circle, draw = tuOrange, fill = tuOrange, inner sep = 0, minimum height = 1.5mm] (port_e) at (62.5mm,0){};
166166

167167
\draw (port_a.west) -- ++(-3mm, -1mm) -- ++(0mm, -2mm) edge[densely dotted] ++(0mm, -1.8mm);
@@ -176,9 +176,9 @@
176176
\draw (port_d.east) -- (winding_a.west) (winding_b.east) -- (port_e.west);
177177

178178
\node[tuGreen, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_a.south) {A \\ \SI{110}{\kV} \\ 1};
179-
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_b.south) {B \\ \SI{110}{\kV} \\ 2};
180-
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_c.south) {C \\ \SI{110}{\kV} \\ 2};
181-
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_d.south) {D \\ \SI{110}{\kV} \\ 2};
179+
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_b.south) {B \\ \SI{110}{\kV} \\ 1};
180+
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_c.south) {C \\ \SI{110}{\kV} \\ 1};
181+
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_d.south) {D \\ \SI{110}{\kV} \\ 1};
182182
\node[tuOrange, anchor = north, inner sep = 2mm, text width = 10mm, align = center] at (port_e.south) {E \\ \SI{10}{\kV} \\ 2};
183183
\end{tikzpicture}
184184
\end{document}

docs/readthedocs/models/input/grid/gridcontainer.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@ and their higher voltage coupling point.
2424

2525
Let's shed a more detailed light on the boundaries of a sub grid as of our definition.
2626
This especially is important, if the switchgear of the transformer is modeled in detail.
27-
We defined, that all nodes in upstream direction of the transformer, that are connected by switches *only* (therefore
28-
are within the switchgear) are counted towards the inferior sub grid structure (here "2"), although they belong to a
29-
different voltage level.
30-
This decision is taken, because we assume, that the interest to operate on the given switchgear will most likely be
31-
placed in the inferior grid structure.
32-
33-
The "real" coupling node A is not comprised in the sub grids node collection, but obviously has reference through the
34-
switch between nodes A and B.
27+
We defined, that all nodes in upstream direction of the transformer, including those, which are within the switchgear are
28+
counted towards the superior sub grid structure (here "1"), because they belong to a different voltage level.
29+
If a switchgear should be operated by the inferior grid, one can set the operator, that is used in the inferior grid, for
30+
the switchgear. This can be necessary, if we assume, that the interest to operate on the given switchgear will most likely
31+
be placed in the inferior grid structure.
3532

3633
A synoptic overview of both classes' attributes is given here:
3734

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
tasks.register('stagingAtMavenCentralPortal') {
2+
group = 'publishing'
3+
description = 'Stages uploaded artifacts to Maven Central Portal for manual approval'
4+
5+
doLast {
6+
def username = project.getProperty('mavenCentralUser')
7+
def password = project.getProperty('mavenCentralPassword')
8+
def deployVersion = project.findProperty('deployVersion') ?: project.version
9+
10+
if (!username || !password) {
11+
throw new GradleException("Sonatype credentials not found. Set sonatypeUser and sonatypePassword properties or environment variables.")
12+
}
13+
14+
// Request API for repo key
15+
def repositoryString = providers.exec {
16+
commandLine 'curl',
17+
'-u', "${username}:${password}",
18+
'https://ossrh-staging-api.central.sonatype.com/manual/search/repositories'
19+
}.getStandardOutput().getAsText().get()
20+
21+
def repositoryGroovy = new groovy.json.JsonSlurper().parseText(repositoryString)
22+
def key = repositoryGroovy.repositories[0].key
23+
24+
// Stage via curl
25+
def stageResult = providers.exec {
26+
ignoreExitValue true
27+
commandLine 'curl',
28+
'-u', "${username}:${password}",
29+
'-i', '-X', 'POST', "https://ossrh-staging-api.central.sonatype.com/manual/upload/repository/$key"
30+
}
31+
32+
if (stageResult.result.get().exitValue == 0) {
33+
println "✓ Staging successful!"
34+
println "Check status at: https://central.sonatype.com/publishing/deployments"
35+
} else {
36+
throw new GradleException("Staging failed")
37+
}
38+
}
39+
}

gradle/scripts/mavenCentralPublish.gradle renamed to gradle/scripts/uploadToMavenCentralPortal.gradle

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ tasks.register("javadocJar", Jar) {
1111
from { tasks.named("javadoc", Javadoc).get().destinationDir }
1212
}
1313

14-
if (project.hasProperty('user') && project.hasProperty('password') && project.hasProperty('deployVersion')) {
14+
if (project.hasProperty('mavenCentralUser') && project.hasProperty('mavenCentralPassword') && project.hasProperty('deployVersion')) {
1515

1616
// snapshot version differs from normal version
1717
String versionString = project.getProperty('deployVersion')
1818

19-
2019
publishing {
2120
publications {
2221
create("mavenJava", MavenPublication) {
@@ -73,12 +72,11 @@ if (project.hasProperty('user') && project.hasProperty('password') && project.ha
7372
}
7473
repositories {
7574
maven {
76-
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
77-
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
78-
url = versionString.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
75+
name = "MavenCentral"
76+
url = "https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/"
7977
credentials {
80-
username project.getProperty('user')
81-
password project.getProperty('password')
78+
username = project.findProperty('mavenCentralUser')
79+
password = project.findProperty('mavenCentralPassword')
8280
}
8381
}
8482
}

0 commit comments

Comments
 (0)