예제 #1
0
파일: test_actions.py 프로젝트: ulwlu/pdm
def test_lock_dependencies(project):
    project.add_dependencies({"requests": parse_requirement("requests")})
    actions.do_lock(project)
    assert project.lockfile_file.exists()
    locked = project.get_locked_candidates()
    for package in ("requests", "idna", "chardet", "certifi"):
        assert package in locked
예제 #2
0
    def handle(self, project: Project, options: argparse.Namespace) -> None:
        if not project.meta and click._compat.isatty(sys.stdout):
            actions.ask_for_import(project)

        strategy = actions.check_lockfile(project, False)
        if strategy:
            if options.check:
                project.core.ui.echo(
                    "Please run `pdm lock` to update the lock file", err=True)
                sys.exit(1)
            if options.lock:
                project.core.ui.echo("Updating the lock file...",
                                     fg="green",
                                     err=True)
                actions.do_lock(project,
                                strategy=strategy,
                                dry_run=options.dry_run)

        actions.do_sync(
            project,
            groups=options.groups,
            dev=options.dev,
            default=options.default,
            no_editable=options.no_editable,
            no_self=options.no_self,
            dry_run=options.dry_run,
        )
예제 #3
0
파일: test_sync.py 프로젝트: pi-dal/pdm
def test_sync_packages_with_sections(project, working_set):
    project.add_dependencies({"requests": parse_requirement("requests")})
    project.add_dependencies({"pytz": parse_requirement("pytz")}, "date")
    actions.do_lock(project)
    actions.do_sync(project, sections=["date"])
    assert "pytz" in working_set
    assert "requests" in working_set
    assert "idna" in working_set
예제 #4
0
파일: test_sync.py 프로젝트: pi-dal/pdm
def test_sync_production_packages(project, working_set, is_dev):
    project.add_dependencies({"requests": parse_requirement("requests")})
    project.add_dependencies({"pytz": parse_requirement("pytz")},
                             "dev",
                             dev=True)
    actions.do_lock(project)
    actions.do_sync(project, dev=is_dev)
    assert "requests" in working_set
    assert ("pytz" in working_set) == is_dev
예제 #5
0
def test_sync_packages_with_all_dev(project, working_set):
    project.add_dependencies({"requests": parse_requirement("requests")})
    project.add_dependencies({"pytz": parse_requirement("pytz")}, "date", True)
    project.add_dependencies({"pyopenssl": parse_requirement("pyopenssl")}, "ssl", True)
    actions.do_lock(project)
    actions.do_sync(project, dev=True, default=False)
    assert "requests" not in working_set
    assert "idna" not in working_set
    assert "pytz" in working_set
    assert "pyopenssl" in working_set
예제 #6
0
def install(project, sections, dev, default, lock):
    if lock:
        if not project.lockfile_file.exists():
            context.io.echo(
                "Lock file does not exist, trying to generate one...")
            actions.do_lock(project, strategy="all")
        elif not project.is_lockfile_hash_match():
            context.io.echo(
                "Lock file hash doesn't match pyproject.toml, regenerating...")
            actions.do_lock(project, strategy="reuse")
    actions.do_sync(project, sections, dev, default, False, False)
예제 #7
0
파일: test_sync.py 프로젝트: pawamoy/pdm
def test_sync_packages_with_group_all(project, working_set):
    project.add_dependencies({"requests": parse_requirement("requests")})
    project.add_dependencies({"pytz": parse_requirement("pytz")}, "date")
    project.add_dependencies({"pyopenssl": parse_requirement("pyopenssl")},
                             "ssl")
    actions.do_lock(project)
    actions.do_sync(project, groups=[":all"])
    assert "pytz" in working_set
    assert "requests" in working_set
    assert "idna" in working_set
    assert "pyopenssl" in working_set
예제 #8
0
파일: install.py 프로젝트: uranusjr/pdm
    def handle(self, project: Project, options: argparse.Namespace) -> None:
        if not project.meta and click._compat.isatty(sys.stdout):
            actions.ask_for_import(project)

        if options.lock:
            if not project.lockfile_file.exists():
                stream.echo(
                    "Lock file does not exist, trying to generate one...")
                actions.do_lock(project, strategy="all")
            elif not project.is_lockfile_hash_match():
                stream.echo(
                    "Lock file hash doesn't match pyproject.toml, regenerating..."
                )
                actions.do_lock(project, strategy="reuse")
        actions.do_sync(project, options.sections, options.dev,
                        options.default, False, False)
예제 #9
0
파일: install.py 프로젝트: leibowitz/pdm
    def handle(self, project: Project, options: argparse.Namespace) -> None:
        if not project.meta and click._compat.isatty(sys.stdout):
            actions.ask_for_import(project)

        if options.lock:
            if not project.lockfile_file.exists():
                project.core.ui.echo(
                    "Lock file does not exist, trying to generate one...")
                actions.do_lock(project, strategy="all")
            elif not project.is_lockfile_compatible():
                project.core.ui.echo(
                    "Lock file version is not compatible with PDM, regenerate..."
                )
                actions.do_lock(project, strategy="all")
            elif not project.is_lockfile_hash_match():
                project.core.ui.echo(
                    "Lock file hash doesn't match pyproject.toml, regenerating..."
                )
                actions.do_lock(project, strategy="reuse")
        actions.do_sync(
            project,
            sections=options.sections,
            dev=options.dev,
            default=options.default,
            no_editable=options.no_editable,
            no_self=options.no_self,
        )
예제 #10
0
파일: test_sync.py 프로젝트: pawamoy/pdm
def test_sync_with_index_change(project, index):
    project.meta["requires-python"] = ">=3.6"
    project.meta["dependencies"] = ["future-fstrings"]
    project.write_pyproject()
    index["future-fstrings"] = """
    <html>
    <body>
        <h1>future-fstrings</h1>
        <a href="http://fixtures.test/artifacts/future_fstrings-1.2.0.tar.gz\
#sha256=6cf41cbe97c398ab5a81168ce0dbb8ad95862d3caf23c21e4430627b90844089">
        future_fstrings-1.2.0.tar.gz
        </a>
    </body>
    </html>
    """.encode()
    actions.do_lock(project)
    file_hashes = project.lockfile["metadata"]["files"][
        "future-fstrings 1.2.0"]
    assert [e["hash"] for e in file_hashes] == [
        "sha256:6cf41cbe97c398ab5a81168ce0dbb8ad95862d3caf23c21e4430627b90844089"
    ]
    # Mimic the CDN inconsistences of PyPI simple index. See issues/596.
    del index["future-fstrings"]
    actions.do_sync(project, no_self=True)
예제 #11
0
def lock(project):
    actions.do_lock(project)
예제 #12
0
파일: test_sync.py 프로젝트: pi-dal/pdm
def test_sync_without_self(project, working_set):
    project.add_dependencies({"requests": parse_requirement("requests")})
    actions.do_lock(project)
    actions.do_sync(project, no_self=True)
    assert project.meta.name not in working_set
예제 #13
0
파일: lock.py 프로젝트: danieleades/pdm
 def handle(self, project: Project, options: argparse.Namespace) -> None:
     actions.do_lock(project, refresh=options.refresh)