https://github.com/unit8co/darts
Raw File
Tip revision: 5f204ee8c4dad745b7490c371e530df4ebea6f98 authored by Julien Herzen on 16 October 2021, 07:44:24 UTC
resolved issues in concatenate()
Tip revision: 5f204ee
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", "-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", "prophet", "pmdarima", "dev", "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_prophet, pip_pmdarima, pip_torch, pip_release
}

// Tests
void coverageTestSteps() {
    exec {
        commandLine "coverage", "run", "--source=darts/", "-m", "unittest"
    }
    exec {
        commandLine "coverage", "report", "-m", "--fail-under=80", "--omit=darts/tests*,*__init__.py"
    }
}

task lint(type: Exec) {
    dependsOn pip_dev
    commandLine "flake8", "--config=setup.cfg", "--exit-zero", "darts"
}

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 "python", "-m", "unittest"
   }

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

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

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

task unitTest_all(type: Exec) {
    dependsOn installPipLatest, pip_dev
    doFirst {
        installPipLatest
    }
    commandLine "python", "-m", "unittest"
}

task coverageTest_all() {
    dependsOn installPipLatest, pip_dev
    doFirst {
        installPipLatest
    }
    doLast {
        coverageTestSteps()
    }
}

task test_all() {
    dependsOn unitTest_all
    dependsOn coverageTest_all
    dependsOn lint
}

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

task checkExample(type: Exec) {
    dependsOn pipInstall, installLocally
    workingDir "./examples"
    // exampleName must be passed with -PexampleName=FFT-examples.ipynb
    commandLine "papermill", exampleName, exampleName

    doFirst {
        exec {
            commandLine "jupyter", "nbextension", "enable", "--py", "widgetsnbextension"
        }
    }
}

// Documentation build
void docSteps() {
    exec {
        commandLine "make", "--directory", "./docs", "copy-examples"
    }
    exec {
        commandLine "make", "--directory", "./docs", "generate"
    }
    exec {
        commandLine "make", "--directory", "./docs", "readme"
    }
    exec {
        commandLine "make", "--directory", "./docs", "html"
    }
}

task cleanDocs(type: Exec) {
    commandLine "make", "--directory", "./docs", "clean"
}

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