Thanks for the quick reply! We'll await the next release then.
Posts made by e.rotteveel_1850
-
RE: Conda feeds: some packages not visible in WebGUIposted in Support
-
Conda feed: extension in WebGUI and download-URL incorrectposted in Support
In Proget 2024.25, when I upload the "pint" package from this webshare:
https://nextcloud.marin.nl/index.php/s/nmPCLszf6PNMoQCIt shows up in the WebGUI with a
*.tar.bz2extension rather than with a.condaextension. The file I upload - as you can see in the webshare folder - has the.condaextension (and it should stay that way when uploaded to ProGet).This is only a problem with the WebGUI I think, because when I use
conda searchto search for thispintpackage on my channel, I get the proper URL:
But in the WebGUI it looks like this:

And when clicking on the file to download, it will try to download
http://proget.marin.local/conda/conda_erik_2/noarch/pint-0.24.4-pyhd8ed1ab_1.tar.bz2which does not work. But when I change the extension to.condait will work. -
Conda feeds: some packages not visible in WebGUIposted in Support
We have proget 2024.25.
I have a conda feed where I uploaded the package files in this folder:https://nextcloud.marin.nl/index.php/s/nmPCLszf6PNMoQC
However, only the "pint" package is visible in the WebGUI, the others are not. My feeling is that there's something about the version normalization that prevents the packages from showing up in the GUI.
The
repodata.jsonfiles in thewin-64andnoarchsubfolders look OK though. So when using the Proget channels for installing packages with conda, all seems to work fine.repodata.json in noarch subfolder:
{"info":{"subdir":"noarch"},"packages":{},"packages.conda":{"pint-0.24.4-pyhd8ed1ab_1.conda":{"build":"pyhd8ed1ab_1","build_number":1,"depends":["flexcache \u003E=0.3","flexparser \u003E=0.4","platformdirs \u003E=2.1.0","python \u003E=3.9","typing_extensions \u003E=4.0.0"],"constrains":["numpy \u003E=1.23"],"license":"BSD-3-Clause","license_family":"BSD","md5":"a566694ac0ab8f25e7f40a5d24070a1a","name":"pint","sha256":"4595b54c19a46a8fc320d01e71000cee8bbfa47d9494fd2c8041d5c86f721b09","size":230217,"subdir":"noarch","summary":"Operate and manipulate physical quantities in Python","timestamp":1733663596173,"version":"0.24.4"},"tzdata-2024b-h04d1e81_0.conda":{"build":"h04d1e81_0","build_number":0,"depends":[],"constrains":[],"license":"CC-PDDC OR BSD-3-Clause","license_family":"BSD","md5":"9be694715c6a65f9631bb1b242125e9d","name":"tzdata","sha256":"9fdd287b55be4c475789a69d3b94cdb73f756583a6d7306da1706e43eee573da","size":117432,"subdir":"noarch","summary":"The Time Zone Database (called tz, tzdb or zoneinfo)","timestamp":1728062827250,"version":"2024b"}},"repodata_version":1}repodata.json in win-64 subfolder:
{"info":{"subdir":"win-64"},"packages":{},"packages.conda":{"re2-2022.04.01-hd77b12b_0.conda":{"build":"hd77b12b_0","build_number":0,"depends":["vc \u003E=14.1,\u003C15.0a0","vs2015_runtime \u003E=14.16.27012,\u003C15.0a0"],"constrains":[],"license":"BSD-3-Clause","md5":"6c4e835222173ecd5bf0a39896690470","name":"re2","sha256":"367717268b970471cd38cc0435fcede36b1cc74343e3245c48d05239f6b94479","size":382871,"subdir":"win-64","summary":"RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression\nengines like those used in PCRE, Perl, and Python. It is a C\u002B\u002B library.\n","timestamp":1652432364793,"version":"2022.04.01"}},"repodata_version":1}Thanks for looking into this!
-
RE: Conda: Add "track_features" and "app_own_environment" to repodata.json output(s)posted in Support
Thanks for putting this on the issue tracker!
As for "app_own_environment": I only found it in the sourcecode of Anaconda Navigator - a GUI package manager for conda environments. It seems a useful feature but I cannot find any other package that uses it.
So if you cannot add "app_own_environment" without having extra info, you can just leave it out. It was just a nice-to-have.
Looking forward to a new version with "track_features" added to the index output!
-
RE: Conda: Add "track_features" and "app_own_environment" to repodata.json output(s)posted in Support
A good example for "track_features" is this package: https://anaconda.org/main/_low_priority, which directly explains the idea of "track_features": packages that "activate" features (either because they have "track_features" specified themselves or because their dependencies do so) will get a lower priority. The attribute is useful when you have a GPU build and a CPU build of the same package, and you want to prioritize one over the other.
In our case, we wish to do exactly that: use track_features to prioritize a CPU version of a certain package over a GPU version because the former runs on any PC, while the latter only works with a proper GPU available.
Some additional reading material is here: https://docs.conda.io/projects/conda/en/stable/user-guide/concepts/packages.html#track-features
In any case, the "track_features" attribute can be found in the
index.jsonfile that is in a conda package.About the
meta.yaml: that is a specification/configuration when building a package. The build process then generates theindex.jsonfile (and theabout.json) and puts it in the package (under theinfofolder) for repositories to extract useful information from. I think that for ProGet, theindex.jsonis more important than theabout.json.Finally, this method gives a quite complete overview of all keys that may be in the index.json. They are not all neccessarily there, though. Here is the method/code:
https://github.com/conda/conda-build/blob/8df6493565dae517165754bd75d7d74de1522dc3/conda_build/metadata.py#L1803Hope this helps!
-
Conda: Add "track_features" and "app_own_environment" to repodata.json output(s)posted in Support
First of all; we've been using ProGet for our more-and-more internal package distribution for more than a year now, and pretty happy about it!
I recently tried to add some more metadata to a package, but two items are not taken over by ProGet: "track_features" and "app_own_environment". The first is simply a string, the second is a boolean. Both are available in a conda package's "index.json" file.
Can these be added? Thanks!
-
RE: Conda feed not generating repodata.json for win-64 subdirposted in Support
Sorry for my late reply, but we have since installed version 2023.16 and repodata.json works perfectly fine now! Thanks for including this in your updates.
-
Last-Modified Header on conda-feed channeldata.json & repodata.json incorrectposted in Support
Conda uses the "If-Modified-Since" header to know if the repodata should be downloaded (or not), but it seems the ProGet server does not provide the correct value for the "Last-Modified" response header.
I just uploaded a new package to a channel (both via API and a different one via manual upload), but the Last-Modified header says repodata.json (and channeldata.json) were last modified on February 23....
Thanks for looking into this!
We're currently on ProGet 2023.16 -
RE: Conda feed not generating repodata.json for win-64 subdirposted in Support
Thanks for the effort again!
I just tried with one of the numpy packages on the main conda channel:
https://repo.anaconda.com/pkgs/main/win-64/numpy-1.23.5-py39h6917f2d_1.tar.bz2And I get the same problem with the
win-64/repodata.jsonURL.It went okay with one of our own packages though (but not with another). But even after comparing the metadata for both packages in detail I was not able to find problematic data or characters (none that I could think of).
Looking forward to the fix!

