diff --git a/client/src/components/History/ContentItem/Dataset/DatasetMenu.vue b/client/src/components/History/ContentItem/Dataset/DatasetMenu.vue index 3982752bf4a..46cefc54157 100644 --- a/client/src/components/History/ContentItem/Dataset/DatasetMenu.vue +++ b/client/src/components/History/ContentItem/Dataset/DatasetMenu.vue @@ -34,7 +34,7 @@ { + .then((new_history) => { Toast.success("History created"); this.collectionImport(collection_elements, new_history.id, new_history.name); }) - .fail((xhr, status, error) => { + .catch((error) => { + console.error(error); Toast.error("An error occurred."); }); } else { diff --git a/client/src/components/Upload/UploadButton.vue b/client/src/components/Upload/UploadButton.vue index 3ab53d68e79..11112008df1 100644 --- a/client/src/components/Upload/UploadButton.vue +++ b/client/src/components/Upload/UploadButton.vue @@ -2,7 +2,7 @@ `__). + `Pull Request 10592`_ +* Large overhaul over history import and export - including improved user experience, APIs, and allowing importing and exporting + to file sources plugins (including FTP). + `Pull Request 11054`_, `Pull Request 10993`_ +* Various substantial improvements to data library user interface and performance + (thanks to `@OlegZharkov `__). + `Pull Request 10204`_, `Pull Request 11099`_, + `Pull Request 10557`_, `Pull Request 10558`_, + `Pull Request 10807`_ +* Script for finding missing db indexes + `Pull Request 10350`_ +* Implement Galaxy database model schema rendering script. + `Pull Request 10571`_ +* Allow configuration of activation email message. + `Pull Request 10959`_ +* UI & API for Supporting Best Practice Workflows + `Pull Request 10988`_, `Pull Request 11025`_ +* Implement edit & upgrade subworkflow buttons in workflow editor. + `Pull Request 11032`_ +* Implement user-facing objectstore metadata. + `Pull Request 10233`_ +* Fixes and improvements to favorited tools in the tool panel. + `Pull Request 10955`_, `Pull Request 9873`_ +* Move upload button below Tool panel header, increase size, add label. + `Pull Request 10499`_, `Pull Request 10696`_ +* Fix upload button tooltip. + (thanks to `@OlegZharkov `__). + `Pull Request 11541`_ +* Fix markdown tag for history dataset collections. + `Pull Request 11587`_ +* Add author and license metadata and corresponding web microdata annotations for tools + and workflows. + `Pull Request 10408`_ +* iRODS data migration script + (thanks to `@kxk302 `__). + `Pull Request 10125`_ +* Integrate NORA's image viewer - a medical image viewer and annotation tool. + (thanks to `@bgruening `__). + `Pull Request 11035`_ +* Add the OpenSeadragon viewer and extend datatypes for deep zoom images + (thanks to `@gregvonkuster `__). + `Pull Request 10756`_, `Pull Request 11017`_, `Pull Request 10546`_ +* Add gfa2 datatype + (thanks to `@bernt-matthias `__). + `Pull Request 10270`_ +* Add nifti1 and nifti2 datatype + (thanks to `@bgruening `__). + `Pull Request 11020`_ +* Add tck and trk datatype + (thanks to `@bgruening `__). + `Pull Request 11021`_ +* Add gifti datatype + (thanks to `@bgruening `__). + `Pull Request 11028`_ +* Add cmap datatype + (thanks to `@jaidevjoshi83 `__). + `Pull Request 11471`_ +* Expand image formats for viewing in OpenSeadragon + (thanks to `@gregvonkuster `__). + `Pull Request 11017`_ +* add ome.tiff datatype + (thanks to `@qiagu `__). + `Pull Request 10349`_ +* Add datatype converters for various MD filetypes + (thanks to `@simonbray `__). + `Pull Request 10757`_ +* Add Apache Parquet datatype + `Pull Request 11047`_ +* Add msf datatype + (thanks to `@nsoranzo `__). + `Pull Request 11084`_ +* Allow the "Apply Rules" tool to attach tags to output datasets. + `Pull Request 10382`_ +* Implement mypy type checking for the Galaxy Python backend. + `Pull Request 11009`_, `Pull Request 11037`_, + `Pull Request 11022`_, `Pull Request 11007`_, + `Pull Request 11027`_, `Pull Request 11039`_, + `Pull Request 11000`_, `Pull Request 10992`_, + `Pull Request 11013`_, `Pull Request 11019`_ +* Allow setting file download filename_pattern by client. + `Pull Request 11108`_ +* Add FastAPI migration of licenses endpoints + (thanks to `@davelopez `__). + `Pull Request 11056`_ +* Improvements to workflow imports from GA4GH TRS servers + (thanks to `@OlegZharkov `__). + `Pull Request 10805`_, `Pull Request 10619`_ +* Major enhancements for the ``galaxy-tool-test`` script (installed as part of the PyPI + package ``galaxy-tool-util``). + `Pull Request 10620`_, `Pull Request 10779`_, + `Pull Request 10908`_, `Pull Request 10879`_, + `Pull Request 10725`_, `Pull Request 10735`_ + `Pull Request 10767`_ +* Add ffindex and ffdata database file types + `Pull Request 11218`_ +* Add compressed paf datatype + (thanks to `@astrovsky01 `__). + `Pull Request 11567`_ +* Speedup xml replacement + `Pull Request 10804`_ +* Allow build_list tool inputs to be optional + `Pull Request 10871`_ + (thanks to `@abretaud `__). + `Pull Request 10878`_ +* Revise tool inputs to allow nested parameters and allow ``build_for_rerun`` and other + (thanks to `@simonbray `__). + `Pull Request 11332`_, `Pull Request 10720`_ +* Allow empty file uploads + (thanks to `@bernt-matthias `__). + `Pull Request 11079`_ +* Convert collection creator user interface components to Vue. + `Pull Request 10240`_ +* Disable dataset edit button after the dataset has been deleted + (thanks to `@simonbray `__). + `Pull Request 10589`_ +* update the cellxgene IT container + (thanks to `@bgruening `__). + `Pull Request 11546`_ +* Implement expression tool for picking non-null values for CWL-style merging of + conditional branches in native Galaxy workflows. + `Pull Request 10712`_ +* Add and document API for publishing and tagging workflows + (thanks to `@simonbray `__). + `Pull Request 10748`_ +* Allow relative paths when staging jobs (e.g. with planemo run) + (thanks to `@simonbray `__). + `Pull Request 10886`_ +* Various small cleanups and improvements to the workflow editor and migrations toward + Vue. + `Pull Request 10999`_, `Pull Request 11001`_, `Pull Request 11024`_, + `Pull Request 10769`_, `Pull Request 11036`_, `Pull Request 11042`_, + `Pull Request 11041`_, `Pull Request 10580`_, `Pull Request 11046`_ +* Add FastAPI as backend and start porting backend to an ASGI webapp to + enable modern programming features such a message queues and web sockets. + `Pull Request 10823`_, `Pull Request 11074`_ +* Follow-up on best practice workflow linting user interface component + `Pull Request 11140`_ +* Bug fix - cannot set dbkeys in workflow tests. + `Pull Request 11543`_ +* Replace StreamBall, replace tarballs with zip + `Pull Request 10919`_ +* Move upload button below Tool panel header, increase size, add label. + `Pull Request 10499`_ +* Convert dataset and job information displays to Vue + (thanks to `@OlegZharkov `__). + `Pull Request 10327`_, `Pull Request 10353`_, `Pull Request 10980`_ +* Simpler API for getting user API key. + `Pull Request 10522`_ +* Add S3 plugin for remote files browser. + `Pull Request 10523`_ +* Fixed sync between legacy galaxy variable and Vuex current history + `Pull Request 11172`_ +* Set undesired execution hosts to avoid in LSF + (thanks to `@pcm32 `__). + `Pull Request 10260`_ +* Limit CPUs used in docker containers + (thanks to `@bernt-matthias `__). + `Pull Request 10373`_ +* Adding nodeSelector to K8S runner job pod spec + (thanks to `@almahmoud `__). + `Pull Request 10380`_ +* Cache container resolution during job execution + `Pull Request 10451`_ +* Support stopping Interactive Tools without deleting their outputs + `Pull Request 10497`_ +* Override some k8s runner params with destination params + (thanks to `@almahmoud `__). + `Pull Request 10520`_ +* Improve database operation job submission performance + `Pull Request 10539`_ +* Don't specify default bind type for singularity + (thanks to `@bernt-matthias `__). + `Pull Request 10625`_ +* Allow extra job metadata to be specified for k8s + (thanks to `@nuwang `__). + `Pull Request 11078`_ +* Implement backend quota interface - with better logic isolation and unit tests. + `Pull Request 10212`_ +* When compiling dynamic installation tool conf files, ensure location is actually writeable. + `Pull Request 10387`_ +* Display minutes in admin jobs cutoff + (thanks to `@OlegZharkov `__). + `Pull Request 10493`_ +* Display user disk usage in admin user panel. + `Pull Request 10666`_ +* Allow GA4GH TRS servers configuration to not be undefined/empty + (thanks to `@selten `__). + `Pull Request 10817`_ +* Drop ``legacy_eager_objectstore_initialization`` config option. + `Pull Request 10828`_ +* Clarify ``master_api_key`` intended use + (thanks to `@nsoranzo `__). + `Pull Request 11067` +* Allow InteractiveTools to use path-based proxying when ``requires_domain=False``. + `Pull Request 8596`_ +* Add setting that lets admins enable/disable the tool document cache + `Pull Request 11186`_ +* Add warning for non-existing tool versions on tool form + (thanks to `@OlegZharkov `__). + `Pull Request 10139`_ +* Add default dbkey when collecting builds. + `Pull Request 10667`_ +* Fix running subworkflows with parameter input steps. + `Pull Request 10722`_ +* Fix workflow runs with data_column runtime parameter changes + `Pull Request 11596`_ +* Various fixes for copying workflow nodes + `Pull Request 11602`_ +* Drop API Key listings from admin user list. + `Pull Request 10745`_ +* Render OpenEBench link in new consolidated tool metadata. + `Pull Request 10789`_ +* Rework arguments to a couple model security operations to allow greater reuse. + `Pull Request 10835`_ +* Add cancel option to workflow create form. + `Pull Request 10953`_ +* Cleanup client unit test removing jquery and mocking ajax calls. + `Pull Request 10904`_ +* Add tooltip to workflow node output checkbox. + `Pull Request 10957`_ +* More structured workflow create and update parameter handling. + `Pull Request 11016`_ +* Drop temporary hacks for upgrading export jobs from Galaxy 19.01 to 19.05. + `Pull Request 10990`_ +* Make Selenium BibTeX rendering test more robust. + (thanks to `@OlegZharkov `__). + `Pull Request 10809`_ +* Implement select all box on admin "Manage Dependencies" page. + (thanks to `@OlegZharkov `__). + `Pull Request 10758`_ +* Add link to view dataset in dataset params. + (thanks to `@simonbray `__). + `Pull Request 10752`_ +* Set up confirmation page for new Custos/oidc users. + `Pull Request 10198`_, `Pull Request 10952`_ +* Add script to diff two release config files. + (thanks to `@hexylena `__). + `Pull Request 10258`_ +* Small optimization for uploads. + `Pull Request 10316`_ +* More convenient syntax for configuring file source plugins. + `Pull Request 10326`_ +* Allow ``planemo run`` to stage in existing datasets without re-uploading + (thanks to `@simonbray `__). + `Pull Request 10334`_ +* Auto-focus upload name in upload dialog. + `Pull Request 10487`_ +* Revise style of radio button groups to improve visibility. + `Pull Request 10489`_ +* Add update time to workflow version selector in workflow editor. + `Pull Request 10492`_ +* Update authnz to include Azure as IDP + (thanks to `@cginmn `__). + `Pull Request 10413`_ +* Let ``python-irodsclient`` session manage connections. + `Pull Request 10437`_ +* Document workflow model classes + (thanks to `@innovate-invent `__). + `Pull Request 10471`_ +* Update link for Galaxy configuration file in Galaxy debug document. + `Pull Request 10488`_ +* Add missing documentation for macro elements in XSD + (thanks to `@davelopez `__). + `Pull Request 10495`_ +* Update developer guidelines with instructions for proper commit messages. + `Pull Request 10498`_ +* Use dataset selector in rules input dialog. + `Pull Request 10505`_ +* List tool functionality/compatiblity changes with profile version in tool schema + (thanks to `@bernt-matthias `__). + `Pull Request 10798`_ +* Add enumeration restriction to ``detect_errors`` in tool XML schema + (thanks to `@davelopez `__). + `Pull Request 10510`_ +* More informative error message for ``/api/authenticate/baseauth`` + (thanks to `@OlegZharkov `__). + `Pull Request 10524`_ +* Add more tags to Github. + `Pull Request 10525`_ +* More comments for rapid testing optional ``galaxy.files`` stuff. + `Pull Request 10526`_ +* Add ``copy to clipboard`` button to datasets + (thanks to `@OlegZharkov `__). + `Pull Request 10529`_ +* Add awesome-galaxy repo link to docs + (thanks to `@innovate-invent `__). + `Pull Request 10530`_ +* Generate path resolution note for sample file, docs. + `Pull Request 10537`_ +* Allow admins to add an additional custom logo to the masthead + `Pull Request 10540`_ +* Improve performance of copying HDAs and HDCAs. + `Pull Request 10549`_ +* Update to new LTS nodejs version. + `Pull Request 10565`_ +* Document data manager repository layout + (thanks to `@innovate-invent `__). + `Pull Request 10573`_ +* Set uwsgi's honour-stdin option when in debug mode. + `Pull Request 10577`_ +* Make primary extract workflow action button more visible + (thanks to `@hexylena `__). + `Pull Request 10583`_ +* Allow ``pgcleanup`` to redirect logging to stdout + (thanks to `@gmauro `__). + `Pull Request 10594`_ +* Remove IUC conda channel from default configuration + (thanks to `@bernt-matthias `__). + `Pull Request 10608`_ +* Document toolshed repository response object + (thanks to `@innovate-invent `__). + `Pull Request 10633`_ +* Full Python dependencies update + (thanks to `@nsoranzo `__). + `Pull Request 10660`_ +* Rev Python cwltool dependency to ``3.0.20201109103151``. + `Pull Request 10658`_ +* Add AnVILFS conditional dependency. + (thanks to `@almahmoud `__). + `Pull Request 11569`_ +* Migrate API tests to GitHub workflow + (thanks to `@nsoranzo `__). + `Pull Request 10674`_ +* Fix ``metadata_bcf`` framework test + (thanks to `@nsoranzo `__). + `Pull Request 11603` +* Added dockerfile [biohackathon] + (thanks to `@nuwang `__). + `Pull Request 10681`_ +* Harden, formalize 'null' handling around boolean tool parameters + `Pull Request 10694`_ +* Allow expression tools to output copies of input HDAs. + `Pull Request 10700`_ +* Update ftp document for rounds=100000 + (thanks to `@linnil1 `__). + `Pull Request 10701`_ +* Implement and test proper null handling and optional values for integers, floats, + and text parameters in tools and workflows. + `Pull Request 10703`_ +* Re-sync ``galaxy.tool_util.cwl`` with CWL branch of Galaxy. + `Pull Request 10716`_ +* Upgrade syntax using ``pyupgrade --py36-plus`` + (thanks to `@nsoranzo `__). + `Pull Request 10751`_ +* Revision of sharing component, adds url copy to clipboard feature + `Pull Request 10754`_ +* Don't cancel other selenium steps, if one step fails + (thanks to `@OlegZharkov `__). + `Pull Request 10801`_ +* Extension lookup with lower case extension + (thanks to `@bernt-matthias `__). + `Pull Request 10803`_ +* Retry failing selenium test once + `Pull Request 10806`_ +* Add GitHub workflow to build docs + (thanks to `@nsoranzo `__). + `Pull Request 10811`_ +* Maintainance Bot with GithubActions + (thanks to `@OlegZharkov `__). + `Pull Request 10813`_ +* document optional default for multiple in xsd + (thanks to `@bernt-matthias `__). + `Pull Request 10819`_ +* Implement read-only conda resolver (alternative) + `Pull Request 10822`_ +* Improved error handling in API Interactor + `Pull Request 10833`_ +* Add ```` inline python example for ``select`` type in tool schema docs + (thanks to `@tensionhead `__). + `Pull Request 10838`_ +* Use `github-script` action for maintenance_bot job too + (thanks to `@nsoranzo `__). + `Pull Request 10844`_ +* Unit testing and optimization for creating private roles and dataset sharing. + `Pull Request 10845`_ +* Always expand tool about section if metadata is available + `Pull Request 10847`_ +* Fix tag image in UI for consistency. + `Pull Request 10853`_ +* Run CI labeler on reopened PRs, but skip if area labels are present + (thanks to `@nsoranzo `__). + `Pull Request 10861`_ +* Allow ``build_list`` tool inputs to be optional + (thanks to `@innovate-invent `__). + `Pull Request 10863`_, `Pull Request 10871`_ +* Allow selecting dynamic select parameters by name in the API and tool tests + (thanks to `@bernt-matthias `__). + `Pull Request 10880`_ +* Add screenshot decorators to selenium tests + (thanks to `@OlegZharkov `__). + `Pull Request 10911`_ +* Add version tab which links to release notes to help tab. + (thanks to `@astrovsky01 `__). + `Pull Request 10960`_ +* Update locale.js + (thanks to `@shenweiyan `__). + `Pull Request 11011`_ +* Document how parameters in sections are referenced + (thanks to `@bernt-matthias `__). + `Pull Request 11026`_ +* Upload test results as artifact in case of failure + (thanks to `@nsoranzo `__). + `Pull Request 11030`_ +* Remove migration logic that will never be used now. + `Pull Request 11038`_ +* Support complex markers in ``run_tests.sh`` + (thanks to `@nsoranzo `__). + `Pull Request 11045`_ +* Optimized binary datatype sniffing for various binary datatypes. + `Pull Request 11049`_ +* Move framework tests to GitHub workflows + lint test tools + (thanks to `@nsoranzo `__). + `Pull Request 11055`_ +* Allow setting filename_pattern by client + (thanks to `@brinkmanlab `__). + `Pull Request 11058`_ +* Add validation for tool ``data_collection`` parameters + (thanks to `@bernt-matthias `__). + `Pull Request 11063`_ +* Verify behavior of non-existent ``from_work_dir`` outputs. + `Pull Request 11073`_ +* Show OpenAPI documentation for API tags + (thanks to `@davelopez `__). + `Pull Request 11083`_ +* Major overhaul and expansion of documentation for writing tests in Galaxy. + `Pull Request 11088`_, `Pull Request 11102`_, `Pull Request 11104`_ +* Parallelize client and server builds in dockerfile + (thanks to `@nuwang `__). + `Pull Request 11161`_ +* add more markers for screenshooting + (thanks to `@OlegZharkov `__). + `Pull Request 11171`_ +* Don't flush for each failed output dataset + `Pull Request 11282`_ +* Don't check if item is in list, use set subtraction + `Pull Request 11284`_ +* Persist scroll/url information for GTN webhook + (thanks to `@hexylena `__). + `Pull Request 11290`_ +* Add tracking code to webhook for GTN stats + (thanks to `@hexylena `__). + `Pull Request 11387`_ +* Sort tool versions from newest to oldest in tool form + (thanks to `@cat-bro `__). + `Pull Request 11490`_ +* Improve API test for changing datatype + (thanks to `@simonbray `__). + `Pull Request 10272`_ +* Various datatype code structure improvements + (thanks to `@nsoranzo `__). + `Pull Request 10279`_ +* Drop unnecessary list casting in ``Anndata`` datatype. + `Pull Request 10296`_ +* Drop unused helpers in ``web.framework.helpers`` + `Pull Request 10345`_ +* Drop support for retired Python 3.5 + (thanks to `@nsoranzo `__). + `Pull Request 10368`_ +* Make ``MetadataCollection`` a proper mapping + (thanks to `@nsoranzo `__). + `Pull Request 10374`_ +* Typos and semantic fixes for iRODS object store + (thanks to `@trel `__). + `Pull Request 10423`_ +* Fix K8s job runner typo + (thanks to `@almahmoud `__). + `Pull Request 10501`_ +* Drop communication server. + `Pull Request 10514`_ +* Add workflow tests for some newer workflow features. + `Pull Request 10478`_, `Pull Request 10669`_ +* Various small changes to test helper code. + `Pull Request 10668`_, `Pull Request 10783`_ +* Refactor logic for ``workflow_step.input_type`` into model. + `Pull Request 10657`_ +* Rename flake8 ignorelist. + `Pull Request 10702`_ +* Rely on emails to determine GitLab users. + (thanks to `@selten `__). + `Pull Request 10830`_ +* Convert ``datasets.set_edit`` to modern decorator, reuse manager. + `Pull Request 10854`_ +* Make model somewhat compatible with sqlalchemy-1.4. + `Pull Request 10856`_ +* Run maintenance bot only once + (thanks to `@OlegZharkov `__). + `Pull Request 10858`_ +* Replace usage of ``mkstemp`` with ``NamedTemporaryFile``. + `Pull Request 10862`_ +* Small edits objectstore code. + `Pull Request 10867`_ +* Remove ``trans`` from ``stream_dataset_collection()`` + `Pull Request 10907`_ +* Use ``email_from`` value from schema for tool error report email. + `Pull Request 10956`_ +* Drop migration hack for htcondor. + (thanks to `@bgruening `__). + `Pull Request 10991`_ +* Remove unused ``tag_outputs`` workflow controller action. + `Pull Request 11040`_ +* Fix workflow terminals not updating appropriately. + `Pull Request 11542`_ + +Fixes +------------------------------- + +* Hide purged datasets from visualizations + (thanks to `@OlegZharkov `__). + `Pull Request 10483`_ +* Fix reference error in MVP client application + (thanks to `@tmcgowan `__). + `Pull Request 10782`_ +* Nora visualization version bump incorporating a few upstream bugfixes. + `Pull Request 11475`_ +* Cleanup the supported filestypes for Nora. + (thanks to `@bgruening `__). + `Pull Request 11544`_ +* Fix for GTF sniffer + (thanks to `@mtekman `__). + `Pull Request 10588`_ +* Fix AnnData datatype peek + (thanks to `@mtekman `__). + `Pull Request 10986`_ +* Remove mutatable arguments from Pythn function calls + (thanks to `@bgruening `__). + `Pull Request 10998`_, `Pull Request 11003`_, `Pull Request 11006`_ +* Fix mtx unbound error. + `Pull Request 11368`_ +* Fix sniffers of interval datatypes for files starting with many comments + (thanks to `@nsoranzo `__). + `Pull Request 11416`_ +* Avoid false positives in Phylip sniffer. + `Pull Request 11595`_ +* Add display_in_upload for protobuf datatypes. + `Pull Request 11555`_ +* Don't display obs_names in select list. + `Pull Request 11574`_ +* Disable tool cache if there is a problem. + `Pull Request 10808`_ +* Put new toolshed tools in existing tool panel sections if the ID matches. + `Pull Request 10984`_ +* Make hash selection mandatory in hash tool. + `Pull Request 11427`_ +* Various Pyiron interactive tool fixes. + (thanks to `@bgruening `__). + `Pull Request 11545`_ +* Allow using Openrefine without data inputs. + (thanks to `@bgruening `__). + `Pull Request 11547`_ +* Set $HOME for interactive tools that require a specific directory. + (thanks to `@abretaud `__). + `Pull Request 11577`_ +* Add checks to workflow toolbox, avoid displaying empty sections. + `Pull Request 10363`_ +* Filter duplicate workflow output labels when initializing workflow step outputs. + `Pull Request 10432`_ +* Properly scale workflow node coordinates before saving workflow. + `Pull Request 10511`_ +* Fix changing versions in workflow editor. + `Pull Request 10516`_ +* Fix currently failing Selenium tests, move to GitHub workflow. + `Pull Request 10755`_ +* Don't preload editor mako with hidden workflows. + `Pull Request 10759`_ +* Fix generation of BCO `object_id` and `etag` + (thanks to `@nsoranzo `__). + `Pull Request 10964`_ +* Record invocation_step outputs as appropriate. + `Pull Request 10970`_ +* Fix workflow parameter text value restriction when connected to select and text parameter. + `Pull Request 10975`_ +* Convert deprecated `log.warn()`` calls to ``log.warning()`` + (thanks to `@bgruening `__). + `Pull Request 10996`_ +* Misc fixes + (thanks to `@nsoranzo `__). + `Pull Request 11029`_ +* Maintain expanded state of JobStep during polling + `Pull Request 11144`_ +* Fix tool version switch in workflow editor. + `Pull Request 11257`_ +* Fix populated state for empty collections. + `Pull Request 11312`_ +* Fix Workflow report markdown lost upon renaming the workflow. + (thanks to `@davelopez `__). + `Pull Request 11317`_ +* Fix TypeError in WorkflowsAPIController.get_versions() + (thanks to `@rikeshi `__). + `Pull Request 11373`_ +* Wrap core of workflow monitor thread in try/except. + `Pull Request 11434`_ +* Fix random-ish workflow error with maximum_workflow_jobs_per_scheduling_iteration. + `Pull Request 11513`_ +* Mark workflow as changed when editing step label or annotation. + `Pull Request 11533`_ +* Add input step data label when extracting workflow. + `Pull Request 11532`_ +* Fix saving FileSource parameter in a workflow. + (thanks to `@OlegZharkov `__). + `Pull Request 11605`_ +* Fix collection mapping over filtered output problem. + `Pull Request 11621`_ +* Bump client axios dependency from 0.19.2 to 0.21.1. + `Pull Request 11053`_ +* Improved exception handling for missing job parameter field. + `Pull Request 10298`_ +* Ensure `requirements` in a `DependenciesDescription` is a `ToolRequirements` + (thanks to `@nsoranzo `__). + `Pull Request 11044`_ +* Allow specifying remote Pulsar app configuration external to job destination + attributes to prevent persisting connection secrets. + `Pull Request 11254`_, `Pull Request 11256`_, `Pull Request 11261`_ +* Fix history import job done before import complete. + `Pull Request 11170`_ +* Allow specifying remote pulsar app config by path. + `Pull Request 11191`_ +* Fix jobs finishing after update to 21.01 + `Pull Request 11330`_ +* Add server name, PID and thread name to each handler log message. + (thanks to `@nsoranzo `__). + `Pull Request 11609`_, `Pull Request 11598`_ +* Don't log handled exceptions when filling cheetah template. + `Pull Request 11355`_ +* Update Pulsar client to 0.14.2 + `Pull Request 11381`_ +* Always mount a writable $_JOB_TMP_DIR when running tools in containers. + (thanks to `@bernt-matthias `__). + `Pull Request 11448`_ +* Restore the ability to pull containers from admin menu. + `Pull Request 10814`_ +* Fix error in admin panel when creating new quota + (thanks to `@davelopez `__). + `Pull Request 11277`_ +* Fix error on Admin panel when creating or editing Forms + (thanks to `@davelopez `__). + `Pull Request 11388`_ +* Fix DefaultQuotaAssociation access to Enum values + (thanks to `@davelopez `__). + `Pull Request 11511`_ +* Add logging if installable tool config file not found + `Pull Request 11515`_ +* Fix ToolShed link in Admin->Local Data + (thanks to `@davelopez `__). + `Pull Request 11548`_ +* Properly log out of oidc on galaxy logout + (thanks to `@juleengraham `__). + `Pull Request 10108`_ +* Fix quota meter style. + `Pull Request 10299`_ +* Fix pytest breakage in package testing. + `Pull Request 10320`_ +* Update documentation for proftpd configuration + (thanks to `@FredericBGA `__). + `Pull Request 10351`_ +* Add test for ``data_column`` parameter referring to non-tabular data (bed) and fix bug. + (thanks to `@bernt-matthias `__). + `Pull Request 10365`_ +* Fix assigning default value to variables in ``run_test_wrapper.sh`` + (thanks to `@nsoranzo `__). + `Pull Request 10381`_ +* Fix issues with copying tags and collections. + `Pull Request 10761`_ +* Fix various style issues with rule builder. + `Pull Request 10766`_ +* Fix certain classes of workflow extraction on copied objects. + `Pull Request 11151`_ +* Fix Pulsar client to add tool environment variables to remote jobs. + `Pull Request 11349`_ +* Fix workflow preview for tool repeat blocks without ``title``. + `Pull Request 10851`_ +* Fix various issues with the sharing user interface component. + `Pull Request 11305`_ +* Fix various issues with the admin jobs user interface component. + `Pull Request 11205`_ +* Fix handling of collection element identifiers in history panel. + `Pull Request 10427`_ +* Fix report's library function call in ``dataset_info.mako``. + `Pull Request 10476`_ +* Fix drag and drop highlighting in tool form for data inputs. + `Pull Request 10494`_ +* Display consistent format for job runtime + (thanks to `@kxk302 `__). + `Pull Request 10504`_ +* Modified list-of-pairs to copy datasets as hidden + (thanks to `@assuntad23 `__). + `Pull Request 10508`_ +* Fix search info popup to become hidden on click away + (thanks to `@astrovsky01 `__). + `Pull Request 10512`_ +* Disable upload option in default data dialog since history panel is not always available + `Pull Request 10533`_ +* Fix ``ObjectUploadTarget`` handling in tool util staging code. + `Pull Request 10650`_ +* Fix link to job config sample in docs + (thanks to `@galaxyproject `__). + `Pull Request 10673`_ +* Produce a clean list of dataset instances if not datasets in collection. + `Pull Request 10676`_ +* Add ``refresh_time`` to iRODS configuration, so that connections older than refresh_time are re-created. + (thanks to `@kxk302 `__). + `Pull Request 10698`_ +* Fix typo in filter_failed_collection help section + `Pull Request 10717`_ +* Cleanup announce samples. + `Pull Request 10762`_ +* Fix admin job configuration example links + (thanks to `@RichardJActon `__). + `Pull Request 10771`_ +* Fix collectl plugin for Python 3. + `Pull Request 10775`_ +* Improve update handling for switches, use es6 and listento functions. + `Pull Request 10785`_ +* Fix list of cached Docker images not getting updated. + `Pull Request 10796`_ +* Small fixes to history panel. + `Pull Request 10802`_ +* Fix vue-unit test in toolsview.test.js + (thanks to `@OlegZharkov `__). + `Pull Request 10812`_ +* Various bugfixes for reloading the toolbox. + `Pull Request 10818`_ +* Cast ``ncores`` to str for ``subprocess.call()`` + (thanks to `@nsoranzo `__). + `Pull Request 10825`_ +* Test cases and fix for config option ``new_user_dataset_access_role_default_private``. + `Pull Request 10834`_ +* Fix label verifier in Github Maintenance Bot + (thanks to `@OlegZharkov `__). + `Pull Request 10836`_ +* Move new config files samples to `lib/galaxy/config/sample/` + (thanks to `@nsoranzo `__). + `Pull Request 10842`_ +* Fix mulled unit test. + `Pull Request 10857`_ +* Fixes to Github action for building documentation + (thanks to `@nsoranzo `__). + `Pull Request 10866`_ +* Import `Mapping` from `collection.abc` + (thanks to `@nsoranzo `__). + `Pull Request 10872`_ +* Update lxml for CVE-2020-27783 + (thanks to `@nsoranzo `__). + `Pull Request 10882`_ +* Update ``Makefile`` target and verbiage for Jest. + `Pull Request 10910`_ +* Allow YAML list format for config options. + `Pull Request 10945`_ +* Bump tensorflow Python dependency from 2.3.1 to 2.4.0. + `Pull Request 10946`_ +* Added handler for history options menu webhook + (thanks to `@kjetilkl `__). + `Pull Request 10949`_ +* Various documentation fixes + (thanks to `@nsoranzo `__). + `Pull Request 10963`_ +* Fix tool validation for empty files in certain scenarios. + `Pull Request 10981`_ +* Overwrite uwsgi default py-call-osafterfork. + `Pull Request 10983`_ +* Small improvements to package structure to try to get ``galaxy-app`` closer to working. + `Pull Request 11010`_ +* Fix change feed. + `Pull Request 11018`_ +* Pass ``job`` to ``setup_external_metadata()`` in ``SetMetadataToolAction.execute_via_app()`` + (thanks to `@nsoranzo `__). + `Pull Request 11031`_ +* Document min, max, and optional for data parameters + (thanks to `@bernt-matthias `__). + `Pull Request 11061`_ +* Add empty preferences attribute to BootstrapAdminUser + (thanks to `@simonbray `__). + `Pull Request 11062`_ +* Make YAML tool parser parse ``expect_failure``. + `Pull Request 11072`_ +* Fix type column in library folder + (thanks to `@OlegZharkov `__). + `Pull Request 11093`_ +* Fix spurious "Select" button in upload. + `Pull Request 11096`_ +* Cleanup a variety of sphinx warnings and update lib structure. + `Pull Request 11097`_, `Pull Request 11103`_ +* Don't use copy when serializing JSON in ``safe_dumps``. + `Pull Request 11169`_ +* Reduce authnz exception exposure. + `Pull Request 11212`_ +* Fix arguments in ``create_api_key`` + (thanks to `@davelopez `__). + `Pull Request 11243`_ +* Routing fixes for username path components and username validation fixes. + `Pull Request 11260`_ +* Decrease verbosity of urllib connectionpool logging + `Pull Request 11266`_ +* Set correct status code in old history route + `Pull Request 11269`_ +* Update Python dependency pulsar-galaxy-lib to 0.14.1. + `Pull Request 11279`_ +* Use nested state tracking with sqlalchemy-mutable + `Pull Request 11288`_ +* Fix /u/username/* routes. + `Pull Request 11289`_ +* Raise correct exceptions in `MetadataCollection` + (thanks to `@nsoranzo `__). + `Pull Request 11293`_ +* Unpin pulsar-galaxy-lib in packages + `Pull Request 11294`_ + `Pull Request 11314`_ +* Multi-character strings shouldn't be split + (thanks to `@selten `__). + `Pull Request 11341`_ +* Fix command line building when using interpreter + (thanks to `@nsoranzo `__). + `Pull Request 11343`_ +* Fix job_destination display if job has no destination params yet. + `Pull Request 11354`_ +* Only attempt to resolve loc file fallback if path is relative path. + `Pull Request 11361`_ +* Fix setCurrentHistoryId in legacy history panel context. + `Pull Request 11369`_ +* Fix rule-based screenshots. + (thanks to `@OlegZharkov `__). + `Pull Request 11389`_ +* Fix CircleCI unit tests. + (thanks to `@nsoranzo `__). + `Pull Request 11391`_ +* Fix interactivetools_proxy_host typo. + (thanks to `@almahmoud `__). + `Pull Request 11441`_ +* Disable tool document cache by default. + `Pull Request 11447`_ +* Fix typo in folder search. + (thanks to `@OlegZharkov `__). + `Pull Request 11463`_ +* List most common Galaxy file plugins at the top. + `Pull Request 11491`_ +* Fix OIDC logout and redirection. + `Pull Request 11520`_ +* Fix markdown tag visualizations. + `Pull Request 11534`_ +* Fix unhandled error when creating tags with multiple dots. + (thanks to `@davelopez `__). + `Pull Request 11535`_ +* Allow format attribute in output collections. + (thanks to `@bernt-matthias `__). + `Pull Request 11536`_ +* Fix remote user logout redirect. + `Pull Request 11540`_ +* Fix various Rule Builder issues. + `Pull Request 11553`_ +* Fix upload button tooltip blocking tool search field. + `Pull Request 11572`_ +* Fix name and hid when selecting uploaded datasets. + `Pull Request 11576`_ +* Improve feedback for remote file listing exceptions. + `Pull Request 11581`_ + +.. include:: 21.01_prs.rst + diff --git a/doc/source/releases/21.01_announce.rst b/doc/source/releases/21.01_announce.rst index 87b2347860b..cfefa117369 100644 --- a/doc/source/releases/21.01_announce.rst +++ b/doc/source/releases/21.01_announce.rst @@ -1,11 +1,82 @@ -:orphan: =========================================================== January 2021 Galaxy Release (v 21.01) =========================================================== +.. include:: _header.rst -Schedule +Highlights =========================================================== - * Planned Freeze Date: 2021-01-04 - * Planned Release Date: 2021-01-25 + +**New History Panel (Beta)** + This release includes a preview of the new History Panel. The new history menu can be enabled and disabled in the options menu of the History Panel. For more details check out the `21.01 user release notes <21.01_announce_user.html>`__. + +**Performance Improvements** + This release includes many performance improvements for browsing and searching Data libraries (Many thanks to `Oleg Zharkov `__, `Pull Request 10204`_, `Pull Request 11099`_, `Pull Request 10557`_, `Pull Request 10558`_, `Pull Request 10807`_), + and improved job creation performance for certain classes of tools and copying Histories, Datasets and Dataset Collections (`Pull Request 10539`_, `Pull Request 10549`_). + The performance of reading tool wrappers when starting Galaxy has been much improved. We have therefore decided to disable the tool document cache by default, + since it only provides negligible speedups (`Pull Request 10804`_, `Pull Request 11447`_). The tool document cache can be re-enabled with the `enable_tool_document_cache `_ setting. + +**Offload Zip Archive Creation to NGINX** + Galaxy can now utilize the NGINX module `mod_zip `__ to assemble and compress dataset collection and library dataset archives on the fly. + This method is more efficient and can create large archives without affecting the Galaxy server process. The required setup is described in the admin documentation for `proxying Galaxy with NGINX `__. + +**Workflow Enhancements and Fixes** + This release contains many new features, enhancements and bug fixes for creating, running and reporting workflows described in greater detail in the `21.01 user release notes <21.01_announce_user.html>`__ + +**History Import and Export** + Histories can now be imported from and exported to the pluggable file source architecture introduced in the 20.09 release of Galaxy. + This includes the users' FTP folder, S3, Dropbox, ownCloud etc. In addition the History Export and Import dialogues have been rewritten + to provide access to these new options and to provide more feedback during Import and Export process. + +Also check out the `21.01 user release notes <21.01_announce_user.html>`__ + +Deprecation Notices +=========================================================== + +**Deprecation of support for Python 3.5** + Galaxy requires Python 3.6 or newer. Instructions for updating Python can be found in the `Supported Python versions `__ section of the documentation. + Note that if you update to Python 3.7.2 or newer you need to set py-call-osafterfork to ``false`` in the uwsgi section of galaxy.yml. + +**Removal of IUC conda channel from default configuration** + The IUC conda channel has been removed from the default configuration. This channel was used for installing dependencies that were old and not available in bioconda or conda-forge. These dependencies are now available in bioconda. By removing this channel Conda can work more efficiently and ignore outdated dependencies. + If you have specified alternative channels in your Galaxy configuration we recommend removing the iuc channel from the `conda_ensure_channels `__ variable. + +**Removal of the communication server** + This feature has not seen greater adoption and has been removed. Most communication has moved to Gitter or other chat services. + +Get Galaxy +========== + +The code lives at `GitHub `__ and you should have `Git `__ to obtain it. + +To get a new Galaxy repository run: + .. code-block:: shell + + $ git clone -b release_21.01 https://github.com/galaxyproject/galaxy.git + +To update an existing Galaxy repository run: + .. code-block:: shell + + $ git fetch origin && git checkout release_21.01 && git pull --ff-only origin release_21.01 + +See the `community hub `__ for additional details regarding the source code locations. + +Release Testing Team +=========================================================== + +A special thanks to the release testing team for testing many of the new features and reporting many bugs: + +- `Assunta DeSanto `_ +- `David López `_ +- `John Chilton `_ +- `Keith Suderman `_ +- `Sergey Golitsynskiy `_ + +Release Notes +=========================================================== + +.. include:: 21.01.rst + :start-after: announce_start + +.. include:: _thanks.rst diff --git a/doc/source/releases/21.01_announce_user.rst b/doc/source/releases/21.01_announce_user.rst new file mode 100644 index 00000000000..e37ceb4ebb3 --- /dev/null +++ b/doc/source/releases/21.01_announce_user.rst @@ -0,0 +1,181 @@ + +=========================================================== +January 2021 Galaxy Release (v 21.01) +=========================================================== + +.. include:: _header.rst + +Highlights +=========================================================== + +Workflows are the absolute ✨star✨ of Galaxy v21.01, they have seen huge improvements. + +Workflows: Best Practices, Reports, Invocations +----------------------------------------------- + +Workflows have seen huge improvements this release! The workflow report editor is easier than ever to use providing you with a list of common report components, interactive interfaces for embedding them in your reports, and a new workflow invocation tracker. You can now embed visualizations directly in your workflow reports making summarizing your analyses easier than ever. And, once your reports are produced, you can export them directly to pages to share your reports with colleagues. + +.. raw:: html + + + +If you're building advanced workflows utilizing Galaxy's powerful sub-workflows for reusable workflow components, then you'll be pleased to know you can now automatically update those to the latest version + +.. raw:: html + + + +Furthermore when you're making workflows to share with others, a new "Best Practices" checker has been included which helps you discover easy things which make your workflows more shareable. + +.. raw:: html + + + +Remote Files +------------ + +There was tough competition for top feature to highlight from 21.01 but the **Remote Files** interface is an absolutely fantastic new way to browse your data. Inside Galaxy there is a new, abstract way to reference files locally and on other servers. This let us provide a uniform interface to FTP servers, your Dropbox, public S3 buckets, and more! You'll find this under *Choose Remote Files* in the upload interface. + +.. figure:: images/21.01-remote.png + :alt: Screenshot of the remote files browser in the upload dialog. It lists several popular datasets such as PDB the protein data bank, EBI's FTP server, Genome Ark, and 1000 Genomes among others. + +The Galaxy Climate community is providing an excellent test case; much of their data is publicly available on public S3 buckets which were not easy to access, now they're directly available from Galaxy. No more magic "import this url" steps in your documentation, now "just browse the repository for your data". + +.. figure:: images/21.01-remote-weather.png + :alt: Screenshot of the remote files browser in the upload dialog. Here climate datasets are highlighted such as Sentinel, Copernicus, and NOAA's public datasets. At the bottom is the user's FTP directory. + +But the addition of the Remote Files browser didn't stop there! Several other interfaces received updates to use this new framework: + +History Import & Export +^^^^^^^^^^^^^^^^^^^^^^^ + +Histories can now be exported directly to your FTP folders, Dropbox, or any other configured remote file storage. + + +.. figure:: images/21.01-hist-exp.png + :alt: Screenshot of "Export history archive" interface showing the new "to a remote file" option with the user's FTP directory selected and foo.tar.gz entered as an example filename + +And history importing saw the same treatment, permitting importing from any of these public data locations making it easier than ever to share histories between Galaxy, and make your analyses more reproducible! + +.. figure:: images/21.01-hist-imp.png + :alt: Screenshot of "Import history from archive" interface which now includes an option to "Select a remote file" which provides access to the remote file interface. + +See more screenshots and more features in `Pull Request 11054`_. + +Rule Builder +^^^^^^^^^^^^ + +Likewise the Rule-Builder now has access to the remote files interface. Sample sheets with identifiers can easily be found in many FTP servers and other locations, and then loaded directly into the Rule Builder via this new interface. So easy! + +Beta History Panel +------------------ + +The History panel is getting a refresh and a huge performance boost in the latest code. Does this sound exciting to you? Try it out now with the history menu option "Use Beta History Panel". This is not its final state but we'd love feedback from you, the users, on how you find it. It features both performance and usability improvements. E.g. now you can rename files without going into a separate menu, just double click the dataset title! + +.. figure:: images/21.01-beta-hist.png + :alt: Beta history screenshot with a history titled "The Beta History", a few datasets and collections, and a textbox shown where the dataset title is being edited directly. + +User-friendliness Improvements +------------------------------ + +This is a new section covering smaller improvements that just make your life easier and your interactions with Galaxy faster. + +* Interactive tools can be stopped, without their outputs disappearing, better for reproducibility! `Pull Request 10497`_ +* When uploading files, the 'name' field will be auto-focused, allowing you to get straight to renaming the files, saving you time. `Pull Request 10487`_ +* Workflow versions now expose their update time. Reverting to an old version? Oh, yes, that one from Tuesday! `Pull Request 10492`_ +* Sharing components now include a "copy to clipboard" feature for URLs. One click and you're ready to share with the world. `Pull Request 10754`_ +* The GTN-in-Galaxy overlay now keeps track of the page you were looking at if the Galaxy page gets refreshed. Go forth and learn without distraction! `Pull Request 11290`_ + +New Visualizations +=========================================================== + +.. visualizations + +NORA, a medical image viewer and annotation tool (thanks to `@bgruening `__, `Pull Request 11035`_) + +.. figure:: images/21.01-nora.png + :alt: Screenshot of the NORA visualizer showing three views of a scan of a human brain. + +OpenSeadragon viewer for deep zoom images (thanks to `@gregvonkuster `__, `Pull Request 10756`_) + +New Datatypes +=========================================================== + +.. datatypes + +* initial commit for gfa2 + (thanks to `@bernt-matthias `__). + `Pull Request 10270`_ +* add ome.tiff datatype + (thanks to `@qiagu `__). + `Pull Request 10349`_ +* Add support for the dzi (Deep Zoom Image) data format + (thanks to `@gregvonkuster `__). + `Pull Request 10546`_ +* Add datatype converters for various MD filetypes + (thanks to `@simonbray `__). + `Pull Request 10757`_ +* Add nifti1 and nifti2 datatype + (thanks to `@bgruening `__). + `Pull Request 11020`_ +* add tck and trk datatype + (thanks to `@bgruening `__). + `Pull Request 11021`_ +* add gifti fileformat + (thanks to `@bgruening `__). + `Pull Request 11028`_ +* add basic Apache Parquet datatype + `Pull Request 11047`_ +* Add minimal `msf` datatype + (thanks to `@nsoranzo `__). + `Pull Request 11084`_ +* Add ffindex and ffdata database file types + `Pull Request 11218`_ +* Fix sniffers of interval datatypes for files starting with many comments + (thanks to `@nsoranzo `__). + `Pull Request 11416`_ +* Add cmap datatype + (thanks to `@jaidevjoshi83 `__). + `Pull Request 11471`_ +* Add compressed paf datatype + (thanks to `@astrovsky01 `__). + `Pull Request 11567`_ + +Builtin Tool Updates +=========================================================== + +.. tools + +* Allow the Apply Rules tool to attach tags to output datasets. + `Pull Request 10382`_ +* Allow build_list inputs to be optional + `Pull Request 10871`_ +* Update askomics IT to 4.1.1 + (thanks to `@abretaud `__). + `Pull Request 10878`_ +* Allow empty file uploads + (thanks to `@bernt-matthias `__). + `Pull Request 11079`_ +* Make hash selection mandatory in hash tool. + `Pull Request 11427`_ +* Various pyiron interactive tool fixes. + (thanks to `@bgruening `__). + `Pull Request 11545`_ +* Update the cellxgene IT container. + (thanks to `@bgruening `__). + `Pull Request 11546`_ +* Allow using Openrefine without data inputs + (thanks to `@bgruening `__). + `Pull Request 11547`_ +* Fix $HOME for some gxit requiring a specific one + (thanks to `@abretaud `__). + `Pull Request 11577`_ + +Release Notes +=========================================================== + +Please see the `full release notes <21.01_announce.html>`_ for more details. + +.. include:: 21.01_prs.rst + +.. include:: _thanks.rst diff --git a/doc/source/releases/21.01_prs.rst b/doc/source/releases/21.01_prs.rst new file mode 100644 index 00000000000..67d10f1ae42 --- /dev/null +++ b/doc/source/releases/21.01_prs.rst @@ -0,0 +1,442 @@ + +.. github_links +.. _Pull Request 11596: https://github.com/galaxyproject/galaxy/pull/11596 +.. _Pull Request 11602: https://github.com/galaxyproject/galaxy/pull/11602 +.. _Pull Request 11603: https://github.com/galaxyproject/galaxy/pull/11603 +.. _Pull Request 11532: https://github.com/galaxyproject/galaxy/pull/11532 +.. _Pull Request 11541: https://github.com/galaxyproject/galaxy/pull/11541 +.. _Pull Request 11569: https://github.com/galaxyproject/galaxy/pull/11569 +.. _Pull Request 11583: https://github.com/galaxyproject/galaxy/pull/11583 +.. _Pull Request 11584: https://github.com/galaxyproject/galaxy/pull/11584 +.. _Pull Request 11587: https://github.com/galaxyproject/galaxy/pull/11587 +.. _Pull Request 11595: https://github.com/galaxyproject/galaxy/pull/11595 +.. _Pull Request 11598: https://github.com/galaxyproject/galaxy/pull/11598 +.. _Pull Request 11605: https://github.com/galaxyproject/galaxy/pull/11605 +.. _Pull Request 11609: https://github.com/galaxyproject/galaxy/pull/11609 +.. _Pull Request 11621: https://github.com/galaxyproject/galaxy/pull/11621 +.. _Pull Request 9873: https://github.com/galaxyproject/galaxy/pull/9873 +.. _Pull Request 10108: https://github.com/galaxyproject/galaxy/pull/10108 +.. _Pull Request 10125: https://github.com/galaxyproject/galaxy/pull/10125 +.. _Pull Request 10139: https://github.com/galaxyproject/galaxy/pull/10139 +.. _Pull Request 10198: https://github.com/galaxyproject/galaxy/pull/10198 +.. _Pull Request 10204: https://github.com/galaxyproject/galaxy/pull/10204 +.. _Pull Request 10212: https://github.com/galaxyproject/galaxy/pull/10212 +.. _Pull Request 10233: https://github.com/galaxyproject/galaxy/pull/10233 +.. _Pull Request 10240: https://github.com/galaxyproject/galaxy/pull/10240 +.. _Pull Request 10241: https://github.com/galaxyproject/galaxy/pull/10241 +.. _Pull Request 10258: https://github.com/galaxyproject/galaxy/pull/10258 +.. _Pull Request 10260: https://github.com/galaxyproject/galaxy/pull/10260 +.. _Pull Request 10262: https://github.com/galaxyproject/galaxy/pull/10262 +.. _Pull Request 10270: https://github.com/galaxyproject/galaxy/pull/10270 +.. _Pull Request 10272: https://github.com/galaxyproject/galaxy/pull/10272 +.. _Pull Request 10279: https://github.com/galaxyproject/galaxy/pull/10279 +.. _Pull Request 10288: https://github.com/galaxyproject/galaxy/pull/10288 +.. _Pull Request 10296: https://github.com/galaxyproject/galaxy/pull/10296 +.. _Pull Request 10298: https://github.com/galaxyproject/galaxy/pull/10298 +.. _Pull Request 10299: https://github.com/galaxyproject/galaxy/pull/10299 +.. _Pull Request 10316: https://github.com/galaxyproject/galaxy/pull/10316 +.. _Pull Request 10320: https://github.com/galaxyproject/galaxy/pull/10320 +.. _Pull Request 10326: https://github.com/galaxyproject/galaxy/pull/10326 +.. _Pull Request 10327: https://github.com/galaxyproject/galaxy/pull/10327 +.. _Pull Request 10334: https://github.com/galaxyproject/galaxy/pull/10334 +.. _Pull Request 10345: https://github.com/galaxyproject/galaxy/pull/10345 +.. _Pull Request 10349: https://github.com/galaxyproject/galaxy/pull/10349 +.. _Pull Request 10350: https://github.com/galaxyproject/galaxy/pull/10350 +.. _Pull Request 10351: https://github.com/galaxyproject/galaxy/pull/10351 +.. _Pull Request 10353: https://github.com/galaxyproject/galaxy/pull/10353 +.. _Pull Request 10363: https://github.com/galaxyproject/galaxy/pull/10363 +.. _Pull Request 10365: https://github.com/galaxyproject/galaxy/pull/10365 +.. _Pull Request 10368: https://github.com/galaxyproject/galaxy/pull/10368 +.. _Pull Request 10373: https://github.com/galaxyproject/galaxy/pull/10373 +.. _Pull Request 10374: https://github.com/galaxyproject/galaxy/pull/10374 +.. _Pull Request 10380: https://github.com/galaxyproject/galaxy/pull/10380 +.. _Pull Request 10381: https://github.com/galaxyproject/galaxy/pull/10381 +.. _Pull Request 10382: https://github.com/galaxyproject/galaxy/pull/10382 +.. _Pull Request 10387: https://github.com/galaxyproject/galaxy/pull/10387 +.. _Pull Request 10404: https://github.com/galaxyproject/galaxy/pull/10404 +.. _Pull Request 10408: https://github.com/galaxyproject/galaxy/pull/10408 +.. _Pull Request 10413: https://github.com/galaxyproject/galaxy/pull/10413 +.. _Pull Request 10423: https://github.com/galaxyproject/galaxy/pull/10423 +.. _Pull Request 10426: https://github.com/galaxyproject/galaxy/pull/10426 +.. _Pull Request 10427: https://github.com/galaxyproject/galaxy/pull/10427 +.. _Pull Request 10432: https://github.com/galaxyproject/galaxy/pull/10432 +.. _Pull Request 10437: https://github.com/galaxyproject/galaxy/pull/10437 +.. _Pull Request 10451: https://github.com/galaxyproject/galaxy/pull/10451 +.. _Pull Request 10471: https://github.com/galaxyproject/galaxy/pull/10471 +.. _Pull Request 10476: https://github.com/galaxyproject/galaxy/pull/10476 +.. _Pull Request 10478: https://github.com/galaxyproject/galaxy/pull/10478 +.. _Pull Request 10483: https://github.com/galaxyproject/galaxy/pull/10483 +.. _Pull Request 10487: https://github.com/galaxyproject/galaxy/pull/10487 +.. _Pull Request 10488: https://github.com/galaxyproject/galaxy/pull/10488 +.. _Pull Request 10489: https://github.com/galaxyproject/galaxy/pull/10489 +.. _Pull Request 10492: https://github.com/galaxyproject/galaxy/pull/10492 +.. _Pull Request 10493: https://github.com/galaxyproject/galaxy/pull/10493 +.. _Pull Request 10494: https://github.com/galaxyproject/galaxy/pull/10494 +.. _Pull Request 10495: https://github.com/galaxyproject/galaxy/pull/10495 +.. _Pull Request 10497: https://github.com/galaxyproject/galaxy/pull/10497 +.. _Pull Request 10498: https://github.com/galaxyproject/galaxy/pull/10498 +.. _Pull Request 10499: https://github.com/galaxyproject/galaxy/pull/10499 +.. _Pull Request 10501: https://github.com/galaxyproject/galaxy/pull/10501 +.. _Pull Request 10504: https://github.com/galaxyproject/galaxy/pull/10504 +.. _Pull Request 10505: https://github.com/galaxyproject/galaxy/pull/10505 +.. _Pull Request 10508: https://github.com/galaxyproject/galaxy/pull/10508 +.. _Pull Request 10510: https://github.com/galaxyproject/galaxy/pull/10510 +.. _Pull Request 10511: https://github.com/galaxyproject/galaxy/pull/10511 +.. _Pull Request 10512: https://github.com/galaxyproject/galaxy/pull/10512 +.. _Pull Request 10514: https://github.com/galaxyproject/galaxy/pull/10514 +.. _Pull Request 10516: https://github.com/galaxyproject/galaxy/pull/10516 +.. _Pull Request 10520: https://github.com/galaxyproject/galaxy/pull/10520 +.. _Pull Request 10522: https://github.com/galaxyproject/galaxy/pull/10522 +.. _Pull Request 10523: https://github.com/galaxyproject/galaxy/pull/10523 +.. _Pull Request 10524: https://github.com/galaxyproject/galaxy/pull/10524 +.. _Pull Request 10525: https://github.com/galaxyproject/galaxy/pull/10525 +.. _Pull Request 10526: https://github.com/galaxyproject/galaxy/pull/10526 +.. _Pull Request 10529: https://github.com/galaxyproject/galaxy/pull/10529 +.. _Pull Request 10530: https://github.com/galaxyproject/galaxy/pull/10530 +.. _Pull Request 10533: https://github.com/galaxyproject/galaxy/pull/10533 +.. _Pull Request 10537: https://github.com/galaxyproject/galaxy/pull/10537 +.. _Pull Request 10539: https://github.com/galaxyproject/galaxy/pull/10539 +.. _Pull Request 10540: https://github.com/galaxyproject/galaxy/pull/10540 +.. _Pull Request 10546: https://github.com/galaxyproject/galaxy/pull/10546 +.. _Pull Request 10549: https://github.com/galaxyproject/galaxy/pull/10549 +.. _Pull Request 10557: https://github.com/galaxyproject/galaxy/pull/10557 +.. _Pull Request 10558: https://github.com/galaxyproject/galaxy/pull/10558 +.. _Pull Request 10565: https://github.com/galaxyproject/galaxy/pull/10565 +.. _Pull Request 10571: https://github.com/galaxyproject/galaxy/pull/10571 +.. _Pull Request 10573: https://github.com/galaxyproject/galaxy/pull/10573 +.. _Pull Request 10577: https://github.com/galaxyproject/galaxy/pull/10577 +.. _Pull Request 10580: https://github.com/galaxyproject/galaxy/pull/10580 +.. _Pull Request 10583: https://github.com/galaxyproject/galaxy/pull/10583 +.. _Pull Request 10588: https://github.com/galaxyproject/galaxy/pull/10588 +.. _Pull Request 10589: https://github.com/galaxyproject/galaxy/pull/10589 +.. _Pull Request 10592: https://github.com/galaxyproject/galaxy/pull/10592 +.. _Pull Request 10594: https://github.com/galaxyproject/galaxy/pull/10594 +.. _Pull Request 10598: https://github.com/galaxyproject/galaxy/pull/10598 +.. _Pull Request 10608: https://github.com/galaxyproject/galaxy/pull/10608 +.. _Pull Request 10619: https://github.com/galaxyproject/galaxy/pull/10619 +.. _Pull Request 10620: https://github.com/galaxyproject/galaxy/pull/10620 +.. _Pull Request 10625: https://github.com/galaxyproject/galaxy/pull/10625 +.. _Pull Request 10633: https://github.com/galaxyproject/galaxy/pull/10633 +.. _Pull Request 10650: https://github.com/galaxyproject/galaxy/pull/10650 +.. _Pull Request 10657: https://github.com/galaxyproject/galaxy/pull/10657 +.. _Pull Request 10658: https://github.com/galaxyproject/galaxy/pull/10658 +.. _Pull Request 10659: https://github.com/galaxyproject/galaxy/pull/10659 +.. _Pull Request 10660: https://github.com/galaxyproject/galaxy/pull/10660 +.. _Pull Request 10666: https://github.com/galaxyproject/galaxy/pull/10666 +.. _Pull Request 10667: https://github.com/galaxyproject/galaxy/pull/10667 +.. _Pull Request 10668: https://github.com/galaxyproject/galaxy/pull/10668 +.. _Pull Request 10669: https://github.com/galaxyproject/galaxy/pull/10669 +.. _Pull Request 10673: https://github.com/galaxyproject/galaxy/pull/10673 +.. _Pull Request 10674: https://github.com/galaxyproject/galaxy/pull/10674 +.. _Pull Request 10676: https://github.com/galaxyproject/galaxy/pull/10676 +.. _Pull Request 10681: https://github.com/galaxyproject/galaxy/pull/10681 +.. _Pull Request 10694: https://github.com/galaxyproject/galaxy/pull/10694 +.. _Pull Request 10696: https://github.com/galaxyproject/galaxy/pull/10696 +.. _Pull Request 10698: https://github.com/galaxyproject/galaxy/pull/10698 +.. _Pull Request 10700: https://github.com/galaxyproject/galaxy/pull/10700 +.. _Pull Request 10701: https://github.com/galaxyproject/galaxy/pull/10701 +.. _Pull Request 10702: https://github.com/galaxyproject/galaxy/pull/10702 +.. _Pull Request 10703: https://github.com/galaxyproject/galaxy/pull/10703 +.. _Pull Request 10712: https://github.com/galaxyproject/galaxy/pull/10712 +.. _Pull Request 10713: https://github.com/galaxyproject/galaxy/pull/10713 +.. _Pull Request 10716: https://github.com/galaxyproject/galaxy/pull/10716 +.. _Pull Request 10717: https://github.com/galaxyproject/galaxy/pull/10717 +.. _Pull Request 10718: https://github.com/galaxyproject/galaxy/pull/10718 +.. _Pull Request 10720: https://github.com/galaxyproject/galaxy/pull/10720 +.. _Pull Request 10722: https://github.com/galaxyproject/galaxy/pull/10722 +.. _Pull Request 10725: https://github.com/galaxyproject/galaxy/pull/10725 +.. _Pull Request 10735: https://github.com/galaxyproject/galaxy/pull/10735 +.. _Pull Request 10745: https://github.com/galaxyproject/galaxy/pull/10745 +.. _Pull Request 10748: https://github.com/galaxyproject/galaxy/pull/10748 +.. _Pull Request 10751: https://github.com/galaxyproject/galaxy/pull/10751 +.. _Pull Request 10752: https://github.com/galaxyproject/galaxy/pull/10752 +.. _Pull Request 10754: https://github.com/galaxyproject/galaxy/pull/10754 +.. _Pull Request 10755: https://github.com/galaxyproject/galaxy/pull/10755 +.. _Pull Request 10756: https://github.com/galaxyproject/galaxy/pull/10756 +.. _Pull Request 10757: https://github.com/galaxyproject/galaxy/pull/10757 +.. _Pull Request 10758: https://github.com/galaxyproject/galaxy/pull/10758 +.. _Pull Request 10759: https://github.com/galaxyproject/galaxy/pull/10759 +.. _Pull Request 10761: https://github.com/galaxyproject/galaxy/pull/10761 +.. _Pull Request 10762: https://github.com/galaxyproject/galaxy/pull/10762 +.. _Pull Request 10766: https://github.com/galaxyproject/galaxy/pull/10766 +.. _Pull Request 10767: https://github.com/galaxyproject/galaxy/pull/10767 +.. _Pull Request 10769: https://github.com/galaxyproject/galaxy/pull/10769 +.. _Pull Request 10771: https://github.com/galaxyproject/galaxy/pull/10771 +.. _Pull Request 10775: https://github.com/galaxyproject/galaxy/pull/10775 +.. _Pull Request 10779: https://github.com/galaxyproject/galaxy/pull/10779 +.. _Pull Request 10782: https://github.com/galaxyproject/galaxy/pull/10782 +.. _Pull Request 10783: https://github.com/galaxyproject/galaxy/pull/10783 +.. _Pull Request 10785: https://github.com/galaxyproject/galaxy/pull/10785 +.. _Pull Request 10788: https://github.com/galaxyproject/galaxy/pull/10788 +.. _Pull Request 10789: https://github.com/galaxyproject/galaxy/pull/10789 +.. _Pull Request 10796: https://github.com/galaxyproject/galaxy/pull/10796 +.. _Pull Request 10798: https://github.com/galaxyproject/galaxy/pull/10798 +.. _Pull Request 10799: https://github.com/galaxyproject/galaxy/pull/10799 +.. _Pull Request 10801: https://github.com/galaxyproject/galaxy/pull/10801 +.. _Pull Request 10802: https://github.com/galaxyproject/galaxy/pull/10802 +.. _Pull Request 10803: https://github.com/galaxyproject/galaxy/pull/10803 +.. _Pull Request 10804: https://github.com/galaxyproject/galaxy/pull/10804 +.. _Pull Request 10805: https://github.com/galaxyproject/galaxy/pull/10805 +.. _Pull Request 10806: https://github.com/galaxyproject/galaxy/pull/10806 +.. _Pull Request 10807: https://github.com/galaxyproject/galaxy/pull/10807 +.. _Pull Request 10808: https://github.com/galaxyproject/galaxy/pull/10808 +.. _Pull Request 10809: https://github.com/galaxyproject/galaxy/pull/10809 +.. _Pull Request 10811: https://github.com/galaxyproject/galaxy/pull/10811 +.. _Pull Request 10812: https://github.com/galaxyproject/galaxy/pull/10812 +.. _Pull Request 10813: https://github.com/galaxyproject/galaxy/pull/10813 +.. _Pull Request 10814: https://github.com/galaxyproject/galaxy/pull/10814 +.. _Pull Request 10817: https://github.com/galaxyproject/galaxy/pull/10817 +.. _Pull Request 10818: https://github.com/galaxyproject/galaxy/pull/10818 +.. _Pull Request 10819: https://github.com/galaxyproject/galaxy/pull/10819 +.. _Pull Request 10822: https://github.com/galaxyproject/galaxy/pull/10822 +.. _Pull Request 10823: https://github.com/galaxyproject/galaxy/pull/10823 +.. _Pull Request 10825: https://github.com/galaxyproject/galaxy/pull/10825 +.. _Pull Request 10828: https://github.com/galaxyproject/galaxy/pull/10828 +.. _Pull Request 10830: https://github.com/galaxyproject/galaxy/pull/10830 +.. _Pull Request 10833: https://github.com/galaxyproject/galaxy/pull/10833 +.. _Pull Request 10834: https://github.com/galaxyproject/galaxy/pull/10834 +.. _Pull Request 10835: https://github.com/galaxyproject/galaxy/pull/10835 +.. _Pull Request 10836: https://github.com/galaxyproject/galaxy/pull/10836 +.. _Pull Request 10838: https://github.com/galaxyproject/galaxy/pull/10838 +.. _Pull Request 10842: https://github.com/galaxyproject/galaxy/pull/10842 +.. _Pull Request 10844: https://github.com/galaxyproject/galaxy/pull/10844 +.. _Pull Request 10845: https://github.com/galaxyproject/galaxy/pull/10845 +.. _Pull Request 10847: https://github.com/galaxyproject/galaxy/pull/10847 +.. _Pull Request 10851: https://github.com/galaxyproject/galaxy/pull/10851 +.. _Pull Request 10853: https://github.com/galaxyproject/galaxy/pull/10853 +.. _Pull Request 10854: https://github.com/galaxyproject/galaxy/pull/10854 +.. _Pull Request 10856: https://github.com/galaxyproject/galaxy/pull/10856 +.. _Pull Request 10857: https://github.com/galaxyproject/galaxy/pull/10857 +.. _Pull Request 10858: https://github.com/galaxyproject/galaxy/pull/10858 +.. _Pull Request 10861: https://github.com/galaxyproject/galaxy/pull/10861 +.. _Pull Request 10862: https://github.com/galaxyproject/galaxy/pull/10862 +.. _Pull Request 10863: https://github.com/galaxyproject/galaxy/pull/10863 +.. _Pull Request 10866: https://github.com/galaxyproject/galaxy/pull/10866 +.. _Pull Request 10867: https://github.com/galaxyproject/galaxy/pull/10867 +.. _Pull Request 10870: https://github.com/galaxyproject/galaxy/pull/10870 +.. _Pull Request 10871: https://github.com/galaxyproject/galaxy/pull/10871 +.. _Pull Request 10872: https://github.com/galaxyproject/galaxy/pull/10872 +.. _Pull Request 10878: https://github.com/galaxyproject/galaxy/pull/10878 +.. _Pull Request 10879: https://github.com/galaxyproject/galaxy/pull/10879 +.. _Pull Request 10880: https://github.com/galaxyproject/galaxy/pull/10880 +.. _Pull Request 10882: https://github.com/galaxyproject/galaxy/pull/10882 +.. _Pull Request 10883: https://github.com/galaxyproject/galaxy/pull/10883 +.. _Pull Request 10886: https://github.com/galaxyproject/galaxy/pull/10886 +.. _Pull Request 10904: https://github.com/galaxyproject/galaxy/pull/10904 +.. _Pull Request 10907: https://github.com/galaxyproject/galaxy/pull/10907 +.. _Pull Request 10908: https://github.com/galaxyproject/galaxy/pull/10908 +.. _Pull Request 10910: https://github.com/galaxyproject/galaxy/pull/10910 +.. _Pull Request 10911: https://github.com/galaxyproject/galaxy/pull/10911 +.. _Pull Request 10919: https://github.com/galaxyproject/galaxy/pull/10919 +.. _Pull Request 10945: https://github.com/galaxyproject/galaxy/pull/10945 +.. _Pull Request 10946: https://github.com/galaxyproject/galaxy/pull/10946 +.. _Pull Request 10949: https://github.com/galaxyproject/galaxy/pull/10949 +.. _Pull Request 10952: https://github.com/galaxyproject/galaxy/pull/10952 +.. _Pull Request 10953: https://github.com/galaxyproject/galaxy/pull/10953 +.. _Pull Request 10955: https://github.com/galaxyproject/galaxy/pull/10955 +.. _Pull Request 10956: https://github.com/galaxyproject/galaxy/pull/10956 +.. _Pull Request 10957: https://github.com/galaxyproject/galaxy/pull/10957 +.. _Pull Request 10959: https://github.com/galaxyproject/galaxy/pull/10959 +.. _Pull Request 10960: https://github.com/galaxyproject/galaxy/pull/10960 +.. _Pull Request 10961: https://github.com/galaxyproject/galaxy/pull/10961 +.. _Pull Request 10963: https://github.com/galaxyproject/galaxy/pull/10963 +.. _Pull Request 10964: https://github.com/galaxyproject/galaxy/pull/10964 +.. _Pull Request 10969: https://github.com/galaxyproject/galaxy/pull/10969 +.. _Pull Request 10970: https://github.com/galaxyproject/galaxy/pull/10970 +.. _Pull Request 10971: https://github.com/galaxyproject/galaxy/pull/10971 +.. _Pull Request 10975: https://github.com/galaxyproject/galaxy/pull/10975 +.. _Pull Request 10976: https://github.com/galaxyproject/galaxy/pull/10976 +.. _Pull Request 10980: https://github.com/galaxyproject/galaxy/pull/10980 +.. _Pull Request 10981: https://github.com/galaxyproject/galaxy/pull/10981 +.. _Pull Request 10983: https://github.com/galaxyproject/galaxy/pull/10983 +.. _Pull Request 10984: https://github.com/galaxyproject/galaxy/pull/10984 +.. _Pull Request 10986: https://github.com/galaxyproject/galaxy/pull/10986 +.. _Pull Request 10987: https://github.com/galaxyproject/galaxy/pull/10987 +.. _Pull Request 10988: https://github.com/galaxyproject/galaxy/pull/10988 +.. _Pull Request 10990: https://github.com/galaxyproject/galaxy/pull/10990 +.. _Pull Request 10991: https://github.com/galaxyproject/galaxy/pull/10991 +.. _Pull Request 10992: https://github.com/galaxyproject/galaxy/pull/10992 +.. _Pull Request 10993: https://github.com/galaxyproject/galaxy/pull/10993 +.. _Pull Request 10995: https://github.com/galaxyproject/galaxy/pull/10995 +.. _Pull Request 10996: https://github.com/galaxyproject/galaxy/pull/10996 +.. _Pull Request 10998: https://github.com/galaxyproject/galaxy/pull/10998 +.. _Pull Request 10999: https://github.com/galaxyproject/galaxy/pull/10999 +.. _Pull Request 11000: https://github.com/galaxyproject/galaxy/pull/11000 +.. _Pull Request 11001: https://github.com/galaxyproject/galaxy/pull/11001 +.. _Pull Request 11003: https://github.com/galaxyproject/galaxy/pull/11003 +.. _Pull Request 11006: https://github.com/galaxyproject/galaxy/pull/11006 +.. _Pull Request 11007: https://github.com/galaxyproject/galaxy/pull/11007 +.. _Pull Request 11009: https://github.com/galaxyproject/galaxy/pull/11009 +.. _Pull Request 11010: https://github.com/galaxyproject/galaxy/pull/11010 +.. _Pull Request 11011: https://github.com/galaxyproject/galaxy/pull/11011 +.. _Pull Request 11013: https://github.com/galaxyproject/galaxy/pull/11013 +.. _Pull Request 11015: https://github.com/galaxyproject/galaxy/pull/11015 +.. _Pull Request 11016: https://github.com/galaxyproject/galaxy/pull/11016 +.. _Pull Request 11017: https://github.com/galaxyproject/galaxy/pull/11017 +.. _Pull Request 11018: https://github.com/galaxyproject/galaxy/pull/11018 +.. _Pull Request 11019: https://github.com/galaxyproject/galaxy/pull/11019 +.. _Pull Request 11020: https://github.com/galaxyproject/galaxy/pull/11020 +.. _Pull Request 11021: https://github.com/galaxyproject/galaxy/pull/11021 +.. _Pull Request 11022: https://github.com/galaxyproject/galaxy/pull/11022 +.. _Pull Request 11024: https://github.com/galaxyproject/galaxy/pull/11024 +.. _Pull Request 11025: https://github.com/galaxyproject/galaxy/pull/11025 +.. _Pull Request 11026: https://github.com/galaxyproject/galaxy/pull/11026 +.. _Pull Request 11027: https://github.com/galaxyproject/galaxy/pull/11027 +.. _Pull Request 11028: https://github.com/galaxyproject/galaxy/pull/11028 +.. _Pull Request 11029: https://github.com/galaxyproject/galaxy/pull/11029 +.. _Pull Request 11030: https://github.com/galaxyproject/galaxy/pull/11030 +.. _Pull Request 11031: https://github.com/galaxyproject/galaxy/pull/11031 +.. _Pull Request 11032: https://github.com/galaxyproject/galaxy/pull/11032 +.. _Pull Request 11035: https://github.com/galaxyproject/galaxy/pull/11035 +.. _Pull Request 11036: https://github.com/galaxyproject/galaxy/pull/11036 +.. _Pull Request 11037: https://github.com/galaxyproject/galaxy/pull/11037 +.. _Pull Request 11038: https://github.com/galaxyproject/galaxy/pull/11038 +.. _Pull Request 11039: https://github.com/galaxyproject/galaxy/pull/11039 +.. _Pull Request 11040: https://github.com/galaxyproject/galaxy/pull/11040 +.. _Pull Request 11041: https://github.com/galaxyproject/galaxy/pull/11041 +.. _Pull Request 11042: https://github.com/galaxyproject/galaxy/pull/11042 +.. _Pull Request 11044: https://github.com/galaxyproject/galaxy/pull/11044 +.. _Pull Request 11045: https://github.com/galaxyproject/galaxy/pull/11045 +.. _Pull Request 11046: https://github.com/galaxyproject/galaxy/pull/11046 +.. _Pull Request 11047: https://github.com/galaxyproject/galaxy/pull/11047 +.. _Pull Request 11049: https://github.com/galaxyproject/galaxy/pull/11049 +.. _Pull Request 11053: https://github.com/galaxyproject/galaxy/pull/11053 +.. _Pull Request 11054: https://github.com/galaxyproject/galaxy/pull/11054 +.. _Pull Request 11055: https://github.com/galaxyproject/galaxy/pull/11055 +.. _Pull Request 11056: https://github.com/galaxyproject/galaxy/pull/11056 +.. _Pull Request 11058: https://github.com/galaxyproject/galaxy/pull/11058 +.. _Pull Request 11061: https://github.com/galaxyproject/galaxy/pull/11061 +.. _Pull Request 11062: https://github.com/galaxyproject/galaxy/pull/11062 +.. _Pull Request 11063: https://github.com/galaxyproject/galaxy/pull/11063 +.. _Pull Request 11067: https://github.com/galaxyproject/galaxy/pull/11067 +.. _Pull Request 11071: https://github.com/galaxyproject/galaxy/pull/11071 +.. _Pull Request 11072: https://github.com/galaxyproject/galaxy/pull/11072 +.. _Pull Request 11073: https://github.com/galaxyproject/galaxy/pull/11073 +.. _Pull Request 11074: https://github.com/galaxyproject/galaxy/pull/11074 +.. _Pull Request 11078: https://github.com/galaxyproject/galaxy/pull/11078 +.. _Pull Request 11079: https://github.com/galaxyproject/galaxy/pull/11079 +.. _Pull Request 11083: https://github.com/galaxyproject/galaxy/pull/11083 +.. _Pull Request 11084: https://github.com/galaxyproject/galaxy/pull/11084 +.. _Pull Request 11088: https://github.com/galaxyproject/galaxy/pull/11088 +.. _Pull Request 11093: https://github.com/galaxyproject/galaxy/pull/11093 +.. _Pull Request 11096: https://github.com/galaxyproject/galaxy/pull/11096 +.. _Pull Request 11097: https://github.com/galaxyproject/galaxy/pull/11097 +.. _Pull Request 11099: https://github.com/galaxyproject/galaxy/pull/11099 +.. _Pull Request 11102: https://github.com/galaxyproject/galaxy/pull/11102 +.. _Pull Request 11103: https://github.com/galaxyproject/galaxy/pull/11103 +.. _Pull Request 11104: https://github.com/galaxyproject/galaxy/pull/11104 +.. _Pull Request 11108: https://github.com/galaxyproject/galaxy/pull/11108 +.. _Pull Request 11123: https://github.com/galaxyproject/galaxy/pull/11123 +.. _Pull Request 11140: https://github.com/galaxyproject/galaxy/pull/11140 +.. _Pull Request 11144: https://github.com/galaxyproject/galaxy/pull/11144 +.. _Pull Request 11151: https://github.com/galaxyproject/galaxy/pull/11151 +.. _Pull Request 11152: https://github.com/galaxyproject/galaxy/pull/11152 +.. _Pull Request 11154: https://github.com/galaxyproject/galaxy/pull/11154 +.. _Pull Request 11159: https://github.com/galaxyproject/galaxy/pull/11159 +.. _Pull Request 11161: https://github.com/galaxyproject/galaxy/pull/11161 +.. _Pull Request 11169: https://github.com/galaxyproject/galaxy/pull/11169 +.. _Pull Request 11170: https://github.com/galaxyproject/galaxy/pull/11170 +.. _Pull Request 11171: https://github.com/galaxyproject/galaxy/pull/11171 +.. _Pull Request 11172: https://github.com/galaxyproject/galaxy/pull/11172 +.. _Pull Request 11181: https://github.com/galaxyproject/galaxy/pull/11181 +.. _Pull Request 11186: https://github.com/galaxyproject/galaxy/pull/11186 +.. _Pull Request 11191: https://github.com/galaxyproject/galaxy/pull/11191 +.. _Pull Request 11205: https://github.com/galaxyproject/galaxy/pull/11205 +.. _Pull Request 11212: https://github.com/galaxyproject/galaxy/pull/11212 +.. _Pull Request 11213: https://github.com/galaxyproject/galaxy/pull/11213 +.. _Pull Request 11218: https://github.com/galaxyproject/galaxy/pull/11218 +.. _Pull Request 11243: https://github.com/galaxyproject/galaxy/pull/11243 +.. _Pull Request 11254: https://github.com/galaxyproject/galaxy/pull/11254 +.. _Pull Request 11256: https://github.com/galaxyproject/galaxy/pull/11256 +.. _Pull Request 11257: https://github.com/galaxyproject/galaxy/pull/11257 +.. _Pull Request 11260: https://github.com/galaxyproject/galaxy/pull/11260 +.. _Pull Request 11261: https://github.com/galaxyproject/galaxy/pull/11261 +.. _Pull Request 11266: https://github.com/galaxyproject/galaxy/pull/11266 +.. _Pull Request 11268: https://github.com/galaxyproject/galaxy/pull/11268 +.. _Pull Request 11269: https://github.com/galaxyproject/galaxy/pull/11269 +.. _Pull Request 11277: https://github.com/galaxyproject/galaxy/pull/11277 +.. _Pull Request 11279: https://github.com/galaxyproject/galaxy/pull/11279 +.. _Pull Request 11282: https://github.com/galaxyproject/galaxy/pull/11282 +.. _Pull Request 11284: https://github.com/galaxyproject/galaxy/pull/11284 +.. _Pull Request 11288: https://github.com/galaxyproject/galaxy/pull/11288 +.. _Pull Request 11289: https://github.com/galaxyproject/galaxy/pull/11289 +.. _Pull Request 11290: https://github.com/galaxyproject/galaxy/pull/11290 +.. _Pull Request 11293: https://github.com/galaxyproject/galaxy/pull/11293 +.. _Pull Request 11294: https://github.com/galaxyproject/galaxy/pull/11294 +.. _Pull Request 11305: https://github.com/galaxyproject/galaxy/pull/11305 +.. _Pull Request 11306: https://github.com/galaxyproject/galaxy/pull/11306 +.. _Pull Request 11312: https://github.com/galaxyproject/galaxy/pull/11312 +.. _Pull Request 11314: https://github.com/galaxyproject/galaxy/pull/11314 +.. _Pull Request 11317: https://github.com/galaxyproject/galaxy/pull/11317 +.. _Pull Request 11318: https://github.com/galaxyproject/galaxy/pull/11318 +.. _Pull Request 11327: https://github.com/galaxyproject/galaxy/pull/11327 +.. _Pull Request 11330: https://github.com/galaxyproject/galaxy/pull/11330 +.. _Pull Request 11332: https://github.com/galaxyproject/galaxy/pull/11332 +.. _Pull Request 11341: https://github.com/galaxyproject/galaxy/pull/11341 +.. _Pull Request 11343: https://github.com/galaxyproject/galaxy/pull/11343 +.. _Pull Request 11344: https://github.com/galaxyproject/galaxy/pull/11344 +.. _Pull Request 11349: https://github.com/galaxyproject/galaxy/pull/11349 +.. _Pull Request 11350: https://github.com/galaxyproject/galaxy/pull/11350 +.. _Pull Request 11352: https://github.com/galaxyproject/galaxy/pull/11352 +.. _Pull Request 11353: https://github.com/galaxyproject/galaxy/pull/11353 +.. _Pull Request 11354: https://github.com/galaxyproject/galaxy/pull/11354 +.. _Pull Request 11355: https://github.com/galaxyproject/galaxy/pull/11355 +.. _Pull Request 11360: https://github.com/galaxyproject/galaxy/pull/11360 +.. _Pull Request 11361: https://github.com/galaxyproject/galaxy/pull/11361 +.. _Pull Request 11363: https://github.com/galaxyproject/galaxy/pull/11363 +.. _Pull Request 11364: https://github.com/galaxyproject/galaxy/pull/11364 +.. _Pull Request 11366: https://github.com/galaxyproject/galaxy/pull/11366 +.. _Pull Request 11368: https://github.com/galaxyproject/galaxy/pull/11368 +.. _Pull Request 11369: https://github.com/galaxyproject/galaxy/pull/11369 +.. _Pull Request 11373: https://github.com/galaxyproject/galaxy/pull/11373 +.. _Pull Request 11381: https://github.com/galaxyproject/galaxy/pull/11381 +.. _Pull Request 11382: https://github.com/galaxyproject/galaxy/pull/11382 +.. _Pull Request 11387: https://github.com/galaxyproject/galaxy/pull/11387 +.. _Pull Request 11388: https://github.com/galaxyproject/galaxy/pull/11388 +.. _Pull Request 11389: https://github.com/galaxyproject/galaxy/pull/11389 +.. _Pull Request 11391: https://github.com/galaxyproject/galaxy/pull/11391 +.. _Pull Request 11392: https://github.com/galaxyproject/galaxy/pull/11392 +.. _Pull Request 11397: https://github.com/galaxyproject/galaxy/pull/11397 +.. _Pull Request 11399: https://github.com/galaxyproject/galaxy/pull/11399 +.. _Pull Request 11416: https://github.com/galaxyproject/galaxy/pull/11416 +.. _Pull Request 11427: https://github.com/galaxyproject/galaxy/pull/11427 +.. _Pull Request 11434: https://github.com/galaxyproject/galaxy/pull/11434 +.. _Pull Request 11441: https://github.com/galaxyproject/galaxy/pull/11441 +.. _Pull Request 11447: https://github.com/galaxyproject/galaxy/pull/11447 +.. _Pull Request 11448: https://github.com/galaxyproject/galaxy/pull/11448 +.. _Pull Request 11457: https://github.com/galaxyproject/galaxy/pull/11457 +.. _Pull Request 11463: https://github.com/galaxyproject/galaxy/pull/11463 +.. _Pull Request 11471: https://github.com/galaxyproject/galaxy/pull/11471 +.. _Pull Request 11475: https://github.com/galaxyproject/galaxy/pull/11475 +.. _Pull Request 11481: https://github.com/galaxyproject/galaxy/pull/11481 +.. _Pull Request 11490: https://github.com/galaxyproject/galaxy/pull/11490 +.. _Pull Request 11491: https://github.com/galaxyproject/galaxy/pull/11491 +.. _Pull Request 11511: https://github.com/galaxyproject/galaxy/pull/11511 +.. _Pull Request 11512: https://github.com/galaxyproject/galaxy/pull/11512 +.. _Pull Request 11513: https://github.com/galaxyproject/galaxy/pull/11513 +.. _Pull Request 11514: https://github.com/galaxyproject/galaxy/pull/11514 +.. _Pull Request 11515: https://github.com/galaxyproject/galaxy/pull/11515 +.. _Pull Request 11517: https://github.com/galaxyproject/galaxy/pull/11517 +.. _Pull Request 11520: https://github.com/galaxyproject/galaxy/pull/11520 +.. _Pull Request 11525: https://github.com/galaxyproject/galaxy/pull/11525 +.. _Pull Request 11527: https://github.com/galaxyproject/galaxy/pull/11527 +.. _Pull Request 11533: https://github.com/galaxyproject/galaxy/pull/11533 +.. _Pull Request 11534: https://github.com/galaxyproject/galaxy/pull/11534 +.. _Pull Request 11535: https://github.com/galaxyproject/galaxy/pull/11535 +.. _Pull Request 11536: https://github.com/galaxyproject/galaxy/pull/11536 +.. _Pull Request 11540: https://github.com/galaxyproject/galaxy/pull/11540 +.. _Pull Request 11542: https://github.com/galaxyproject/galaxy/pull/11542 +.. _Pull Request 11543: https://github.com/galaxyproject/galaxy/pull/11543 +.. _Pull Request 11544: https://github.com/galaxyproject/galaxy/pull/11544 +.. _Pull Request 11545: https://github.com/galaxyproject/galaxy/pull/11545 +.. _Pull Request 11546: https://github.com/galaxyproject/galaxy/pull/11546 +.. _Pull Request 11547: https://github.com/galaxyproject/galaxy/pull/11547 +.. _Pull Request 11548: https://github.com/galaxyproject/galaxy/pull/11548 +.. _Pull Request 11553: https://github.com/galaxyproject/galaxy/pull/11553 +.. _Pull Request 11555: https://github.com/galaxyproject/galaxy/pull/11555 +.. _Pull Request 11567: https://github.com/galaxyproject/galaxy/pull/11567 +.. _Pull Request 11572: https://github.com/galaxyproject/galaxy/pull/11572 +.. _Pull Request 11574: https://github.com/galaxyproject/galaxy/pull/11574 +.. _Pull Request 11576: https://github.com/galaxyproject/galaxy/pull/11576 +.. _Pull Request 11577: https://github.com/galaxyproject/galaxy/pull/11577 +.. _Pull Request 11581: https://github.com/galaxyproject/galaxy/pull/11581 diff --git a/doc/source/releases/images/21.01-beta-hist.png b/doc/source/releases/images/21.01-beta-hist.png new file mode 100644 index 00000000000..551c8ebd9c7 Binary files /dev/null and b/doc/source/releases/images/21.01-beta-hist.png differ diff --git a/doc/source/releases/images/21.01-hist-exp.png b/doc/source/releases/images/21.01-hist-exp.png new file mode 100644 index 00000000000..7a0272ea746 Binary files /dev/null and b/doc/source/releases/images/21.01-hist-exp.png differ diff --git a/doc/source/releases/images/21.01-hist-imp.png b/doc/source/releases/images/21.01-hist-imp.png new file mode 100644 index 00000000000..904a46e6681 Binary files /dev/null and b/doc/source/releases/images/21.01-hist-imp.png differ diff --git a/doc/source/releases/images/21.01-nora.png b/doc/source/releases/images/21.01-nora.png new file mode 100644 index 00000000000..68571fd370d Binary files /dev/null and b/doc/source/releases/images/21.01-nora.png differ diff --git a/doc/source/releases/images/21.01-remote-weather.png b/doc/source/releases/images/21.01-remote-weather.png new file mode 100644 index 00000000000..51c7a23330e Binary files /dev/null and b/doc/source/releases/images/21.01-remote-weather.png differ diff --git a/doc/source/releases/images/21.01-remote.png b/doc/source/releases/images/21.01-remote.png new file mode 100644 index 00000000000..6ee576e2a6b Binary files /dev/null and b/doc/source/releases/images/21.01-remote.png differ diff --git a/doc/source/releases/index.rst b/doc/source/releases/index.rst index 3d6157b8b48..a9c01588c2e 100644 --- a/doc/source/releases/index.rst +++ b/doc/source/releases/index.rst @@ -4,6 +4,7 @@ Releases .. toctree:: :maxdepth: 1 + 21.01_announce_user 20.09_announce_user 20.05_announce_user 20.01_announce_user diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index cec66a6eb14..e56e827b272 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -881,7 +881,7 @@ class SelectToolParameter(ToolParameter): else: return self.static_options - def get_legal_values(self, trans, other_values): + def get_legal_values(self, trans, other_values, value): """ determine the set of values of legal options """ @@ -896,7 +896,7 @@ class SelectToolParameter(ToolParameter): def from_json(self, value, trans, other_values=None, require_legal_value=True): other_values = other_values or {} try: - legal_values = self.get_legal_values(trans, other_values) + legal_values = self.get_legal_values(trans, other_values, value) except ImplicitConversionRequired: return value # if the given value is not found in the set of values of the legal @@ -1069,7 +1069,7 @@ class GenomeBuildParameter(SelectToolParameter): for dbkey, build_name in self._get_dbkey_names(trans=trans): yield build_name, dbkey, (dbkey == last_used_build) - def get_legal_values(self, trans, other_values): + def get_legal_values(self, trans, other_values, value): return {dbkey for dbkey, _ in self._get_dbkey_names(trans=trans)} def to_dict(self, trans, other_values=None): @@ -1182,7 +1182,7 @@ class SelectTagParameter(SelectToolParameter): return self.default_value return SelectToolParameter.get_initial_value(self, trans, other_values) - def get_legal_values(self, trans, other_values): + def get_legal_values(self, trans, other_values, value): if self.data_ref not in other_values and not trans.workflow_building_mode: raise ValueError("Value for associated data reference not found (data_ref).") return set(self.get_tag_list(other_values)) @@ -1275,7 +1275,7 @@ class ColumnListParameter(SelectToolParameter): @staticmethod def _strip_c(column): if isinstance(column, str): - if column.startswith('c'): + if column.startswith('c') and len(column) > 1 and all(c.isdigit() for c in column[1:]): column = column.strip().lower()[1:] return column @@ -1355,12 +1355,11 @@ class ColumnListParameter(SelectToolParameter): return self.default_value return super().get_initial_value(trans, other_values) - def get_legal_values(self, trans, other_values): + def get_legal_values(self, trans, other_values, value): if self.data_ref not in other_values: raise ValueError("Value for associated data reference not found (data_ref).") legal_values = self.get_column_list(trans, other_values) - value = other_values.get(self.name) if value is not None: # There are cases where 'value' is a string of comma separated values. This ensures # that it is converted into a list, with extra whitespace around items removed. @@ -1506,7 +1505,7 @@ class DrillDownSelectToolParameter(SelectToolParameter): return options return self.options - def get_legal_values(self, trans, other_values): + def get_legal_values(self, trans, other_values, value): def recurse_options(legal_values, options): for option in options: legal_values.append(option['value']) @@ -1517,7 +1516,7 @@ class DrillDownSelectToolParameter(SelectToolParameter): def from_json(self, value, trans, other_values=None): other_values = other_values or {} - legal_values = self.get_legal_values(trans, other_values) + legal_values = self.get_legal_values(trans, other_values, value) if not legal_values and trans.workflow_building_mode: if self.multiple: if value == '': # No option selected diff --git a/lib/galaxy_test/api/test_workflows.py b/lib/galaxy_test/api/test_workflows.py index f5aa4a163f7..8957aea3200 100644 --- a/lib/galaxy_test/api/test_workflows.py +++ b/lib/galaxy_test/api/test_workflows.py @@ -1233,6 +1233,35 @@ steps: col_names: 'B' """, history_id=history_id) + @skip_without_tool('column_param') + def test_runtime_data_column_parameter(self): + with self.dataset_populator.test_history() as history_id: + self._run_jobs("""class: GalaxyWorkflow +inputs: + bed_input: data +steps: + cat1: + tool_id: cat1 + in: + input1: bed_input + column_param_list: + tool_id: column_param + in: + input1: cat1/out_file1 + state: + col: 9 + col_names: notacolumn +test_data: + step_parameters: + '2': + 'col': 1 + 'col_names': 'c1: chr1' + bed_input: + value: 1.bed + file_type: bed + type: File +""", history_id=history_id) + @skip_without_tool("mapper") @skip_without_tool("pileup") def test_workflow_metadata_validation_0(self): diff --git a/scripts/bootstrap_history.py b/scripts/bootstrap_history.py index 2db6c16f93e..f5732ccc22e 100644 --- a/scripts/bootstrap_history.py +++ b/scripts/bootstrap_history.py @@ -41,7 +41,7 @@ DEVTEAM = [ "tnabtaf", "natefoo", "jgoecks", "guerler", "jennaj", "nekrut", "jxtx", "VJalili", "WilliamHolden", "Nerdinacan", - "ic4f", "mvdbeek" + "ic4f", "mvdbeek", "galaxyproject" ] TEMPLATE = """ @@ -115,7 +115,7 @@ To update an existing Galaxy repository run: $$ git fetch origin && git checkout release_${release} && git pull --ff-only origin release_${release} -See the `community hub `__ for additional details regarding the source code locations. +See the `community hub `__ for additional details on source code locations. Release Notes =========================================================== @@ -161,6 +161,13 @@ Builtin Tool Updates .. tools +Release Testing Team +=========================================================== + +A special thanks to the release testing team for testing many of the new features and reporting many bugs: + + + Release Notes =========================================================== @@ -211,7 +218,7 @@ RELEASE_ISSUE_TEMPLATE = string.Template(""" make release-create-rc RELEASE_CURR=${version} RELEASE_NEXT=${next_version} - [ ] Open PRs from your fork of branch ``version-${version}`` to upstream ``release_${version}`` and of ``version-${next_version}.dev`` to ``dev``. - - [ ] Update ``next_milestone`` in [P4's configuration](https://github.com/galaxyproject/p4) to `${next_version}` so it properly tags new PRs. + - [ ] Update ``MILESTONE_NUMBER`` in the [ maintenance bot](https://github.com/galaxyproject/galaxy/blob/dev/.github/workflows/maintenance_bot.yaml) to `${next_version}` so it properly tags new PRs. - [ ] **Issue Review Timeline Notes** - [ ] Ensure any security fixes will be ready prior to ${freeze_date} + 1 week, to allow time for notification prior to release. @@ -255,6 +262,10 @@ RELEASE_ISSUE_TEMPLATE = string.Template(""" - [ ] Ensure all [blocking milestone PRs](https://github.com/galaxyproject/galaxy/pulls?q=is%3Aopen+is%3Apr+milestone%3A${version}) have been merged or closed. make release-check-blocking-prs RELEASE_CURR=${version} + - [ ] Ensure all PRs merged into the pre-release branch during the freeze have [milestones attached](https://github.com/galaxyproject/galaxy/pulls?q=is%3Apr+is%3Aclosed+base%3Arelease_{version}+is%3Amerged+no%3Amilestone) and that they are the not [${next_version} milestones](https://github.com/galaxyproject/galaxy/pulls?q=is%3Apr+is%3Aclosed+base%3Arelease_{version}+is%3Amerged+milestone%3A{next_version}) + - [ ] Ensure release notes include all PRs added during the freeze by re-running the release note bootstrapping: + + make release-bootstrap-history RELEASE_CURR=${version} - [ ] Ensure previous release is merged into current. [GitHub branch comparison](https://github.com/galaxyproject/galaxy/compare/release_${version}...release_${previous_version}) - [ ] Create and push release tag: @@ -349,7 +360,7 @@ def do_release(argv): template = template.replace(".. enhancement", "%s\n\n.. enhancement" % enhancement_targets) template = template.replace(".. bug", "%s\n\n.. bug" % bug_targets) release_info = string.Template(template).safe_substitute(release=release_name) - open(release_file, "w").write(release_info) + _write_file(release_file, release_info, skip_if_exists=True) month = int(release_name.split(".")[1]) month_name = calendar.month_name[month] year = release_name.split(".")[0] @@ -360,7 +371,7 @@ def do_release(argv): release=release_name ) announce_file = _release_file(release_name + "_announce.rst") - _write_file(announce_file, announce_info) + _write_file(announce_file, announce_info, skip_if_exists=True) announce_user_info = ANNOUNCE_USER_TEMPLATE.substitute( month_name=month_name, @@ -368,10 +379,16 @@ def do_release(argv): release=release_name ) announce_user_file = _release_file(release_name + "_announce_user.rst") - _write_file(announce_user_file, announce_user_info) + _write_file(announce_user_file, announce_user_info, skip_if_exists=True) prs_file = _release_file(release_name + "_prs.rst") - _write_file(prs_file, PRS_TEMPLATE) + seen_prs = set() + try: + with open(prs_file) as fh: + seen_prs = set(re.findall(r'\.\. _Pull Request (\d*): https', fh.read())) + except FileNotFoundError: + pass + _write_file(prs_file, PRS_TEMPLATE, skip_if_exists=True) next_version_params = _next_version_params(release_name) next_version = next_version_params["version"] @@ -382,7 +399,7 @@ def do_release(argv): releases_index = _release_file("index.rst") releases_index_contents = _read_file(releases_index) releases_index_contents = releases_index_contents.replace(".. announcements\n", ".. announcements\n " + next_version + "_announce\n") - _write_file(releases_index, releases_index_contents) + _write_file(releases_index, releases_index_contents, skip_if_exists=True) for pr in _get_prs(release_name): # 2015-06-29 18:32:13 2015-04-22 19:11:53 2015-08-12 21:15:45 @@ -392,7 +409,7 @@ def do_release(argv): "head": pr.head, "labels": _pr_to_labels(pr), } - main([argv[0], "--release_file", "%s.rst" % release_name, "--request", as_dict, "pr" + str(pr.number)]) + main([argv[0], "--release_file", "%s.rst" % release_name, "--request", as_dict, "pr" + str(pr.number)], seen_prs=seen_prs) def check_release(argv): @@ -479,7 +496,7 @@ def _get_prs(release_name, state="closed"): if reached_old_prs: break - if pr.created_at < datetime.datetime(2018, 11, 1, 0, 0): + if pr.created_at < datetime.datetime(2020, 5, 1, 0, 0): reached_old_prs = True pass merged_at = pr.merged_at @@ -490,7 +507,7 @@ def _get_prs(release_name, state="closed"): yield pr -def main(argv): +def main(argv, seen_prs=set()): newest_release = None if argv[1] == "--print-next-minor-version": @@ -578,21 +595,24 @@ def main(argv): owner = None if ident.startswith("pr"): pull_request = ident[len("pr"):] - user = req["head"].user - owner = user.login - if owner in DEVTEAM: - owner = None - text = ".. _Pull Request {0}: {1}/pull/{0}".format(pull_request, PROJECT_URL) - prs_content = extend_target("github_links", text, prs_content) - if owner: - to_doc += "\n(thanks to `@{} `__).".format( - owner, owner, - ) - to_doc += f"\n`Pull Request {pull_request}`_" - labels = None - if req and 'labels' in req: - labels = req['labels'] - text_target = _text_target(pull_request, labels=labels) + if pull_request in seen_prs: + to_doc = None + else: + user = req["head"].user + owner = user.login + if owner in DEVTEAM: + owner = None + text = ".. _Pull Request {0}: {1}/pull/{0}".format(pull_request, PROJECT_URL) + prs_content = extend_target("github_links", text, prs_content) + if owner: + to_doc += "\n(thanks to `@{} `__).".format( + owner, owner, + ) + to_doc += f"\n`Pull Request {pull_request}`_" + labels = None + if req and 'labels' in req: + labels = req['labels'] + text_target = _text_target(pull_request, labels=labels) elif ident.startswith("issue"): issue = ident[len("issue"):] text = ".. _Issue {0}: {1}/issues/{0}".format(issue, PROJECT_URL) @@ -604,20 +624,21 @@ def main(argv): prs_content = extend_target("github_links", text, prs_content) to_doc += f"{short_rev}_" - to_doc = wrap(to_doc) - if text_target is not None: - history = extend_target(text_target, to_doc, history) - if req and req['labels']: - labels = req['labels'] - if 'area/datatypes' in labels: - user_announce = extend_target("datatypes", to_doc, user_announce) - if 'area/visualizations' in labels: - user_announce = extend_target("visualizations", to_doc, user_announce) - if 'area/tools' in labels: - user_announce = extend_target("tools", to_doc, user_announce) - _write_file(history_path, history) - _write_file(prs_path, prs_content) - _write_file(user_announce_path, user_announce) + if to_doc is not None: + to_doc = wrap(to_doc) + if text_target is not None: + history = extend_target(text_target, to_doc, history) + if req and req['labels']: + labels = req['labels'] + if 'area/datatypes' in labels: + user_announce = extend_target("datatypes", to_doc, user_announce) + if 'area/visualizations' in labels: + user_announce = extend_target("visualizations", to_doc, user_announce) + if 'area/tools' in labels: + user_announce = extend_target("tools", to_doc, user_announce) + _write_file(history_path, history) + _write_file(prs_path, prs_content) + _write_file(user_announce_path, user_announce) def _read_file(path): @@ -625,7 +646,9 @@ def _read_file(path): return f.read() -def _write_file(path, contents): +def _write_file(path, contents, skip_if_exists=False): + if skip_if_exists and os.path.exists(path): + return with open(path, "w") as f: f.write(contents)