Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Other package types #2

Open
jayvdb opened this issue Jul 7, 2019 · 7 comments
Open

Other package types #2

jayvdb opened this issue Jul 7, 2019 · 7 comments

Comments

@jayvdb
Copy link

jayvdb commented Jul 7, 2019

The README says:

For now, TechLag only supports npm packages.

What other package types were you intending to support?

Other hosting, such as git? Other node package repositories, like GitHub?

Or other types of package repositories, like PyPI?

@AhmedZerouali
Copy link
Owner

It could be interesting to include other node package repositories like GitHub.

However, the main idea was to first include other types of package repositories like RubyGems and Packagist.

For PyPI, it is a bit complicated since sometimes it is difficult to know the exact used dependency version. But I think we will give it a try (https://github.com/jgbarah/techlag-py)

@jayvdb
Copy link
Author

jayvdb commented Jul 7, 2019

Ah, good. I am currently looking at Python libraries/tools interested in parsing Ruby version specifications. Context is I need Ruby versions for https://gitlab.com/coala/package_manager , where we have a GSoC project to add "outdated" support, which is a bit simpler than your "lag" metric, but we need to implement it for a lot of package managers.

The easiest approach is to just parse the gem version spec string like a semver string. They are close to semver, with the notable exception of ~> being very prevalent, but there are quite a few little surprises when processing large selections of real ruby gems.

The best approach I can find so far is to use an actual mini Ruby interpreter, as is done in https://github.com/d9pouces/Moneta/blob/master/moneta/repositories/ruby.py and https://github.com/ATIX-AG/pulp_gem/blob/master/pulp_gem/specs.py .

@AhmedZerouali
Copy link
Owner

I understand. I think this might help you https://github.com/AlexandreDecan/secos-semver/tree/master/constraints.
And if you want more context maybe you can even read the research study https://decan.lexpage.net/files/TSE-2019.pdf

@jayvdb
Copy link
Author

jayvdb commented Jul 7, 2019

@neglectos , https://github.com/AlexandreDecan/secos-semver/blob/master/constraints/parser.py is very applicable. Thanks! I've made a note of it at https://gitlab.com/coala/package_manager/issues/6 , and had a quick read of the paper.

The list of requirements in requirements.txt is a bit of a handful. It would be useful to split that into a requirements file for constraints and a separate requirements file for auxillary components. I guess you have that planned.

@AlexandreDecan
Copy link

@jayvdb Not all requirements in requirements.txt are mandatory to use the parsers. Just install the latest version of python-intervals (1.x.x) and a decent version of lark-parser (e.g. 0.6.x) and it should work.

@jayvdb
Copy link
Author

jayvdb commented Jul 19, 2019

@DanielVenturini, you may be interested in this project, as it has overlaps with DanielVenturini/vigilant-lamp#3 and https://github.com/DanielVenturini/tcc

@DanielVenturini
Copy link

Hi @jayvdb. It would be interesting in the past, but now, I have finished my research. Thanks, jayvdb.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants