https://github.com/unit8co/darts
Raw File
Tip revision: 5c97c9b1b86bbcdf91e422f6a13156d2e10d6bfe authored by Dennis Bader on 04 April 2024, 14:09:31 UTC
Refactor/metrics (#2284)
Tip revision: 5c97c9b
build.gradle
buildscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2/" }
        gradlePluginPortal()
    }
}

plugins {
    id "com.palantir.docker" version "0.27.0"
    id "com.palantir.docker-run" version "0.27.0"
}

// needed for palantir plugin
task build {
}

// docker & docker run
docker {
    name "unit8/darts"

    // ./gradlew dockerPushVersion will push image with tag ${version}
    // ${version} is property passed from command line during workflow
    tag "version", "unit8/darts:${version}"

    // ./gradlew dockerPushLatest will push image with tag 'latest'
    tag "latest", "unit8/darts:latest"

    dockerfile file("${project.rootDir}/Dockerfile")
    // needed files for docker and to build library
    files "README.md", "setup.py", "setup.cfg"
    copySpec.with {
        from(".") {
            include "examples/**"
            into "."
        }
        from(".") {
            include "darts/**"
            into "."
        }
        from(".") {
            include "requirements/**"
            into "."
        }
    }
}

dockerRun {
    name "unit8_darts"
    image "unit8/darts:latest"
    ports "8888:8888"
    daemonize false
    clean true
}

// setup requirements
task setupPip(type: Exec) {
    commandLine "python", "-m", "pip", "install", "--upgrade", "pip"
}

task installPipLatest {
    dependsOn setupPip
    doLast {
        exec {
            commandLine "pip", "install", "pip-tools"
        }
        exec {
            commandLine "pip-compile", "requirements/core.txt", "requirements/notorch.txt", "requirements/torch.txt", "-o", "requirements-latest.txt"
        }
        exec {
            commandLine "pip", "install", "-r", "requirements-latest.txt"
        }
    }
}

void createPipInstallTask(String flavour) {
   String taskName = "pip_" + flavour;
   String taskArgument = "requirements/" + flavour + ".txt";
   task (taskName, type: Exec) {
      commandLine "pip", "install", "-q", "-r", taskArgument
   }
}

String[] flavours = ["core", "dev", "notorch", "torch", "release"];

for(String flavour : flavours) {
    createPipInstallTask(flavour);
}

task installLocally(type:Exec) {
    commandLine "pip", "install", "."
}

task pipInstall() {
    doFirst {
        setupPip
    }
    dependsOn pip_core, pip_dev, pip_notorch, pip_torch, pip_release
}

task lint_black(type: Exec) {
    dependsOn pip_dev
    commandLine "black", "--check", "."
}

task lint_flake8(type: Exec) {
    dependsOn pip_dev
    commandLine "flake8"
}

task lint_isort(type: Exec) {
    dependsOn pip_dev
    commandLine "isort", "--check", "."
}

task lint {
    dependsOn lint_black, lint_flake8, lint_isort
}

void createPipRelatedTask(String flavour) {
   String taskName = "unitTest_" + flavour;
   String taskArgument = "pip_" + flavour;
   task (taskName, type: Exec) {
        dependsOn(taskArgument)
        dependsOn pip_core
        dependsOn pip_dev
        commandLine "pytest", "--durations=50", "--cov=darts", "--cov-config=.coveragerc", "--cov-report=xml", "darts/tests"
   }

   taskName = "test_" + flavour;
   String taskArgument1 = "unitTest_" + flavour;
   task (taskName) {
        dependsOn(taskArgument1)
        dependsOn lint
   }
}

flavours = ["core", "torch"];

for(String flavour : flavours) {
    createPipRelatedTask(flavour);
}

task unitTest_all(type: Exec) {
    dependsOn installPipLatest, pip_dev
    doFirst {
        installPipLatest
    }
    commandLine "pytest", "--durations=50", "--cov=darts", "--cov-config=.coveragerc", "--cov-report=xml", "darts/tests"
}

task test_all() {
    dependsOn unitTest_all
    dependsOn lint
}

def exampleName=project.properties["exampleName"] ?: ""

task checkExample(type: Exec) {
    dependsOn pipInstall, installLocally
    workingDir "./examples"
    doFirst {
        exec {
            commandLine "echo", "Installed packages"
        }
        exec {
            commandLine "pip", "list"
        }
    }
    // exampleName must be passed with -PexampleName=FFT-examples.ipynb
    commandLine "papermill", exampleName, exampleName
}

// Documentation build
void docSteps() {
    exec {
        commandLine "make", "--directory", "./docs", "build-all-docs"
    }
}

task buildDocs() {
    dependsOn pip_notorch, pip_release, installLocally
    // dependsOn cleanDocs
    doLast {
        docSteps()
    }
}
back to top