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

Merge cep-devel into main #141

Merged
merged 16 commits into from
Aug 15, 2023
Merged

Merge cep-devel into main #141

merged 16 commits into from
Aug 15, 2023

Conversation

jaimergp
Copy link
Contributor

@jaimergp jaimergp commented Aug 8, 2023

Description

This is the long-lived branch where the CEP-11 work has been implemented. It's essentially a rewrite of menuinst to support the CEP-11 standard. The Windows bits of the legacy menuinst are still around for backwards compatibility.

The plan is to release a v2.0alpha with these changes, and iterate once we have feedback. We have been using this branch internally at napari, spyder and other projects, with great success.

Checklist - did you ...

  • Add a file to the news directory (using the template) for the next release's release notes?
  • Add / update necessary tests?
  • Add / update outdated documentation?

jaimergp and others added 13 commits January 12, 2023 23:51
* Start draft implementation for CEP

* rm debugging schema

* add some  est examples and simplify tree

* more work

* update static schema dump

* add test for schema file

* fix ci typo

* add pydantic

* fix legacy tests

* fix one more import

* use typing_extensions

* skip legacy on non-windows

* underscore typo

* use conda-forge

* supress slow warnings

* remove extra argument

* value must be list of int

* better arguments

* strip output

* restore comment

* fix start menu location on win

* fix linux file path

* use bytes

* typo

* cmd -> command

* metadata obj was simplified

* only merge keys if value is not None

* enable osx on example 1 too

* add enabled_for_platform

* better merge_for_platform

* ensure all create/remove methods return list of paths

* fix imports and syntax

* quote/escape windows arguments

* Menu.create returns iterables; extend instead of append

* strip a bit

* use right quote method

* quote this too :)

* use Path internally

* update setup

* one more setup update

* enable legacy only on windows

* add id & schema keys

* expose api module

* fix linux filenames

* handle optional working directory and icon better in unix

* blacken 99

* more explicit: PYTHON -> PYTHONAPP in osx

* temporarily add new cwp

* add activation mechanisms WIP

* add integration tests (WIP)

* fix paths

* fix prefix

* path this in

* fix tests

* more robust lib python site-packages

* no curly braces in placeholders dict

* create PREFIX/Menu if it doesn't exist

* more tests

* oops join paths properly

* always path

* command should be single line on windows too

* use conda_exe property on windows too

* fix menu attr here too

* more paths

* add more tests

* do not use shell on windows test (it's preactivated :D)

* try explicit call to cmd

* fix windows

* make remove return paths too

* some more logging

* strip != replace

* pre-deactivate env on windows for cleaner output?

* moar deactivate

* support micromamba activation

* provide _paths() in all platforms

* consistent site_packages detection

* fix artifact removal tests (osx at least)

* check if xml is restored on Linux

* add _paths() to menu in windows too

* cleanup

* escape with single quotes

* allow sys.executable to be a conda exe candidate

* expose CFBundleName

* allow parent menu dir to exist on windows

* fix launcher scripts on windows

* fix tests a bit

* and one more fix :)

* support some CoreFoundation keys on mac

* try with more explicit powershell path

* blacken