-
Cannot upload conda package with same version but different build via CURLposted in Support
Conda has the concept of package builds on top of package versions. I can image other package managers offer similar features. The idea is that you can build your package in different ways, linking it to different versions of binary libraries, for instance. You keep the same version because your source code is the same, but the build-string (conda generates a hash from your dependencies) differs, and you produce multiple packages.
This seems to work OK-ish now in ProGet. Using the manual upload in the WebGUI, I can upload a package with a version that is already on the server, but with a different build-number/string. But if I try this via CURL (and an API key), it does not work.
I uploaded some example files here:
https://nextcloud.marin.nl/index.php/s/7zBHSDx8QYLCzfJIf you create an empty feed, then first upload
proget-package-2023.8.0-1.tar.bz2, that will work fine using either CURL or manual upload in the WebGUI. But if you then try to uploadproget-package-2023.8.0-3.tar.bz2, it will work in the WebGUI but not via CURL. Via CURL, I get the error:The package win-64/proget-package.2023.8.0 already exists and the current user or service does not have the Feeds_OverwritePackage privilege.I am using a feed API Key with CURL (so
--user api:API_KEY) for which all permissions have been enabled. But there should be no message of 'overwriting' a package at all, because it is a different build.Thanks again for looking into this. If you need more information, I'm happy to help.
-
Conda feed not generating repodata.json for win-64 subdirposted in Support
First of all, @atripp : the constrains (i.e. optional dependencies) appears to be working. Thank you and your team! We're now trying to setup conda feeds with the 2023 version of ProGet and we can see the conda feed features improved!
However, the conda feed breaks down after uploading some packages. I cannot really find out what triggers the problem exactly, but I uploaded some example packages here:
https://nextcloud.marin.nl/index.php/s/7zBHSDx8QYLCzfJ
When I create a new, empty conda feed, the
repodata.jsonworks fine. I can go to one of:- https://my.proget.url/conda/my-conda-feed/win-64/repodata.json
- https://my.proget.url/conda/my-conda-feed/noarch/repodata.json
And they look fine. Of course there are no packages yet.
If I upload the
hello-inedo-triplepackage from my examples (via the manual upload in the WebGUI), the second link (noarch repodata.json) still works. But if I uploadproget-package-2023.8.0-1.tar.bz2, the win-64 repodata.json link responds with:Object reference not set to an instance of an object.Meanwhile, the channeldata.json (https://my.proget.url/conda/my-conda-feed/channeldata.json) works perfectly fine.
I hope you can look into this, thanks!
-
RE: Conda channels should also add the "constrains" from a package's index file to repodata.jsonposted in Support
Thanks, looking forward to the next release!
With the 'constrains' option working, we can really use ProGet as our main method of distributing (python)packages within our company. It currently works great for most packages, except for so-called meta-packages with optional dependencies.
Meta-packages are nothing more than a list of dependencies. The great thing about them is that they can very effectively "lock" environments meaning that users cannot (either by accident or on purpose) install different versions of packages critical to our workflows. The anaconda package is also a meta-package. If you want to install some package with a different version than stated in the meta-package, you will need to uninstall that meta-package first.
But there are plenty of cases where you don't want users/developers to have to install all 400+ packages of interest each time they create a new conda environment. For that, the "constrains" option comes in handy: we still strongly fixate the versions of certain packages, but they do not have to be installed directly. Only when a user needs such a package later on, he will get the version we want him to have. This is great when someone starts a new project: initially they only need pandas and/or numpy, but later they want to try some machine learning and need scikit-learn or pytorch.
Good luck with the development of version 2023, I'll keep an eye on new releases.
-
RE: CURL uploads to conda channel are failing in 2022.24 - manual upload worksposted in Support
I now changed to 2022.25, and CURL uploads are working again. Thanks!
-
RE: CURL uploads to conda channel are failing in 2022.24 - manual upload worksposted in Support
Thanks for the quick reply and action!
-
RE: Proget/conda: is it possible to delete specific files (conda case: different builds of same version)?posted in Support
Thanks for your reply! For these features, we'll wait for the new version. I saw on a blog page that you expect a release in Q2 (maybe Q3). Is that still the planning?
-
CURL uploads to conda channel are failing in 2022.24 - manual upload worksposted in Support
Hello again, since the new version (which solved some of the conda-related issues), we are now facing problems with CURL uploads. When uploading a *.tar.bz2 file to a conda feed, it gives the error:
The content has not been fully buffered yet.Looking in the ProGet logs via the UI, I see these messages:
System.NotSupportedException: The content has not been fully buffered yet. at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.Seek(Int64 offset, SeekOrigin origin) at Inedo.IO.UndisposableStream.Seek(Int64 offset, SeekOrigin origin) at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory() at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen, Encoding entryNameEncoding) at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen) at Inedo.ProGet.Feeds.Conda.CondaPackageMetadata.TryOpenZip(Stream stream) at Inedo.ProGet.Feeds.Conda.CondaPackageMetadata.ReadFromPackage(Stream stream, Stream& icon) at Inedo.ProGet.Feeds.Conda.CondaFeed.InstallPackageAsync(Stream stream, InstallPackageOptions options, Boolean promotion, Nullable`1 downloadCount, Nullable`1 publishDate, CancellationToken cancellationToken) at Inedo.ProGet.WebApplication.FeedEndpoints.Conda.CondaFeedHandler.ProcessRequestAsync(HttpContext context, WebApiContext apiContext, CondaFeed feed, String relativeUrl) at Inedo.ProGet.WebApplication.FeedEndpoints.FeedEndpointHandler.FeedRequestHandler.ProcessRequestAsync(HttpContext context)It appears to happen with any conda package I try to upload via CURL. Meanwhile, manual upload via the web-UI just work fine.
For debugging purposes, here is a package that leads to the errors:
https://nextcloud.marin.nl/index.php/s/LSXc4AQYkBmC3zQ -
RE: Conda feed: channeldata.json with non-ASCII (or non-ANSI) characters cause problems with Condaposted in Support
I have justed tested some uploads with 2022.24 and it seems to work fine now, thanks!
-
Proget/conda: is it possible to delete specific files (conda case: different builds of same version)?posted in Support
When I use the ProGet UI to go to the page of a specific version of a package, I can delete either that specific version or "all package versions".
However, with conda (and I guess with any package manager) you can have different builds of the same package version. This is not limited to different builds for different OS'es, but also different builds that each have slightly different dependencies**.
Does ProGet "understand" the idea of different builds for the same version of a package?
In ProGet UI, I can see a list of files per package, per version, but I don't see a way to just delete one of those files. Is this maybe possible via the API?
** about the example of dependencies: Let's say I have a package that needs the HDF5 library, but I want my package to be backwards compatible (even for latest updates). In that case, I could build my package for version 1.X and link it to different versions of the HDF5 lib, thus creating multiple builds with the same version, but a package manager on a users PC will select the proper build depending on the available HDF5 library.
-
RE: Conda feed: channeldata.json with non-ASCII (or non-ANSI) characters cause problems with Condaposted in Support
Thanks for the quick reply! I'll wait for the new release and give it a try then. No hurry for this, I just noted it happening when uploading some package to it. For now, I can just prevent adding such characters to my package description/summary.
-
RE: Conda feed: channeldata.json with non-ASCII (or non-ANSI) characters cause problems with Condaposted in Support
I went through Conda's code to see how it handles the
channeldata.jsonfile. Basically, you can use this to reproduce the problem:import requests import json r = requests.get('http://PROGET.BASE.URL/conda/conda_channel/channeldata.json') with open('some_file', 'wb') as f: f.write(r.content) with open('some_file') as f2: A = f2.read()Furthermore, looking at Anaconda's main repository and the
channeldata.jsonin there:
https://repo.anaconda.com/pkgs/main/channeldata.json
You will also find quite some "encoded" characters (search for "u201c" for instance)I think conda/conda-build normally make sure the
channeldata.jsonfile is as plain as possible. That should at least apply to thedescriptionandsummarykeys, but maybe to the whole file in general. It probably also applies to therepodata.jsonfile in the sub-directories such asnoarch,win-64andlinux-64. -
Conda feed: channeldata.json with non-ASCII (or non-ANSI) characters cause problems with Condaposted in Support
In the channeldata.json file (which can be found at http://PROGET.BASE.URL/conda/channel/channeldata.json), packages with non ANSI or non ASCII characters lead to parsing problems in conda-build.
I created a package that allows to reproduce the problem, and show the differences with Conda channels produced via
conda build. The example package can be downloaded here: https://nextcloud.marin.nl/index.php/s/QCkmijoD5oiJYx9If I created (using the latest ProGet version) a new conda channel, then upload this package, the
channeldata.jsonlooks like this:{ "channeldata_version": 1, "packages": { "hello-inedo-triple": { "activate.d": false, "binary_prefix": false, "deactivate.d": false, "description": "Hello this is an βexampleβ description", "dev_url": null, "doc_source_url": null, "doc_url": null, "home": "https://forums.inedo.com/topic/3696/conda-channels-should-also-add-the-constrains-from-a-package-s-index-file-to-repodata-json", "icon_hash": null, "icon_url": null, "identifiers": null, "keywords": null, "license": "None", "post_link": false, "pre_link": false, "pre_unlink": false, "recipe_origin": null, "run_exports": {}, "source_git_url": null, "source_url": null, "subdirs": [ "noarch" ], "summary": "Example package for Inedo/ProGet developers to improve their conda channel functionality", "tags": null, "text_prefix": false, "timestamp": 1677572777750, "version": "1.0.0" } }, "subdirs": [ "noarch" ] }But if I create a channel with conda-build using this example package only, the JSON file looks like this:
{ "channeldata_version": 1, "packages": { "hello-inedo-triple": { "activate.d": false, "binary_prefix": false, "deactivate.d": false, "description": "Hello this is an \u201cexample\u201d description", "dev_url": null, "doc_source_url": null, "doc_url": null, "home": "https://forums.inedo.com/topic/3696/conda-channels-should-also-add-the-constrains-from-a-package-s-index-file-to-repodata-json", "icon_hash": null, "icon_url": null, "identifiers": null, "keywords": null, "license": "None", "post_link": false, "pre_link": false, "pre_unlink": false, "recipe_origin": null, "run_exports": {}, "source_git_url": null, "source_url": null, "subdirs": [ "noarch" ], "summary": "Example package for Inedo/ProGet developers to improve their conda channel functionality", "tags": null, "text_prefix": false, "timestamp": 1677572777, "version": "1.0.0" } }, "subdirs": [ "noarch" ] }You can see that in the channel created by conda-build, the "special" quotes in the "description" key are encoded characters, whereas the ProGet feed just puts the characters themselves in the JSON output.
Both are fine and proper JSON, but the way conda handles things means that some special characters should be encoded before putting them in the
channeldata.jsonfile.Actually, I think it is ProGet that "does a bit too much" here. If you open the example package and look at
info/about.json- which is the file where the description data is pulled from I guess - you see that in the package, the special quotes are also encoded. ProGet however decodes them before generatingchanneldata.json, leading to parsing problems in Conda itself. -
RE: Conda channels should also add the "constrains" from a package's index file to repodata.jsonposted in Support
I'm curious; any news on this topic?
-
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
I tested the new version (local, brand-new installation) and now all corrections to version numbers are consistent. Thanks for the quick fix!
-
RE: Conda channels should also add the "constrains" from a package's index file to repodata.jsonposted in Support
Thanks! I was checking database entries (in relation to my other topic) and noted that you are probably generation the
repodata.jsonon the fly based on the packages in the database/repository. So I realized it would be more complex than just adding a file.But indeed, I think
constrainsshould be treated the same way asdepends.I'll watch this thread, looking forward to the next update!
-
RE: Conda channels should also add the "constrains" from a package's index file to repodata.jsonposted in Support
I'm happy to help you improving the conda functionality! Given the conda functionality being very new, It is totally OK that there is room for improvement

I created a small zip file containing a conda channel that can be downloaded here:
https://nextcloud.marin.nl/index.php/s/adkyQ59XojQNEn8And also a link to the example package:
https://nextcloud.marin.nl/index.php/s/mzmbHjEjszwGYKBIt contains a fully indexed conda channel (with only one package though....), but you can see the
repodata.jsonin thenoarchfolder, it looks like this:{ "info": { "subdir": "noarch" }, "packages": { "hello-inedo-1.0.0-1.tar.bz2": { "build": "1", "build_number": 1, "constrains": [ "scipy=1.9.3" ], "depends": [ "numpy 1.22.*" ], "license": "None", "md5": "b72976a9e6b36563ecc988b5cc033055", "name": "hello-inedo", "noarch": "python", "sha256": "4b3eee67a7dc4475d8a84e3c5fd5b48924c0e472b59e87167b67a8f673523707", "size": 5169, "subdir": "noarch", "timestamp": 1676390732144, "version": "1.0.0" } }, "packages.conda": {}, "removed": [], "repodata_version": 1 }So alongside the
dependskey, there is theconstrainskey. Note that there is no second t because its a verb, not a noun. The key defines how the packagehello_inedoconstrains the user when he installsscipylater on. The info is pulled from theindex.jsonfile in a package'sinfodirectory (seenoarch/hello-inedo-1.0.0-1.tar.bz2) in the same way as thedependskey which you are already using in ProGet. For reference, this is theindex.jsonfile in thehello-inedopackage:{ "arch": null, "build": "1", "build_number": 1, "constrains": [ "scipy=1.9.3" ], "depends": [ "numpy 1.22.*" ], "license": "None", "name": "hello-inedo", "noarch": "python", "platform": null, "subdir": "noarch", "timestamp": 1676390732144, "version": "1.0.0" }Furthermore, conda's documentation is not fully covering the more advanced topics unfortunately. Quite some things I had to figure out the hard way....
But what I think you should do, is:
- get the
constrainskey from theindex.jsonthat is in a package - add the info in the package's entry in the repodata.json file
- In the package page in the UI, you can add them under "Optional dependencies" if ProGet supports that.
Because
constrainsis just a list of optional dependencies.I hope this helps!
- get the
-
Conda channels should also add the "constrains" from a package's index file to repodata.jsonposted in Support
I noted that ProGet's conda channels does not add the
constrainskey from packages index-data to their index.Conda packages have a very useful feature called "run_constraints". These are in fact optional dependencies, and when a user installs them conda will install the version & build that is specified in a package's
constrainskey.Basically, ProGet should take the
constrainskey from a package'sindex.jsonfile and add it to the package records in therepodata.jsonfiles. In a similar way to what is already done for thedependskey.I can supply a example package if needed.
-
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
@atripp @gdivis Thank you very much, I will test the new version early next week then and let you know if all is working as expected.
As for repairing existing entries: That should be OK I think, its only a small number of packages that have problems. And with a print of the repository and some regex, It should be easy to identify those.
-
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
Great, thanks! Glad to be of help.
Meanwhile, another kind of version detail that gives issues:
https://peps.python.org/pep-0440/#pre-release-separatorsI gave one of my own package the version
2023.2.beta4. According to the above, it should be acceptable to have pre-release separators and also writebetainstead of justb. ProGet adjusts it to2023.2b4which is the correct normalization. Again, similar to the above, the download URL works if I change it back to2023.2.beta4although ProGet stores it as2023.2b4internally.Actually for this one, the conda client is wrong as well: searching for
2023.2.beta4does not work. The conda client itself does not correctly normalize pre-release versions, it seems. But that's not for you to worry about :)Looking forward to the fix, I'll watch this thread and test it once available.
-
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
@atripp Thanks again, I'm happy to help a bit here.
I think it is a different bug indeed, may be some inconsistencies in ProGet's inner workings. The steps to reproduce:
- Create new CONDA feed without connector (I was using private/internal). Let's name it conda_channel
- Download this file: https://anaconda.org/anaconda/ca-certificates/2023.01.10/download/win-64/ca-certificates-2023.01.10-haa95532_0.tar.bz2
- Upload to the feed we just created
- Now note: WebUI of the feed says there are no packages (error 1)
- Check this file: PROGET_BASE_URL/conda/conda_channel/win-64/repodata.json
- Note that the keys under the
packagesstructure have their leading zeros removed. - Try to download: PROGET_BASE_URL/conda/conda_channel/win-64/ca-certificates-2023.1.10-haa95532_0.tar.bz2 => error
- Add leading zero to URL => PROGET_BASE_URL/conda/conda_channel/win-64/ca-certificates-2023.01.10-haa95532_0.tar.bz2 => works
The issue is that conda combines the URL up to
win-64with the package name. And although ProGet saves the file without the leading zero, the URL is not correctly resolved for some reason.GUI issues:
- This page: PROGET_BASE_URL/feeds/conda_channel/ca-certificates/versions => gives 500 error
- On feed page: PROGET_BASE_URL/feeds/conda_channel => you cannot see the package
Conda issue:
- Fortunately, the conda client does not care too much about literal versioning and removal of leading zeros. If I say I want version "2023.01.10", but on the ProGet server it has "2023.1.10", it will properly resolve to the correct package entry.
- But if the endpoint/URL is not working, conda cannot download the package.
- The problem is that the endpoint that ProGet offers is inconsistent in some way with its storage/database. See steps 7 and 8:
-- although it removes the leading zeros before storing, the database-entry still includes (it seems) the leading zero.
-- The download endpoint only responds to the URL including the leading zero, but downloads the file without leading zero
-- The file storage does not have the leading zero
To get conda client to work with minimal effort, I think the only fix is to make the endpoint work properly (i.e. endpoint without the leading zero should work, as used in step 7).
For the GUI, I don't know the details of course. However, it seems that some things/actions just store the raw/original version, while other parts are storing a normalized version.
Regarding PEP440 normalization: I think conda normally just stores stuff as-is and applies normalization "on-thefly" when sorting/comparing is needed, for instance.
Btw - just noticed another case where the same issue occurs. A package with version "4.3.0a" is changed to "4.3.0a0". Which is normalization according to PEP440 - although just "4.3.0a" is not strictly forbidden. But again, the URL to download the package (this time including the added zero) does not work, but if I change the URL (change to literal "4.3.0a") it will work.
-
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
@atripp Thanks for your quick replies.
Are you sure 2023.01.10 should work? Because it doesn't work with ProGet 2022.0.19. I installed the latest version of ProGet, created a new conda feed, uploaded ca-certificates 2023.01.10. However, it is not uploaded/posted correctly.
- In the GUI, the feed overview says that there are no local packages in the feed.
- Going from the main page to packages, I can see the newly uploaded package (version indicates 2023.01.10 - which it also did with ProGet 6.0.20). Clicking on the package link gives me a 404 error.
Also tested with ca-certificates 2022.07.19, same issue.
If I use
conda search -c CHANNEL_URL ca-certificatesI see the package popping up, with version2023.1.10, so without the leading zero. The package URL also contains the version number without leading zero. But trying to download that URL directly, does not work. However - and this is interesting I think - if I change the URL to include the leading zero, the download works!But after starting the download, ProGet tries to forward me to the URL without the leading zero, giving me "package does not exist". Yet, I was able to download the files (although the downloaded file misses the leading zero, i.e. it changed the version)
I would not care too much about the GUI normally. Unfortunately, conda wants to use the URL from the index which is wrong so conda cannot download the package.
Overall, it seems the issue was not entirely fixed. I hope you can look at it again, thanks!
ps. looking at PEP440 - I don't see it explicitly excluding/forbidding the use of leading zeros. Actually, it even uses a version
2014.04as an example. Then looking at conda's package specs: https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/pkg-specs.html, again there is the example1996.07and I don't see it excluding leading zeros either.... Am I missing something? -
RE: Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
Came across this issue on YouTrack of which the state is "completed":
https://inedo.myjetbrains.com/youtrack/issue/PG-2220/FIX-Error-with-Conda-package-versions-that-have-leading-0sHowever, it still does not work. I tested with Proget 2022.0.19, but the file is still renamed to "2023.1.10" while the ProGet packages page shows "2023.01.10".
I think that issue should be re-opened.
-
Uploading ca-certificates (2023 version) to a ProGet conda feed does not workposted in Support
I wanted to upload the ca-certificates (2023.01.10) package to a conda feed. The upload does not give any errors. On the 'packages' page (right from ProGet main page), the package is shown. But clicking on it gives a 404 error.
I also tried the 2022.10.11 version, and that one did work. Next, the 2022.07.19 does not work.... But the 2022.3.29 version just works.
It seems ProGet does not support packages with a calendar versioning scheme with leading zeros for the month/minor number.
I checked the storage, and ProGet is actually renaming the packages! In the storage, I have
ca-certificates-2023.1.10-haa95532_0.tar.bz2, while the original filename isca-certificates-2023.01.10-haa95532_0.tar.bz2(including the zero). Meanwhile, ProGet does store the leading zero in its database, looking at the "packages" page.Summarizing: there is a mismatch between what ProGet is putting in it's database and what ProGet is putting in it's storage for conda package with calendar version scheme. In my opinion, ProGet should not/never change the version of packages, even if it is to remove leading zeros. I hope you agree

In any case, thanks for looking into this issue! I hope it can get fixed.
EDIT: We're currently (still) on ProGet 6.0.20, realised that there have been quite some new versions already. Will check the release notes first.
-
RE: Proget conda feed should not put "summary" in "repodata.json"posted in Support
Thanks for the quick action and the extra information. Did not realise conda build was making the check itself. We're going to install the new version and give it a try. Happy to help and make Proget better

-
Proget conda feed should not put "summary" in "repodata.json"posted in Support
Proget puts too much information in the
repodata.jsonfiles in the subdirs (noarch, win-64, linux-64). This causes problems if thesummaryentries contain certain (non-unicode) special characters.Unfortunately, there is no workaround. Conda tries to parse the
repodata.jsonfile but simply fails.To reproduce the error; try to download
uvicorn-0.17.1-py39hcbf5309_0.tar.bz2from the conda-forge channel and upload it to a Conda feed. Next, conda will not be able to use the channel anymore.Below image shows the difference between the subdir repodata.json generated by conda build (left) on my local PC, and the one that is generated by Proget (right)

-
RE: Conda feed does not provide the current_repodata.json fileposted in Support
Awesome! Thanks for the quick reply!
-
Conda feed does not provide the current_repodata.json fileposted in Support
We have set-up a conda feed using Proget 6.0.11. In the documentation, it is suggested to use conda 4.10 or newer. However, with both 4.11 and 4.12, the conda feed cannot be used to create environments and/or install packages: it throws an error saying the "current_repodata.json" file cannot be found on the server.
Conda looks for two repodata files (specified via repodata_fns config key) by default: "current_repodata.json" and "repodata.json". The second is available, but the first one is not provided/created by ProGet.
If found two ways to work around this issue:
- For "conda install" or "conda create", you can specify the "--repodata-fn" option and set that to "repodata.json". Conda will not look for the current_repodata.json file.
- Secondly, one could override the "repodata_fns" key from default by adding it to their own conda configuration file:
conda config --add repodata_fns repodata.json
But it would be much better if the Proget server would just generate these files and make them available via http, as those workarounds are quite advanced. Namely, the
conda indexcommand also generates these files by default.