Commit Graph

1037 Commits

Author SHA1 Message Date
Ahmed Ilyas a6416aa450
Fix CLI reference URLs to subcommands (#5722)
## Summary

Currently all of these links end up 404-ed. I've added a `#` to fix the
URLs.

<img width="653" alt="Screenshot 2024-08-02 at 12 34 22"
src="https://github.com/user-attachments/assets/9b66adcc-431c-441a-8f4f-1b579472fdce">

## Test Plan

Checked manually.
2024-08-02 07:35:33 -05:00
Ahmed Ilyas ff9f3dede1
Support build constraints (#5639)
## Summary

Partially resolves #5561. Haven't added overrides support yet but I can
add it tomorrow if the current approach for constraints is ok.

## Test Plan

`cargo test`

Manually checked trace logs after changing the constraints.
2024-08-02 02:15:58 +00:00
Zanie Blue b14945a7b1
Bump version to 0.2.33 (#5712) 2024-08-01 21:39:17 +00:00
Zanie Blue 6797caccdb
Update top-level command descriptions (#5706)
Addresses feedback in https://github.com/astral-sh/uv/pull/5700
2024-08-01 20:29:26 +00:00
konsti 78d4045729
Don't use equals signs for cli args with value (#5704)
Use a consistent style for cli arguments with a value, e.g.
`--resolution lowest`, not `--resolution=lowest`.
2024-08-01 14:17:30 -05:00
Zanie Blue 34f657c964
Unhide the experimental top-level commands (#5700) 2024-08-01 14:06:07 -05:00
Zanie Blue 0f30c69624
Move settings reference to reference section (#5689)
Joining #5685 in a dedicated reference section
2024-08-01 16:20:30 +00:00
Zanie Blue f107406727
Generate CLI reference for documentation (#5685)
Loosely based on [Cargo's
format](https://github.com/rust-lang/cargo/blob/master/src/doc/src/commands/cargo-build.md)

<img width="896" alt="Screenshot 2024-08-01 at 9 44 03 AM"
src="https://github.com/user-attachments/assets/7c016bb3-2b54-46af-8ea8-ce82e07a0e30">

Future work includes:

- Grouping options
- Enforcing some sort of specific command ordering
- Showing possible values for enums
- Adding "long_about" to commands for more context
2024-08-01 16:04:16 +00:00
Zanie Blue df6106f5bf
Use "uv" for title of index instead of "Introduction" (#5677)
<img width="807" alt="Screenshot 2024-07-31 at 5 12 48 PM"
src="https://github.com/user-attachments/assets/8a3cc824-c242-4688-a7d9-5b88198a6b94">
vs
<img width="807" alt="Screenshot 2024-07-31 at 5 13 21 PM"
src="https://github.com/user-attachments/assets/04f77771-94c3-4d2e-81d2-2db63aa649bd">
2024-07-31 18:24:55 -05:00
Zanie Blue b0e37859ed
Bold active nav links for accessibility (#5673)
Before
<img width="412" alt="Screenshot 2024-07-31 at 3 47 38 PM"
src="https://github.com/user-attachments/assets/d95ebb62-079b-4e20-964c-9876b5978e4c">
After
<img width="412" alt="Screenshot 2024-07-31 at 3 47 21 PM"
src="https://github.com/user-attachments/assets/a658d46a-3eeb-4f00-8952-d4c1dd91afe6">
2024-07-31 16:16:48 -05:00
Zanie Blue ef84380954
Add documentation for caching the uv cache in GHA (#5663)
Related to https://github.com/astral-sh/uv/issues/5409
2024-07-31 11:38:54 -05:00
Zanie Blue 8d14a4cb4f
Simplify GHA `UV_SYSTEM_PYTHON` examples (#5659) 2024-07-31 10:49:40 -05:00
Zanie Blue 22d152192d
Improvements to the dependency concept doc (#5658) 2024-07-31 15:44:25 +00:00
Zanie Blue 37a60a57e8
Prompt an early jump to the feature overview during first steps (#5655)
Addressing some feedback about the first-steps covering the help and
version commands.

I'm not sure what else to do here since the first steps with uv are very
dependent on the features you need.
2024-07-31 10:13:04 -05:00
Zanie Blue 0c680824ca
Omit the nav bar title when it has no use (#5316)
Turns out this is needed for navigation on mobile, but useless on larger
screens.

Closes #5130

<img width="1551" alt="Screenshot 2024-07-22 at 5 47 49 PM"
src="https://github.com/user-attachments/assets/2173549e-e65d-4691-be83-5e3bf0191dd5">
<img width="1551" alt="Screenshot 2024-07-22 at 5 48 02 PM"
src="https://github.com/user-attachments/assets/81012ba8-ce85-4276-8ffa-5c7ef556c389">
<img width="1551" alt="Screenshot 2024-07-22 at 5 48 08 PM"
src="https://github.com/user-attachments/assets/ecf8fcd7-e5d4-45c4-8d46-d09d91a8bbe9">
2024-07-31 10:08:22 -05:00
eth3lbert 89947681d1
Improve copy of console command examples (#5397)
## Summary

This PR improves the copy of the console command example by:

- Preventing the selection of generic prompts and generic output
- Lazily setting copy content by leveraging intersection observer

Most of the changes are inspired by
https://github.com/opensafely/documentation/pull/1461

Some other useful refs:
- https://github.com/squidfunk/mkdocs-material/issues/3647
-
https://mkdocstrings.github.io/recipes/#prevent-selection-of-prompts-and-output-in-python-code-blocks

Resolves #5355

## Test Plan

- 
  ``` shell-session
  mkdocs serve -f mkdocs.public.yml
  ``` 
- Navigate to http://localhost:8000/uv/first-steps/#viewing-the-version
- Try clicking the copy button
- Try copying by selecting the content

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-07-31 14:52:02 +00:00
Zanie Blue 0b8b0e0cbe
Drop badges from docs landing (#5617)
There has been opposition to these, we can have a dedicated community
page instead
2024-07-31 09:36:01 -05:00
Zanie Blue fbff1baf33
Improvements to the Python version concepts documentation (#5638)
Depends on https://github.com/astral-sh/uv/pull/5637
2024-07-31 08:40:50 -05:00
Zanie Blue 7ef830460e
Replace `--python-preference installed` with `managed` (#5637)
Collapses the previous default into "managed" and makes the "managed"
behavior match "installed". People should use "only-managed" if they
want that behavior, it seems overly complicated otherwise.
2024-07-31 08:40:39 -05:00
Zanie Blue cbb13e6584
Improve the project guide (#5626) 2024-07-30 18:26:23 -05:00
Charlie Marsh 38c232e466
Bump version to v0.2.32 (#5641) 2024-07-30 18:56:39 -04:00
Charlie Marsh 5d727cb0af
Deprecate the `--isolated` flag (#5466)
## Summary

This PR deprecates the `--isolated` flag. The treatment varies across
the APIs:

- For non-preview APIs, we warn but treat it as equivalent to
`--no-config`.
- For preview APIs, we warn and ignore it, with two exceptions...
- For `tool run` and `run` specifically, we don't even warn, because we
can't differentiate the command-specific `--isolated` from the global
`--isolated`.
2024-07-30 22:40:38 +00:00
Zanie Blue f971631adf
Wrap documentation at 100 characters (#5635)
Basically sick of dealing with mixed formatting here. Going with the
number at
7c08e61b73/.editorconfig (L20)
2024-07-30 22:17:58 +00:00
Zanie Blue b081425a77
Improvements to the project concept docs (#5634) 2024-07-30 22:11:52 +00:00
Zanie Blue 8545ae2312
Rename more use of "lock file" to "lockfile" (#5629) 2024-07-30 19:09:43 +00:00
Charlie Marsh 3e7b9fb2ee
Add documentation for cache clearing (#5517)
See: https://github.com/astral-sh/uv/pull/5391#issuecomment-2248757705
2024-07-30 09:38:04 -05:00
Charlie Marsh 48162de974
Bump version to v0.2.31 (#5568) 2024-07-29 14:06:20 -04:00
Mark Ture 12e92b7718
Fix typo in projects.md (#5523) 2024-07-28 21:05:26 +01:00
Charlie Marsh 6901a14aa0
Bump version to v0.2.30 (#5486) 2024-07-26 13:36:05 -04:00
Zanie Blue 6eb8f85668
Update documentation sections (#5452)
Reframes "the low-level interface" as "the pip interface"
Adds indexes to all sections
Renames "commercial indexes" to "alternative indexes"
2024-07-25 12:37:22 -05:00
InSync d17b18ee1e
Minor consistency fixes for code blocks (#5437)
...as well as some typo fixes. I verified the changes manually.
2024-07-25 09:23:22 -05:00
Charlie Marsh d0919329fd
Make `--reinstall` imply `--refresh` (#5425)
## Summary

It's hard for me to imagine a scenario in which a user passed
`--reinstall`, but wanted us to keep respecting cached data for a
package. For example, to actually "rebuild and reinstall" an editable
today, you have to pass both `--reinstall` and `--refresh`.

This PR makes `--reinstall` imply `--refresh`, so we always validate
that the cached data is fresh.

Closes https://github.com/astral-sh/uv/issues/5424.
2024-07-25 09:45:58 -04:00
Zanie Blue 35b6726df5
Bump version to 0.2.29 (#5431) 2024-07-24 22:23:34 +00:00
Zanie Blue 3581e27cdf
Bundle of docs changes (#5426) 2024-07-24 17:10:33 -05:00
Zanie Blue ac81036aa9
Use logo in documentation (#5421)
Before
<img width="728" alt="Screenshot 2024-07-24 at 3 12 28 PM"
src="https://github.com/user-attachments/assets/2ad83857-a2a5-4c33-9fb2-f2580ccb10af">

After
<img width="728" alt="Screenshot 2024-07-24 at 3 11 07 PM"
src="https://github.com/user-attachments/assets/dd209d37-3761-4b28-8ca9-9bf7546236a8">

Alternatively
<img width="728" alt="Screenshot 2024-07-24 at 3 10 45 PM"
src="https://github.com/user-attachments/assets/88f9cc62-71ec-457c-b946-3168502d46c3">
2024-07-24 15:45:10 -05:00
Ahmed Ilyas b304d66719
Use env variables in Github Actions docs (#5411)
## Summary

Use [Github
Actions](https://docs.github.com/en/actions/learn-github-actions/variables#defining-environment-variables-for-a-single-workflow)
`env` to define environment variables.

After:
<img width="751" alt="Screenshot 2024-07-24 at 17 24 23"
src="https://github.com/user-attachments/assets/9c7861f0-e95d-4778-96c0-261df539a0bd">
2024-07-24 14:37:52 -05:00
Charlie Marsh 41b699e7ac
Add warning to `--link-mode=symlink` documentation (#5387) 2024-07-23 22:35:56 +00:00
Zanie Blue 3822a43560
Fix blurring from nav title box shadow (#5374)
Fixes blur noted in https://github.com/astral-sh/uv/pull/5316 but
doesn't drop the title entirely.
https://github.com/astral-sh/uv/pull/5316 is my preferred design, if the
implementation was cost-free.


<img width="1259" alt="Screenshot 2024-07-23 at 3 53 48 PM"
src="https://github.com/user-attachments/assets/6f9b828b-884f-447d-8508-ba4023152e2f">

(nothing to see at the rest of the breakpoints >1220)

<img width="1259" alt="Screenshot 2024-07-23 at 3 53 56 PM"
src="https://github.com/user-attachments/assets/b892cd76-cd91-4e78-b8c8-58e16a8b1130">
2024-07-23 17:33:57 -05:00
Zanie Blue 499b035c8e
Increase padding between each nav section (#5373)
<img width="1259" alt="Screenshot 2024-07-23 at 3 46 45 PM"
src="https://github.com/user-attachments/assets/dae4df4e-cea3-41a2-842c-652b4f9ca014">
<img width="1259" alt="Screenshot 2024-07-23 at 3 46 53 PM"
src="https://github.com/user-attachments/assets/b0751c4b-80bb-4344-816c-e23d5e45f0e4">
<img width="1259" alt="Screenshot 2024-07-23 at 3 46 57 PM"
src="https://github.com/user-attachments/assets/1cea6223-2757-49a0-9b87-1961f9bbd17b">
<img width="1259" alt="Screenshot 2024-07-23 at 3 47 10 PM"
src="https://github.com/user-attachments/assets/a41061c6-f198-45ca-91b6-423f46375089">
2024-07-23 17:31:12 -05:00
Jo 7ddf67a72b
Add PyPy finder (#5337)
## Summary

This PR adds PyPy finder and adds PyPy to uv managed Python versions.

## Test Plan

```console
$ cargo run -- python install
```
2024-07-23 14:58:04 -05:00
Zanie Blue 3a85353707
Bump version to 0.2.28 (#5363) 2024-07-23 14:04:55 -05:00
Zanie Blue dac696e950
Bundle of documentation changes (#5307)
Following #5239
2024-07-23 13:29:59 -05:00
Zanie Blue 49ea4a7a91
Reduce spacing between nav items (#5310)
**Before**
<img width="1475" alt="Screenshot 2024-07-22 at 3 56 46 PM"
src="https://github.com/user-attachments/assets/a9c6b929-0569-45a6-9840-d49d955dd55a">

--------

**After**
<img width="1475" alt="Screenshot 2024-07-22 at 3 56 38 PM"
src="https://github.com/user-attachments/assets/98c85e03-fe62-4894-99f6-a49293eacf0b">
2024-07-23 11:50:00 -05:00
Zanie Blue 6492f1a897
A bundle of documentation changes (#5239)
I just need to iterate on everything and we're not doing a lot of
reviews anyway.

Closes #5234 
Closes #5191
2024-07-22 17:15:11 +00:00
Ian Wilkinson e809bc339b
Correct guide typo (#5245)
## Summary

Typo correction for the tools guide.

Fixes #5243
2024-07-20 09:10:44 -04:00
Zanie Blue 833097b93f
Bump version to 0.2.27 (#5230) 2024-07-19 22:06:49 +00:00
Zanie Blue 583a6e57f2
Write tools concept doc (#5207) 2024-07-19 14:24:43 -05:00
Mathieu Kniewallner f2e2825d1b
docs(settings): bunch of fixes and improvements (#5177)
## Summary

Spotted some issues in the settings documentation, and room for small
improvements by linking to PEPs/RFCs.

Also updating contribution documentation to mention that it's necessary
to enable the virtual environment before running `mkdocs serve`.

## Test Plan

Running documentation locally.
2024-07-19 10:32:21 -04:00
FishAlchemist b1a350cb9f
Added a way to inspect installation scripts on Powershell(Windows) (#5157)
## Summary
### command
 ```powershell
    powershell -c "irm https://astral.sh/uv/install.ps1 | more"
 ```
Add a method to inspect installation script files that works on Windows,
it may not work on other platforms supported by PowerShell. <br>
Other platforms information:
[PowerShell differences on non-Windows platforms / General Unix
interoperability
changes](https://learn.microsoft.com/en-us/powershell/scripting/whats-new/unix-support?view=powershell-7.4#general-unix-interoperability-changes)
[Differences between Windows PowerShell 5.1 and PowerShell 7.x / Removal
of the more
function](https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.4#removal-of-the-more-function)
<!-- What's the purpose of the change? What does it do, and why? -->

## Test Plan
**terminal**
* Powershell Version: 5.1.22621.3880 (Windows)

![image](https://github.com/user-attachments/assets/418c10a4-f672-4c79-9d3b-7c58822316dd)
* Powershell Version: 7.4.3 (Windows)

![image](https://github.com/user-attachments/assets/9ee73310-a244-4320-a092-df8c6f0745c5)

## Result (Website)

![image](https://github.com/user-attachments/assets/3faede7d-4004-4e2c-b35a-80147532019b)

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-07-19 14:28:46 +00:00
Zanie Blue 149c612026
Touchups to tools guide (#5202) 2024-07-19 14:26:54 +00:00
Danny ef56df26bf
Support `--link-mode=symlink` (#5208)
## Summary

Addressing this [issue](https://github.com/astral-sh/uv/issues/5147) by
adding the capability for Symbolic linking as a link mode when
installing or syncing dependencies.
2024-07-19 08:41:18 -04:00
Ibraheem Ahmed 360079fd05
Write project guide (#5195)
## Summary

Write the project guide that was added in
https://github.com/astral-sh/uv/pull/5135.

I tried to expand on details as much as I felt was necessary for someone
new to python package managers (which was myself a couple months ago).
2024-07-18 19:45:25 -05:00
Zanie Blue 61a81da760
Move integration guide docs and edit Azure integration guide (#5117) 2024-07-18 03:47:32 +00:00
Charlie Marsh 82d94838cb
Implement a `--verify-hashes` hash-checking mode (#4007)
## Summary

This is an alternative to `--require-hashes` which will validate a hash
if it's present, but ignore requirements that omit hashes or are absent
from the lockfile entirely.

So, e.g., transitive dependencies that are missing will _not_ error; nor
will dependencies that are included but lack a hash.

Closes https://github.com/astral-sh/uv/issues/3305.
2024-07-17 21:25:31 +00:00
Charlie Marsh 70c1e5926a
Fix reference to `projects.md` (#5154) 2024-07-17 13:45:48 -04:00
Charlie Marsh fe403576c5
Bump version to v0.2.26 (#5149) 2024-07-17 12:51:11 -04:00
Charlie Marsh a191f84929
Autogenerate possible values for enums in reference documentation (#5137)
## Summary

For example:

![Screenshot 2024-07-16 at 7 44
10 PM](https://github.com/user-attachments/assets/73ce16ba-eb0e-43c4-a741-65a54637452f)

Closes https://github.com/astral-sh/uv/issues/5129.
2024-07-17 12:37:33 -04:00
Zanie Blue 67050932fa
We will find your Python (#5145)
https://github.com/astral-sh/uv/pull/5133#discussion_r1681179083
2024-07-17 14:46:12 +00:00
Zanie Blue 4027d0797e
Add install notes for anti-curl | sh users (#5131)
Co-authored-by: Andrew Gallant <andrew@astral.sh>
2024-07-17 09:29:16 -05:00
Zanie Blue 690a7b1cee
Improve PyPI install docs (#5118) 2024-07-17 09:29:02 -05:00
Zanie Blue b1501e64e2
Touch-ups to the Python installation guide (#5133) 2024-07-17 09:28:55 -05:00
Mathieu Kniewallner c9637f00f0
docs: bunch of fixes and improvements (#5136)
## Summary

A bunch of fixes and improvements on different parts of the
documentation. For Docker documentation changes, links to the relevant
documentations have been included in the commit messages.
2024-07-16 20:41:45 -04:00
Zanie Blue 177bbaa8c0
Add stubs for the project documentation (#5135)
@ibraheemdev is going to do some work on these, I just sketched out some
parts to try to understand how things will fit together.
2024-07-16 17:02:54 -05:00
Mathieu Kniewallner e28d128388
docs: update dev dependencies (#5132)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

While playing out with `uv` preview features, I've noticed 2 issues with
the development dependencies documentation:
- it is mentioned that the feature is not implemented, but it looks like
it actually is
- despite what is said, it doesn't seem that it's possible to use a map
for development dependencies yet:
  ```toml
  [tool.uv.dev-dependencies]
  test = [
      "pytest >=8.1.1,<9"
  ]
  lint = [
      "mypy >=1,<2"
  ]

  [tool.uv]
  default-dev-dependencies = ["test"]
  ```

  ```console
  $ uv sync --preview
  error: Failed to parse: `pyproject.toml`
    Caused by: TOML parse error at line 32, column 1
     |
  32 | [tool.uv.dev-dependencies]
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
  invalid type: map, expected a sequence
  ```
2024-07-16 16:20:24 -05:00
Charlie Marsh 7211e62132
Add reference documentation for pip settings (#5125)
## Summary

Third part of https://github.com/astral-sh/uv/issues/5093.
2024-07-16 21:14:27 +00:00
Charlie Marsh f7c52fdbfb
Add reference documentation for global settings (#5123)
## Summary

Second part of: https://github.com/astral-sh/uv/issues/5093.
2024-07-16 20:50:04 +00:00
Charlie Marsh 616a61a244
Add reference documentation for resolver settings (#5122)
## Summary

First part of https://github.com/astral-sh/uv/issues/5093.

Remaining:

- Global settings
- `pip`-specific settings (some will be copied-over from here)
- Auto-generating the "Possible values" for enums
2024-07-16 16:39:22 -04:00
Zanie Blue ca85767aff
Reference the root requirements from the insiders requirements file (#5105)
Seems best not to duplicate these
2024-07-16 09:51:16 -05:00
Charlie Marsh 6d0e6eea6f
Fix depth of settings headers (#5103)
Closes https://github.com/astral-sh/uv/issues/5092.
2024-07-16 14:00:03 +00:00
Charlie Marsh f992532f78
Fix benchmark image in documentation (#5102) 2024-07-16 13:54:06 +00:00
Charlie Marsh e61a221fef
Migrate from MdBook to MkDocs (#5062)
## Summary

We want to have consistency between the Ruff and uv documentation for
the upcoming release. We don't love the Ruff docs, but we'd rather have
consistency and then work towards improving them both, rather than have
two very-different documentation sites that both have weaknesses.

The setup here is simpler than in Ruff as: (1) we don't yet generate any
docs from Rust and (2) we don't try to reuse the README in the uv
documentation (which adds a lot of complexity in Ruff). So the change
here is mostly a 1-to-1 port to MkDocs.

## Test Plan

![Screenshot 2024-07-14 at 9 49
15 PM](https://github.com/user-attachments/assets/8bfb5b06-08ff-4329-b368-d9087b78996e)
2024-07-15 22:22:07 +00:00
Zanie Blue 35b268a614
Add guide for tools (#4982)
Co-authored-by: Ibraheem Ahmed <ibraheem@ibraheem.ca>
2024-07-15 22:04:18 +00:00
Zanie Blue 1888520444
Add documentation for running scripts (#4968)
Co-authored-by: Ibraheem Ahmed <ibraheem@ibraheem.ca>
2024-07-15 21:59:39 +00:00
Charlie Marsh 41cd4bee58
Add a `generate-all` step and auto-generate `settings.md` (#5080)
## Summary

Ensures that `generate-all` generates both the JSON Schema and the
`settings.md` API reference.
2024-07-15 19:58:53 +00:00
Benjamin Hodgson a5deb43be8
Docs: Add guide for authenticating to Azure Artifacts (#4857)
## Summary

As discussed in #3542 - there has been some confusion about how to get
`uv` to work with ADO Artifacts so I'm adding a quick guide.

## Test Plan

Smoke-tested the examples on my machine.
2024-07-15 11:06:50 -05:00
Zanie Blue 42cb2541b5
Remove extra "project" docs files (#4977) 2024-07-10 17:38:13 -05:00
Zanie Blue 067b3ee666
Add some references to more details in the Python install guide (#4962) 2024-07-10 10:37:53 -05:00
Zanie Blue 5b6dffe522
Update "Python versions" documentation (#4943)
Replacing references to toolchains
2024-07-10 01:07:27 +00:00
Zanie Blue e01022d75b
Add Python installation guide (#4942)
Note some of this behavior does not exist yet.
2024-07-09 20:05:59 -05:00
Zanie Blue dd7da6af5f
Change "toolchain" to "python" (#4735)
Whew this is a lot.

The user-facing changes are:

- `uv toolchain` to `uv python` e.g. `uv python find`, `uv python
install`, ...
- `UV_TOOLCHAIN_DIR` to` UV_PYTHON_INSTALL_DIR`
- `<UV_STATE_DIR>/toolchains` to `<UV_STATE_DIR>/python` (with
[automatic
migration](https://github.com/astral-sh/uv/pull/4735/files#r1663029330))
- User-facing messages no longer refer to toolchains, instead using
"Python", "Python versions" or "Python installations"

The internal changes are:

- `uv-toolchain` crate to `uv-python`
- `Toolchain` no longer referenced in type names
- Dropped unused `SystemPython` type (previously replaced)
- Clarified the type names for "managed Python installations"
- (more little things)
2024-07-03 07:44:29 -05:00
Zanie Blue 12e12d066d
Restructure documentation sections to focus on new user experience (#4586)
Moving the preview features to top-level concepts and pushing the
pip-compatible interface down.

e.g.

<img width="291" alt="Screenshot 2024-06-27 at 7 03 48 AM"
src="https://github.com/astral-sh/uv/assets/2586601/500ad97d-899d-4051-b59d-e74786b3a45f">
2024-07-02 11:44:45 -05:00
Zanie Blue f7fb5a4061
Add page for contributing to the docs (#4562) 2024-06-27 07:27:58 -05:00
Zanie Blue 1ee201da5a
Add structured documentation (#4426)
A ton of work remaining here, pushing so I can preview things rendered.

Here's the [latest rendered
documentation](https://astral-sh.github.io/uv/).
2024-06-26 11:28:42 -05:00
Zanie Blue e89196f969
Add documentation for using uv in a Docker image (#4433)
[Rendered](https://github.com/astral-sh/uv/blob/zb/docker/docs/docker.md)
2024-06-21 09:49:34 -05:00
Nyakku Shigure 9ef652d234
Fix PEP 508 link in preview doc `specifying_dependencies` (#4158)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->

Fix PEP 508 link.

## Test Plan

See preview
https://github.com/SigureMo/uv/blob/fix-pep508-link-in-preview-doc/docs/specifying_dependencies.md
2024-06-08 08:54:02 -05:00
konsti 1eb968fa73
Draft for user docs for workspaces (#3866)
These docs are not yet meant to be consumed by end users, for now they
allow sharing the state of workspace support in terms of features that
are relevant to users, and to gather feedback on the design. We can
progressively update this doc as workspace support matures.
2024-06-01 16:13:11 -04:00
konsti 4f87edbe66
Add basic `tool.uv.sources` support (#3263)
## Introduction

PEP 621 is limited. Specifically, it lacks
* Relative path support
* Editable support
* Workspace support
* Index pinning or any sort of index specification

The semantics of urls are a custom extension, PEP 440 does not specify
how to use git references or subdirectories, instead pip has a custom
stringly format. We need to somehow support these while still stying
compatible with PEP 621.

## `tool.uv.source`

Drawing inspiration from cargo, poetry and rye, we add `tool.uv.sources`
or (for now stub only) `tool.uv.workspace`:

```toml
[project]
name = "albatross"
version = "0.1.0"
dependencies = [
  "tqdm >=4.66.2,<5",
  "torch ==2.2.2",
  "transformers[torch] >=4.39.3,<5",
  "importlib_metadata >=7.1.0,<8; python_version < '3.10'",
  "mollymawk ==0.1.0"
]

[tool.uv.sources]
tqdm = { git = "https://github.com/tqdm/tqdm", rev = "cc372d09dcd5a5eabdc6ed4cf365bdb0be004d44" }
importlib_metadata = { url = "https://github.com/python/importlib_metadata/archive/refs/tags/v7.1.0.zip" }
torch = { index = "torch-cu118" }
mollymawk = { workspace = true }

[tool.uv.workspace]
include = [
  "packages/mollymawk"
]

[tool.uv.indexes]
torch-cu118 = "https://download.pytorch.org/whl/cu118"
```

See `docs/specifying_dependencies.md` for a detailed explanation of the
format. The basic gist is that `project.dependencies` is what ends up on
pypi, while `tool.uv.sources` are your non-published additions. We do
support the full range or PEP 508, we just hide it in the docs and
prefer the exploded table for easier readability and less confusing with
actual url parts.

This format should eventually be able to subsume requirements.txt's
current use cases. While we will continue to support the legacy `uv pip`
interface, this is a piece of the uv's own top level interface. Together
with `uv run` and a lockfile format, you should only need to write
`pyproject.toml` and do `uv run`, which generates/uses/updates your
lockfile behind the scenes, no more pip-style requirements involved. It
also lays the groundwork for implementing index pinning.

## Changes

This PR implements:
* Reading and lowering `project.dependencies`,
`project.optional-dependencies` and `tool.uv.sources` into a new
requirements format, including:
  * Git dependencies
  * Url dependencies
  * Path dependencies, including relative and editable
* `pip install` integration
* Error reporting for invalid `tool.uv.sources`
* Json schema integration (works in pycharm, see below)
* Draft user-level docs (see `docs/specifying_dependencies.md`)

It does not implement:
* No `pip compile` testing, deprioritizing towards our own lockfile
* Index pinning (stub definitions only)
* Development dependencies
* Workspace support (stub definitions only)
* Overrides in pyproject.toml
* Patching/replacing dependencies

One technically breaking change is that we now require user provided
pyproject.toml to be valid wrt to PEP 621. Included files still fall
back to PEP 517. That means `pip install -r requirements.txt` requires
it to be valid while `pip install -r requirements.txt` with `-e .` as
content falls back to PEP 517 as before.

## Implementation

The `pep508` requirement is replaced by a new `UvRequirement` (name up
for bikeshedding, not particularly attached to the uv prefix). The still
existing `pep508_rs::Requirement` type is a url format copied from pip's
requirements.txt and doesn't appropriately capture all features we
want/need to support. The bulk of the diff is changing the requirement
type throughout the codebase.

We still use `VerbatimUrl` in many places, where we would expect a
parsed/decomposed url type, specifically:
* Reading core metadata except top level pyproject.toml files, we fail a
step later instead if the url isn't supported.
* Allowed `Urls`.
* `PackageId` with a custom `CanonicalUrl` comparison, instead of
canonicalizing urls eagerly.
* `PubGrubPackage`: We eventually convert the `VerbatimUrl` back to a
`Dist` (`Dist::from_url`), instead of remembering the url.
* Source dist types: We use verbatim url even though we know and require
that these are supported urls we can and have parsed.

I tried to make improve the situation be replacing `VerbatimUrl`, but
these changes would require massive invasive changes (see e.g.
https://github.com/astral-sh/uv/pull/3253). A main problem is the ref
`VersionOrUrl` and applying overrides, which assume the same
requirement/url type everywhere. In its current form, this PR increases
this tech debt.

I've tried to split off PRs and commits, but the main refactoring is
still a single monolith commit to make it compile and the tests pass.

## Demo

Adding
d1ae3b85d5/pyproject.json
as json schema (v7) to pycharm for `pyproject.toml`, you can try the IDE
support already:


![pycharm](https://github.com/astral-sh/uv/assets/6826232/599082c7-6be5-41c1-a3cd-516092382f8d)


[dove.webm](https://github.com/astral-sh/uv/assets/6826232/c293c272-c80b-459d-8c95-8c46a8d198a1)
2024-05-03 21:10:50 +00:00