* add terminal option for both linux and windows (replaces Windows' no_console)

* ensure xdg lists end in semicolon

* fix name rendering in linux directories

* update json schema

* fix bash calls in linux shortcuts

* raise test errors on env removal too

* test artifact removal more throroughly

* fix linux menu removal

* use double quotes on unix

* create system directories on windows tests

* use pathlib

* fix original xml linux tests?

* missing_ok is not available in py36; use a util function for that

* setting CFBundleVersion also changes CFBundleShortVersionString, CFBundleGetInfoString

* make sure linux booleans are lowercase

* exclude tests

* do not depend on pydantic at runtime

* fix import

* more pydantic-less progress

* use deep updates

* add tests to ensure data files are up to date with code

* update tests a bit

* soft import

* no channel notices

* quote py versions

* switch to cpp driven shortcut creation on windows, with elevation

* safeguard Literal imports

* import Pathlike from os

* fix import

* mark some tests as pydantic too

* one more

* verbose install

* rm versioneer

* use pyproject.toml with setuptools-scm

* mark the file

* remove mark

* force keyword only for some args

* bring conda from PR channel

* use dual api

* add conda as explicit dependency from dev channel

* bring that one from conda-forge

* and this one too

* use conda-forge for everything?

* be nicer to ci resources

* check for quick_launch location

* positional args only

* handle deprecation warnings

* exclude some more stuff

* do not use deprecated c function

* use setuptools defaults

* enforce conda-forge for py310 issues?

* try again?

* try provision-with-micromamba

* add dev channel

* this step is not needed anymore

* maybe defaults helps with py310 now?

* nah it doesn't, revert

* move windows C++ stuff

* add C launcher for macos

* add compiled launchers

* use python -m

* also for conda

* use new binary launcher in osx

* drop py37

* fix test

* fix packaging

* add macos plist keys

* implement terminal on osx

* regenerate json schemas

* too soon for 311

* do not use importlib resources yet

* use -I to prevent local menuinst from being loaded

* it's ok if we couldn't clean up

* more robust slugs

* refactor elevation and add unix support

* self-sign resulting shortcuts in osx if entitlements are provided

* support both conda.exe and _conda.exe names

* debugging typo

* add precommands

* test precommands and entitlements

* one more test

* test fixes

* skip some tests if not on macos

* use fixture again

* do not nest context managers

* output to env defined file

* env vars are not passed?

* try another syntax

* try with templating?

* open in text mode

* escape backslashes

* debug

* hopefully this fix is enough

* resolve before comparing

* remove warnings for raw regex

* add launchers to manifest

* test prefix instead?

* do not assume `python` location, use sys.executable

* better handling of target and base prefixes

* disable elevation for now

* undo

* fetch all commits

* remove unused import

* mock instead temporary env vars

* handle escapes with python?

* support the python interface in conda-standalone

* handle kwargs = None differently

* some logic to find the best executable for the relaunch

* one less line

* do not use /K on win tests (it blocks test!)

* regenerate test package

* fix LSEnvironment serialization and unwanted presence of entitlements in Info.plist

* add preinstall and link_in_bundle implementations (draft)

* add typings to non-legacy parts

* sync schemas

* update docs for schema and refine validation on osx

* add tests for symlinks

* always define MenuItem.location as property

* avoid recursion

* avoid recursion but better

* one more fix for linux

* Path.is_relative_to() is only available on Python 3.9+

* fix kwargs on windows
* Add documentation for the CEP prototype

* add gha workflow

* fix gha triggers

* push wip

* add news

* prevent actions on main

* generate naive autodoc from pydantic schema

* refine workflow triggers

* regenerate schema

* add placeholders

* install with no deps

* warnings as error

* update schema autodocs

* revamp schema so documentation is rendered better

* more docs fixes

* editable?

* ignore nitpicks

* one more

* update env

* normalize underscores to hyphens

* more schema docs

* escape

* add basic usage

* clarify placeholders

* clarify support under different tools / langs
…ndows) (#117)

* draft support for registering file extensions on Windows

* update schema

* return early

* propose registry based approach for file extensions

* draft for protocols too

* refactor a bit

* test file extensions

* different skip strategy

* /f goes at the end

* quiet, debug

* fix logging calls

* update test

* fix tests and make them cleaner

* add some docs (WIP)

* more docs

* unneeded import

* fix docs

* add news
* Add pre-commit with isort

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…#125)

* Add black+flake8 to pre-commit

* Apply black

* Handle flake8 findings

* news
* Add first-draft swift/appkit launcher for macOS

* Install nested bundle on macOS

* Make outer macOS bundle background-only, preventing dock icon quirks

* Copy environment when launching mainApp

* Apply swift-format

* fix docs

* remove debug line

* rename

* add tests (wip)

* add tests for url_protocols; wip for extensions

* support custom mime types in linux too

* update docs a bit

* pre-commit

* pre-commit all

* pre-commit again

* amend docs about CFBundleTypeRole

* amend schema

* pre-commit

* lsregister for file types AND url protocols

* pass -a for now

* clean lsregister a bit

* debug a bit?

* parent -> menu

* change assertion

* pre-commit

* fix commands in linux

* always log

* add missing import

* configure logging

* do not log these two calls

* do not log

* make it str

* de-duplicate code

* debug file txt

* ensure TMPDIR is the destination

* start must be called with CMD

* fix windows

* raw strings here too

* make CMD flash faster, escape strings ourselves

* pre-commit

* fix linux?

* pin typing_extensions (temporarily)

* only run update-*-database commands if available

* add system deps on linux

* do not patch on ci

* use libglib's gio too

* debug xdg

* print mimeapps.list

* add desktop-file-utils

* mock gnome as DE?

* always remove after

* debug urls

* fix macos?

* add tmate shell (tmp)

* only delete outside CI

* leave files

* change port for one example

* do delete files

* increase timeouts

* comment tmate out

* pre-commit

* Update test output polling logic

* Add newline in URL handler

* use localhost implicitly

* unbuffered python

* only one version for now

* only clean if remove_after is true

* fix spacing

* do not delete files for now

* add some stderr logging too

* pre-commit

* enable debugging on macos always

* remove fputs again

* revert some temporary changes

* remove some old workarounds

* rename url_handler to event_handler because it's used for file types too

* remove unnecessary check

* add news

* noqa this

* provide workaround for <10.15

* declare compat with 10.6+

---------

Co-authored-by: Jaime Rodríguez-Guerra <jaimergp@users.noreply.github.com>
* add dev docs (draft)

* update instructions, add news

* pre-commit

* add development to toc
* Update MANIFEST to include appkit launchers

* update news
* add windows field for AppUserModelID

* pre-commit

* add missing headers?

* hr -> hres

* do not use U8toWs

* missing arg

* add tmate on failure

* pre-commit

* remove tmate

* add news
* remove windows guard

* pass _mode here too

* add test

* pre-commit

* fifx assertion on windows

* test_api in user mode always

* provide alternative test for windows + GHA

* pin pydantic

* read from file

* pre-commit

* add news
* pass certain env vars during elevation

* amend news

* pre-commit

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* add test

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
@jaimergp jaimergp requested a review from a team as a code owner August 8, 2023 15:22
@conda-bot conda-bot added the cla-signed [bot] added once the contributor has signed the CLA label Aug 8, 2023
@jaimergp
Copy link
Contributor Author

jaimergp commented Aug 8, 2023

@conda/constructor - this is ready for review, now that CEP-11 was approved!

The only changes in this PR, compared to what we had in the branch:

  • Adjust CI triggers so they target the main branch only
  • Add news
  • Update the README (including a rename from .rst to .md)

@jaimergp jaimergp mentioned this pull request Aug 10, 2023
19 tasks
Copy link
Member

@jezdez jezdez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest to not squash-merge this, but use a merge commit to retain the commits done via PRs in this long-running branch.

@jaimergp
Copy link
Contributor Author

Thanks @jezdez! Given how the permissions are structured in this repo and the fact that there are non-existing required tests, I can't merge it yet 😬 Can you take care of the merge with your mighty admin permissions? 🙏

@jezdez
Copy link
Member

jezdez commented Aug 15, 2023

@jaimergp Fixed that branch protection issue for you and upped the team permissions to admin. Can you commit merge now?

@jaimergp jaimergp merged commit 6a256c5 into main Aug 15, 2023
12 checks passed
@jaimergp jaimergp added this to the v2.0 milestone Sep 13, 2023
@github-actions github-actions bot added the locked [bot] locked due to inactivity label Sep 13, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla-signed [bot] added once the contributor has signed the CLA locked [bot] locked due to inactivity
Projects
Archived in project
5 participants