Skip to content

Commit

Permalink
Merge branch 'main' into CWL
Browse files Browse the repository at this point in the history
  • Loading branch information
caroott authored Sep 10, 2024
2 parents ddb838f + 8b4368a commit 4bfe7ab
Show file tree
Hide file tree
Showing 61 changed files with 2,201 additions and 246 deletions.
14 changes: 14 additions & 0 deletions ARCtrl.sln
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ARCtrl.Contract.Tests", "te
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ARCtrl.CWL.Tests", "tests\CWL\ARCtrl.CWL.Tests.fsproj", "{0F2188D3-144C-41BF-89F6-AA85883AE0D3}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ARCtrl.ROCrate", "src\ROCrate\ARCtrl.ROCrate.fsproj", "{658BF141-B4B5-4B90-891D-AC36A3FD7574}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ARCtrl.ROCrate.Tests", "tests\ROCrate\ARCtrl.ROCrate.Tests.fsproj", "{212A1C64-02FC-465A-B0FA-F69735F37ACC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -174,6 +178,14 @@ Global
{0F2188D3-144C-41BF-89F6-AA85883AE0D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0F2188D3-144C-41BF-89F6-AA85883AE0D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F2188D3-144C-41BF-89F6-AA85883AE0D3}.Release|Any CPU.Build.0 = Release|Any CPU
{658BF141-B4B5-4B90-891D-AC36A3FD7574}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{658BF141-B4B5-4B90-891D-AC36A3FD7574}.Debug|Any CPU.Build.0 = Debug|Any CPU
{658BF141-B4B5-4B90-891D-AC36A3FD7574}.Release|Any CPU.ActiveCfg = Release|Any CPU
{658BF141-B4B5-4B90-891D-AC36A3FD7574}.Release|Any CPU.Build.0 = Release|Any CPU
{212A1C64-02FC-465A-B0FA-F69735F37ACC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{212A1C64-02FC-465A-B0FA-F69735F37ACC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{212A1C64-02FC-465A-B0FA-F69735F37ACC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{212A1C64-02FC-465A-B0FA-F69735F37ACC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -201,6 +213,8 @@ Global
{5810EF87-4F85-4B4C-98E3-833AE914C628} = {64B34A6E-318D-4E6E-9262-CE52C9B85A38}
{D10D12C7-B877-423B-867D-161D99E673C9} = {64B34A6E-318D-4E6E-9262-CE52C9B85A38}
{0F2188D3-144C-41BF-89F6-AA85883AE0D3} = {64B34A6E-318D-4E6E-9262-CE52C9B85A38}
{658BF141-B4B5-4B90-891D-AC36A3FD7574} = {6DA2330B-D407-4FB1-AF05-B0184034EC44}
{212A1C64-02FC-465A-B0FA-F69735F37ACC} = {64B34A6E-318D-4E6E-9262-CE52C9B85A38}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1E354DE6-99BA-421E-9EF8-E808B855A85F}
Expand Down
53 changes: 51 additions & 2 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
### 2.0.0+06ab9f5 (Released 2024-6-27)
* Additions:
### 2.0.1+5e6cc32 (Released 2024-8-29)
* Bugfixes:
* [[#bfaaaf6](https://github.com/nfdi4plants/ARCtrl/commit/bfaaaf614a1a2dc788a1b7de17761b5867aa9fee)] fix single dot in paths being interpreted as folder

### 2.0.0+6c267dd (Released 2024-8-27)
* Additions:
* [[#c250f52](https://github.com/nfdi4plants/ARCtrl/commit/c250f52322e6c22714b02dccb37b93ca2a9cb5d8)] add RO-Crate contexts to docs
* [[#55ad878](https://github.com/nfdi4plants/ARCtrl/commit/55ad87892d23a77517cdbe380f5bc4e75cea2744)] Update fsspreadsheet
* [[#263db68](https://github.com/nfdi4plants/ARCtrl/commit/263db68d22addaa26552a85a4dd86eac29c2153f)] include fable files
* [[#c59b883](https://github.com/nfdi4plants/ARCtrl/commit/c59b8834d09fcdae7e47b575c4d2dff316c44a18)] Add ARCtrl.ValidationPackages project: - base type model for ValidationPackages and the config file
* [[#cc879fd](https://github.com/nfdi4plants/ARCtrl/commit/cc879fd276e25d4ead4c9b5051f839567e1a745e)] Add ARCtrl.Yaml: - Uses YAMLicious - tries to mirror ARCtrl.Json - Encoder/Decoder logic for ValidatioNpackages type model
* [[#c5a9e7c](https://github.com/nfdi4plants/ARCtrl/commit/c5a9e7c8f25352437c757147203f6df327957da4)] Add contracts for ValidationPackagesConfig
* [[#532d310](https://github.com/nfdi4plants/ARCtrl/commit/532d310e4f149a4a7ff48e62d98e836db85982a1)] Update to .NET 8, requested PR changes
* [[#137d885](https://github.com/nfdi4plants/ARCtrl/commit/137d885f1a8a76c43fca0e1d631ad70c9eae8667)] add fable files
* [[#87ed783](https://github.com/nfdi4plants/ARCtrl/commit/87ed783823ebfa9e56486cd2d5edcb2e406216cd)] add the fable files for real. fable be fablin'
* [[#8b55020](https://github.com/nfdi4plants/ARCtrl/commit/8b55020d557e39b78a7f512ff29370bfd53e98aa)] Add classes for index files :sparkles: #386
* [[#27d259a](https://github.com/nfdi4plants/ARCtrl/commit/27d259a22b3d357798ac190b867b33972814033d)] Rename ARCtrl.Path to ARCtrl.ArcPathHelper #398
* [[#3e427f1](https://github.com/nfdi4plants/ARCtrl/commit/3e427f188ecc5244fffa63e534314e30699efb29)] Add CompositeCell.ToDataCell #404
* [[#bf79874](https://github.com/nfdi4plants/ARCtrl/commit/bf798749e0de183502ca52df000943a06ccccee2)] Unifiy expected functionality of CompositeCell conversion utility #402
* [[#8432507](https://github.com/nfdi4plants/ARCtrl/commit/8432507efc446ca93f7c0d333a0bbd8d79a96395)] Add api to include datamap in assay/study #406
* [[#b00b17e](https://github.com/nfdi4plants/ARCtrl/commit/b00b17eaf6c397e3d3ff30795199767697ab0572)] add swate prerelease target
* [[#486d6a7](https://github.com/nfdi4plants/ARCtrl/commit/486d6a7e611c739452aab1d11003478c9940cf62)] rmv comment
* [[#d036c31](https://github.com/nfdi4plants/ARCtrl/commit/d036c3161ddc53118bed5aeb5be2b32102ec6b76)] add first json logic for datamap :construction:
* [[#22b48f5](https://github.com/nfdi4plants/ARCtrl/commit/22b48f54ae2992269a4ab891035653c5712cf0ec)] Add YAML tests for Validation packages, use custom equality
* [[#b510ab2](https://github.com/nfdi4plants/ARCtrl/commit/b510ab2b793c87a6ce0a70fd92ae99791624f307)] add a test placeholder -.-
* [[#9c70c5d](https://github.com/nfdi4plants/ARCtrl/commit/9c70c5dffea4a28f262f972651b712bf0e5ffefa)] Add contract handling for `validation_packages.yml` to top-level ARC API
* [[#263db27](https://github.com/nfdi4plants/ARCtrl/commit/263db27e067fb1c6af81211be15d6eb80390783a)] wip
* [[#6273594](https://github.com/nfdi4plants/ARCtrl/commit/6273594c1a4b7b4813ddffd4a0b0f9beea095892)] Add instance method tests for ARCtrl.ValidationPackages
* [[#4101dcb](https://github.com/nfdi4plants/ARCtrl/commit/4101dcb2b0f38e80f77501c5e2dadd1fe422b7a4)] Add Contract tests for ValidationPackagesConfig
* [[#995e2f8](https://github.com/nfdi4plants/ARCtrl/commit/995e2f8bef5c5f9510aa3cf9f77b7968d16eb271)] Add topm level api tests for ValidationPackagesConfig
* [[#8de0653](https://github.com/nfdi4plants/ARCtrl/commit/8de0653bfd3d361b8571f2c59eb65823e1832022)] Use literal for yaml keys (also in tests)
* [[#d64f841](https://github.com/nfdi4plants/ARCtrl/commit/d64f841685b5314627ef6d6829cceeb9d1dc88a3)] Use more Record-like ToString() for ValidationPackages and ValidationpackagesConfig
* [[#88c9b9d](https://github.com/nfdi4plants/ARCtrl/commit/88c9b9d831f8918e7eadb511cdaf0e7baf9bfbdf)] add addColumnFill member function with tests
* [[#e68ca44](https://github.com/nfdi4plants/ARCtrl/commit/e68ca449ba9aa741e96f4bb9195ac3f354625ac7)] Additional tests for AddColumnFill
* [[#df0bda9](https://github.com/nfdi4plants/ARCtrl/commit/df0bda98b004caf1896c91a5d9d69c50885b01d3)] Reviewed AddColumnFill member function and tests
* [[#94fba28](https://github.com/nfdi4plants/ARCtrl/commit/94fba285c10678314a9ae7fd47c146862109b77a)] add ARC.ToROCrateJsonString member #344
* [[#064b3e0](https://github.com/nfdi4plants/ARCtrl/commit/064b3e0beb10b34cb28d32db7f55342bf5479d22)] added functions for checking assay and study metadata sheet names #414
* [[#c5a929d](https://github.com/nfdi4plants/ARCtrl/commit/c5a929df8b140e9bb749fe2f01db386ccadd818c)] check identifiers when creating assay and study objects #415
* [[#d40fea9](https://github.com/nfdi4plants/ARCtrl/commit/d40fea9442d34a3b7fa6bff76682423fdcff5992)] add CompositeHeader.IsUnique #416
* [[#de4246f](https://github.com/nfdi4plants/ARCtrl/commit/de4246f16d09b81cd94f18784772618bb095a6c8)] add ArcTable cell accession and manipulation functions
* [[#485d778](https://github.com/nfdi4plants/ARCtrl/commit/485d778ed49f99b1ae7994d1a1e764ea08091e95)] make process conversion more robust against different outputs
* [[#0b85fcd](https://github.com/nfdi4plants/ARCtrl/commit/0b85fcd8fc825866c10792465a33c1cf81b92e08)] base spreadsheet parsers on string columns
* [[#142b6a2](https://github.com/nfdi4plants/ARCtrl/commit/142b6a20c3df620822bfe602136040d3b62fd944)] change main types of spreadsheet parsing collections from list to array
Expand Down Expand Up @@ -118,9 +156,20 @@
* [[#abd3d89](https://github.com/nfdi4plants/ARCtrl/commit/abd3d890fb58a0962d4e7d841df7440d9a4bed90)] Merge pull request #317 from nfdi4plants/python_integration
* [[#b6e2eca](https://github.com/nfdi4plants/ARCtrl/commit/b6e2ecab5a0a3630e1dd24ae36d34be79ad21d6d)] small change to semver in npm
* Deletions:
* [[#cd1620c](https://github.com/nfdi4plants/ARCtrl/commit/cd1620c615ec500713ba12da7b685eca7305a12f)] remove entry when delete contract is created for validation packages config file, add related tests
* [[#e50083c](https://github.com/nfdi4plants/ARCtrl/commit/e50083ce6638fc6e7ac607bd1a090948046d1d84)] remove UI helper functions #329
* [[#1ce8001](https://github.com/nfdi4plants/ARCtrl/commit/1ce80017ddd48bbe217ee99ac70923cb5dca8bc1)] Remove ALL tabs from fsproj files
* [[#f055617](https://github.com/nfdi4plants/ARCtrl/commit/f05561709a0a8d1da752d54d5a997db225a3384e)] remove erroneous exe output type from testingutils
* Bugfixes:
* [[#ad6f37f](https://github.com/nfdi4plants/ARCtrl/commit/ad6f37f02cc24c22b9b6744fc59039bf3644eb4b)] Fix spreadsheet writer for data with freetext :bug::white_check_mark: #405
* [[#e358522](https://github.com/nfdi4plants/ARCtrl/commit/e358522720ac8343d470c33e13e8cdd1363e18e2)] fix data column spreadsheet export for mixed columns :bug::white_check_mark:
* [[#f60e663](https://github.com/nfdi4plants/ARCtrl/commit/f60e663aa68f6fbae2eb0da65f20950b9ee67545)] fix module references :bug:
* [[#36ab086](https://github.com/nfdi4plants/ARCtrl/commit/36ab0864dfda70ed078cef089dcc9f3e0847341a)] Added missing datamap to compressed study json :bug:
* [[#5cfffe9](https://github.com/nfdi4plants/ARCtrl/commit/5cfffe92e47ffd342a44debcf50ea0d08ef27359)] fix study datamap json key name :bug:
* [[#dc3822f](https://github.com/nfdi4plants/ARCtrl/commit/dc3822fd1fec14c6009425e618531adf8828119a)] Fixed json key naming issue, added tests :bug::white_check_mark:
* [[#a88344a](https://github.com/nfdi4plants/ARCtrl/commit/a88344a7f5f6d96b82e31af85b582b7425db8d7c)] fix test transpilation for YAML
* [[#ba8d69e](https://github.com/nfdi4plants/ARCtrl/commit/ba8d69ef5e3668d986ee2e948699cce8dd1e977b)] Fix path helper usage after rebase
* [[#d1b9f9b](https://github.com/nfdi4plants/ARCtrl/commit/d1b9f9b3e640ccf688af7cbd2d34d07589a6f1ac)] fix multi annotationTable writing and unify API #423
* [[#621f769](https://github.com/nfdi4plants/ARCtrl/commit/621f769ead6a0616a78f5db0ff23c5bfd6d53a5b)] small fix for changes to spreadsheet parsing
* [[#19b6a4c](https://github.com/nfdi4plants/ARCtrl/commit/19b6a4cb2d9ff89a68428f226ed49ffa34641c93)] fix and test rename leading to update contracts when the renamed entity is registered and remove isalight
* [[#4ae6bd0](https://github.com/nfdi4plants/ARCtrl/commit/4ae6bd029c7ecd14cb16e6fea221983d29e43fea)] fixes and tests for updateContracts when assays or studies are added
Expand Down
1 change: 0 additions & 1 deletion build.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@

set PYTHONIOENCODING=utf-8
dotnet tool restore
cls
dotnet run --project ./build/build.fsproj %*
6 changes: 6 additions & 0 deletions build/PackageTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ let packDotNetPrerelease = BuildTask.create "PackDotNetPrerelease" [setPrereleas
BundleDotNet.bundle prereleaseTag (Some prereleaseTag)
}

let packDotNetSwate = BuildTask.create "packDotNetSwate" [clean; build; RunTests.runTestsDotnet; RunTests.runTestsJs; RunTests.runTestsJsNative] {
let semVer = release.SemVer
let releaseTag = sprintf "%i.%i.%i-swate" semVer.Major semVer.Minor semVer.Patch
BundleDotNet.bundle releaseTag (Some releaseTag)
}

module BundleJs =
let bundle (versionTag: string) =
Fake.JavaScript.Npm.run "bundlejs" (fun o -> o)
Expand Down
1 change: 1 addition & 0 deletions build/ProjectInfo.fs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ let testProjects =
"tests/Yaml"
"tests/ValidationPackages"
"tests/Contract"
"tests/ROCrate"
]

/// Native JS test paths
Expand Down
15 changes: 15 additions & 0 deletions build/ReleaseTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,21 @@ let publishNugetPrerelease = BuildTask.create "PublishNugetPrerelease" [clean; b
else failwith "aborted"
}

let publishNugetSwate = BuildTask.create "publishNugetSwate" [clean; build; packDotNetSwate] {
let targets = (!! (sprintf "%s/*.*pkg" netPkgDir ))
for target in targets do printfn "%A" target
let semVer = release.SemVer
let releaseTag = sprintf "%i.%i.%i-swate" semVer.Major semVer.Minor semVer.Patch
let msg = sprintf "[NUGET] release package with version %s?" releaseTag
if promptYesNo msg then
let source = "https://api.nuget.org/v3/index.json"
let apikey = Environment.environVar "NUGET_KEY"
for artifact in targets do
let result = DotNet.exec id "nuget" (sprintf "push -s %s -k %s %s --skip-duplicate" source apikey artifact)
if not result.OK then failwith "failed to push packages"
else failwith "aborted"
}

let publishNPM = BuildTask.create "PublishNPM" [clean; build; runTests; packJS] {
let target =
(!! (sprintf "%s/*.tgz" npmPkgDir ))
Expand Down
28 changes: 27 additions & 1 deletion build/TestTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,32 @@ module RunTests =
|> Seq.iter dotnetRun
}

let runTests = BuildTask.create "RunTests" [clean; build; (*RunTests.runTestsJs; RunTests.runTestsJsNative; RunTests.runTestsPy; RunTests.runTestsPyNative;*) RunTests.runTestsDotnet] {
let runTestProject = BuildTask.createFn "runTestProject" [clean; build] (fun config ->
let dotnetRun = run dotnet "run"
match config.Context.Arguments with
| projectName::[] ->
let dotnetRun = run dotnet "run"
match List.tryFind (fun (p:string) -> p.EndsWith(projectName)) testProjects with
| Some p ->
//
printfn $"running tests for test project {p}"
dotnetRun p
//
run dotnet $"fable {p} -o {p}/js" ""
//transpile py files from fsharp code
run dotnet $"fable {p} -o {p}/py --lang python" ""
// run pyxpecto in target path to execute tests in python
run python $"{p}/py/main.py" ""
// transpile js files from fsharp code
run dotnet $"fable {p} -o {p}/js" ""
// run mocha in target path to execute tests
// "--timeout 20000" is used, because json schema validation takes a bit of time.
run node $"{p}/js/Main.js" ""
| _ ->
failwithf "Project %s not found" projectName
| _ -> failwith "Please provide a project name to run tests for as the single argument"
)

let runTests = BuildTask.create "RunTests" [clean; build; RunTests.runTestsJs; RunTests.runTestsJsNative; RunTests.runTestsPy; RunTests.runTestsPyNative; RunTests.runTestsDotnet] {
()
}
2 changes: 1 addition & 1 deletion build/release_package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nfdi4plants/arctrl",
"version": "2.0.0",
"version": "2.0.1",
"description": "Top level ARC DataModel and API function descriptions.",
"type": "module",
"main": "index.js",
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "ARCtrl"
version = "2.0.0"
version = "2.0.1"
description = "Library for management of Annotated Research Contexts (ARCs) using an in-memory representation and runtimer agnostic contract systems."
authors = ["Heinrich Lukas Weil <[email protected]>", "Kevin Frey <[email protected]>"]
maintainers = ["Florian Wetzels"]
Expand Down
11 changes: 7 additions & 4 deletions src/ARCtrl/ARC.fs
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ type ARC(?isa : ArcInvestigation, ?cwl : CWL.CWL, ?fs : FileSystem.FileSystem) =
let workbooks = System.Collections.Generic.Dictionary<string, DTOType*FsWorkbook>()
match this.ISA with
| Some inv ->
let investigationConverter = Spreadsheet.ArcInvestigation.toFsWorkbook
let investigationConverter = ArcInvestigation.toFsWorkbook
workbooks.Add (InvestigationFileName, (DTOType.ISA_Investigation, investigationConverter inv))
inv.StaticHash <- inv.GetLightHashCode()
inv.Studies
Expand Down Expand Up @@ -365,7 +365,7 @@ type ARC(?isa : ArcInvestigation, ?cwl : CWL.CWL, ?fs : FileSystem.FileSystem) =

| None ->
//printfn "ARC contains no ISA part."
workbooks.Add (InvestigationFileName, (DTOType.ISA_Investigation, Spreadsheet.ArcInvestigation.toFsWorkbook (ArcInvestigation.create(Identifier.MISSING_IDENTIFIER))))
workbooks.Add (InvestigationFileName, (DTOType.ISA_Investigation, ArcInvestigation.toFsWorkbook (ArcInvestigation.create(Identifier.MISSING_IDENTIFIER))))

// Iterates over filesystem and creates a write contract for every file. If possible, include DTO.
_fs.Tree.ToFilePaths(true)
Expand Down Expand Up @@ -566,11 +566,14 @@ type ARC(?isa : ArcInvestigation, ?cwl : CWL.CWL, ?fs : FileSystem.FileSystem) =
let isa = ARCtrl.Json.Decode.fromJsonString ARCtrl.Json.ARC.ROCrate.decoder s
ARC(?isa = isa)

member this.ToROCrateJsonString(?spaces) =
ARCtrl.Json.ARC.ROCrate.encoder (Option.get _isa)
|> ARCtrl.Json.Encode.toJsonString (ARCtrl.Json.Encode.defaultSpaces spaces)

/// exports in json-ld format
static member toROCrateJsonString(?spaces) =
fun (obj:ARC) ->
ARCtrl.Json.ARC.ROCrate.encoder (Option.get obj.ISA)
|> ARCtrl.Json.Encode.toJsonString (ARCtrl.Json.Encode.defaultSpaces spaces)
obj.ToROCrateJsonString(?spaces = spaces)

/// <summary>
/// Returns the write contract for the input ValidationPackagesConfig object.
Expand Down
12 changes: 9 additions & 3 deletions src/Core/ArcTypes.fs
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,13 @@ module ArcTypesAux =
[<AttachMembers>]
type ArcAssay(identifier: string, ?measurementType : OntologyAnnotation, ?technologyType : OntologyAnnotation, ?technologyPlatform : OntologyAnnotation, ?tables: ResizeArray<ArcTable>, ?datamap : DataMap, ?performers : ResizeArray<Person>, ?comments : ResizeArray<Comment>) =
inherit ArcTables(defaultArg tables <| ResizeArray())

let performers = defaultArg performers <| ResizeArray()
let comments = defaultArg comments <| ResizeArray()
let mutable identifier : string = identifier
let mutable identifier : string =
let identifier = identifier.Trim()
Helper.Identifier.checkValidCharacters identifier
identifier
let mutable investigation : ArcInvestigation option = None
let mutable measurementType : OntologyAnnotation option = measurementType
let mutable technologyType : OntologyAnnotation option = technologyType
Expand Down Expand Up @@ -530,7 +533,10 @@ type ArcStudy(identifier : string, ?title, ?description, ?submissionDate, ?publi
let registeredAssayIdentifiers = defaultArg registeredAssayIdentifiers <| ResizeArray()
let comments = defaultArg comments <| ResizeArray()

let mutable identifier = identifier
let mutable identifier : string =
let identifier = identifier.Trim()
Helper.Identifier.checkValidCharacters identifier
identifier
let mutable investigation : ArcInvestigation option = None
let mutable title : string option = title
let mutable description : string option = description
Expand Down
Loading

0 comments on commit 4bfe7ab

Please sign in to comment.