Skip to content

Commit 8eb9f85

Browse files
authored
Merge pull request #76 from finos/develop
Update CDM Build Scripts to work with new environment
2 parents e25aea9 + 0c85eee commit 8eb9f85

File tree

7 files changed

+76
-15
lines changed

7 files changed

+76
-15
lines changed

src/main/java/com/regnosys/rosetta/generator/python/PythonCodeGeneratorCLI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ private static void processRosettaFiles(List<Path> rosettaFiles, String tgtDir)
174174
Map<String, CharSequence> generatedPython = new HashMap<>();
175175
pythonCodeGenerator.beforeAllGenerate(resourceSet, models, version);
176176
for (RosettaModel model : models) {
177-
System.out.println("Processing: " + model.getName());
177+
LOGGER.info("Processing: " + model.getName());
178178
generatedPython.putAll(pythonCodeGenerator.beforeGenerate(model.eResource(), model, version));
179179
generatedPython.putAll(pythonCodeGenerator.generate(model.eResource(), model, version));
180180
generatedPython.putAll(pythonCodeGenerator.afterGenerate(model.eResource(), model, version));

src/main/java/com/regnosys/rosetta/generator/python/expressions/PythonExpressionGenerator.xtend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class PythonExpressionGenerator {
9696
ToDateTimeOperation: '''datetime.datetime.strptime(«generateExpression(expr.argument, ifLevel, isLambda)», "%Y-%m-%d %H:%M:%S")'''
9797
ToIntOperation: '''int(«generateExpression(expr.argument, ifLevel, isLambda)»)'''
9898
ToTimeOperation: '''datetime.datetime.strptime(«generateExpression(expr.argument, ifLevel, isLambda)», "%H:%M:%S").time()'''
99-
ToZonedDateTimeOperation:'''datetime.datetime.strptime(«generateExpression(expr.argument, ifLevel, isLambda)», "%Y-%m-%d %H:%M:%S %z %Z")'''
99+
ToZonedDateTimeOperation:'''rune_zoned_date_time(«generateExpression(expr.argument, ifLevel, isLambda)»)'''
100100
// Rune Operations
101101
RosettaAbsentExpression: '''(not rune_attr_exists(«generateExpression(expr.argument, ifLevel, isLambda)»))'''
102102
RosettaBinaryOperation: generateBinaryExpression(expr, ifLevel, isLambda)

test/cdm_tests/cdm_setup/get_cdm.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ rm -rf ../common-domain-model
2424
mkdir ../common-domain-model
2525
cd ../common-domain-model
2626
echo "***** pull CDM rosetta definitions"
27-
# CDM_VERSION="5.22.1"
27+
# CDM_VERSION="5.x.x"
2828
CDM_VERSION="master"
2929
git init
3030
git config core.sparseCheckout true
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# pylint: disable=unused-import,missing-function-docstring,invalid-name
2+
3+
# Works with CDM 5.x.x
4+
5+
from datetime import date
6+
from cdm.event.common.Trade import Trade
7+
from cdm.event.common.TradeIdentifier import TradeIdentifier
8+
from cdm.product.template.TradableProduct import TradableProduct
9+
from cdm.product.template.Product import Product
10+
from cdm.product.template.TradeLot import TradeLot
11+
from cdm.base.staticdata.party.Counterparty import Counterparty
12+
from cdm.product.common.settlement.PriceQuantity import PriceQuantity
13+
from cdm.base.staticdata.party.CounterpartyRoleEnum import CounterpartyRoleEnum
14+
from cdm.base.staticdata.party.Party import Party
15+
from cdm.base.staticdata.party.PartyIdentifier import PartyIdentifier
16+
from cdm.base.staticdata.identifier.AssignedIdentifier import AssignedIdentifier
17+
18+
def test_trade():
19+
product = Product()
20+
price_quantity = PriceQuantity()
21+
trade_lot = TradeLot(priceQuantity=[price_quantity])
22+
party_reference = Party(partyId=[PartyIdentifier(identifier="test")])
23+
counterparty = [Counterparty(role=CounterpartyRoleEnum.PARTY_1, partyReference=party_reference),
24+
Counterparty(role=CounterpartyRoleEnum.PARTY_2, partyReference=party_reference)]
25+
tradable_product = TradableProduct(product=product, tradeLot=[trade_lot], counterparty=counterparty)
26+
trade_identifier=[TradeIdentifier(assignedIdentifier=[AssignedIdentifier(identifier="Acme")])]
27+
28+
t = Trade(
29+
tradeDate=date(2023, 1, 1),
30+
tradableProduct=tradable_product,
31+
tradeIdentifier=trade_identifier
32+
)
33+
print(t.model_dump())
34+
print('Done!')
35+
36+
37+
if __name__ == '__main__':
38+
test_trade()
39+
40+
# EOF

test/cdm_tests/setup_cdm_test_env.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ MY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
2323
cd ${MY_PATH} || error
2424

2525
echo "***** setting up common environment"
26-
BUILDPATH="../../build"
27-
source $MY_PATH/$BUILDPATH/setup_python_env.sh
26+
PYTHONSETUPPATH="../python_setup"
27+
source $MY_PATH/$PYTHONSETUPPATH/setup_python_env.sh
2828

2929
echo "***** activating virtual environment"
3030
VENV_NAME=".pyenv"
31-
VENV_PATH=".."
32-
source $MY_PATH/$BUILDPATH/$VENV_PATH/$VENV_NAME/${PY_SCRIPTS}/activate || error
31+
VENV_PATH="../.."
32+
source $MY_PATH/$PYTHONSETUPPATH/$VENV_PATH/$VENV_NAME/${PY_SCRIPTS}/activate || error
3333

3434
# install cdm package
3535
PYTHONCDMDIR="../../target/python-cdm"

test/python_setup/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
setuptools>=62.0
2+
tzdata>=2023.3
23
pytest
Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
11
'''to-zoned-date-time unit tests'''
2-
32
import datetime
3+
from zoneinfo import ZoneInfo
44

55
import pytest
66

77
from rosetta_dsl.test.semantic.zoned_date_time_operator.ZonedDateTimeOperatorTest import ZonedDateTimeOperatorTest
88

9-
def test_to_zoned_date_time_passes():
10-
'''no doc'''
11-
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-05-26 14:30:00 +0900 UTC",b=datetime.datetime(2025, 5, 26, 14, 30, 0, tzinfo=datetime.timezone(datetime.timedelta(hours=9), 'UTC')))
9+
10+
def test_to_zoned_date_time_offset_and_time_zone():
11+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-07-07 15:30:00 +0100 Europe/Lisbon",b=datetime.datetime(2025,7, 7, 15, 30, 0, tzinfo=ZoneInfo("Europe/Lisbon")))
12+
to_zoned_date_time_test.validate_model()
13+
14+
def test_to_zoned_date_time_only_time_zone():
15+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-07-07 15:30:00 Europe/Lisbon",b=datetime.datetime(2025,7, 7, 15, 30, 0, tzinfo=ZoneInfo("Europe/Lisbon")))
16+
to_zoned_date_time_test.validate_model()
17+
18+
def test_to_zoned_date_time_only_time_zone2():
19+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-03-15 12:00:00 Zulu",b=datetime.datetime(2025,3, 15, 12, 0, 0, tzinfo=ZoneInfo("Zulu")))
1220
to_zoned_date_time_test.validate_model()
1321

22+
def test_to_zoned_date_time_only_offset():
23+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-05-26 14:30:00 +0900",b=datetime.datetime(2025,5, 26, 14, 30, 0, tzinfo=datetime.timezone(datetime.timedelta(hours=9))))
24+
to_zoned_date_time_test.validate_model()
25+
1426
def test_to_zoned_date_time_fails():
15-
'''no doc'''
16-
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-05-26 14:30:00 +09x0 UTC",b=datetime.datetime(2025, 5, 26, 14, 30, 0, tzinfo=datetime.timezone(datetime.timedelta(hours=9), 'UTC')))
27+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-12-15 15:30:00 +0100 Europe/Lisbon",b=datetime.datetime(2025, 5, 26, 14, 30, 0, tzinfo=ZoneInfo("Europe/Lisbon")))
28+
with pytest.raises(Exception):
29+
to_zoned_date_time_test.validate_model()
30+
31+
def test_to_zoned_date_time_fails_format():
32+
to_zoned_date_time_test= ZonedDateTimeOperatorTest(a="2025-05-26 14:30:00 +09x0",b=datetime.datetime(2025, 5, 26, 14, 30, 0, tzinfo=datetime.timezone(datetime.timedelta(hours=9))))
1733
with pytest.raises(Exception):
1834
to_zoned_date_time_test.validate_model()
1935

2036
if __name__ == "__main__":
21-
test_to_zoned_date_time_passes()
22-
test_to_zoned_date_time_fails()
37+
test_to_zoned_date_time_offset_and_time_zone()
38+
test_to_zoned_date_time_only_time_zone()
39+
test_to_zoned_date_time_only_time_zone2()
40+
test_to_zoned_date_time_only_offset()
41+
test_to_zoned_date_time_fails()
42+
test_to_zoned_date_time_fails_format()

0 commit comments

Comments
 (0)