# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem 1.0
PortGroup python 1.0
PortGroup select 1.0

name                py-mypy
version             1.17.1
revision            0
license             MIT
maintainers         {toby @tobypeterson} openmaintainer
description         Optional static typing for Python
long_description    Add type annotations to your Python programs, and use mypy to \
                    type check them. Mypy is essentially a Python linter on steroids, \
                    and it can catch many programming errors by analyzing your \
                    program, without actually having to run it. Mypy has a powerful \
                    type system with features such as type inference, gradual typing, \
                    generics and union types.

homepage            https://www.mypy-lang.org

checksums           rmd160  cf8a6f2dfa6f3f936e8ee4cc745602c8a1c9e435 \
                    sha256  25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01 \
                    size    3352570

python.versions     39 310 311 312 313

if {${name} ne ${subport}} {
    depends_build-append    port:py${python.version}-types-psutil \
                            port:py${python.version}-types-setuptools
    depends_lib-append      port:py${python.version}-mypy_extensions \
                            port:py${python.version}-typing_extensions \
                            port:py${python.version}-pathspec
    depends_run-append      port:mypy_select

    if {${python.version} < 311} {
        depends_lib-append  port:py${python.version}-tomli
    }

    compiler.blacklist-append \
                            *gcc-4.0 *gcc-4.2 \
                            {clang < 602}

    compiler.c_standard     2011

    build.env-append        MYPY_USE_MYPYC=1

    # https://trac.macports.org/ticket/68943
    # https://github.com/python/mypy/issues/16684
    # https://github.com/python/mypy/issues/11507
    if {${configure.build_arch} in [list arm i386 ppc]} {
        build.env-append    MYPYC_DEBUG_LEVEL=0 \
                            MYPYC_MULTI_FILE=1
    }

    select.group            mypy
    select.file             ${filespath}/mypy${python.version}
}
