Feature#472

It seems a great work was done. Nevertheless, please don't put dummy elements into a tests files, put on dummy folder (as usually).


doubts about MinMaxScaler()

Thank you and congrats for the terrific job,
I was trying to understand a little bit more about this preprocessing step in order to apply the same framework to some of my data. You are scaling the whole dataset to min-max values of only a part of it, is that correct? Is that just to overcome expected biological differencies among samples or is that a required step to tune different datasets counts distributions? I'm trying to project an external dataset on pre-defined PLS  from a training set, do you think including this scaling passage (in my case the ext data to reference) could improve the transform?
Thanks a lot!
mmmod = MinMaxScaler().fit(exp[list(set(cntrl) & set(younger))].T)
# apply AHBA PCA model to GTEx data
hb_pcatfm = pcamod.transform(mmmod.transform(exp[exp.columns[:-1]].T))

Hi @castaway1990
Thanks for the kind words, and for raising this issue! Yeah so two things are happening here:
First, I'm MinMax scaling because the Allen Human Brain Atlas data (which served as the discovery sample) is all 0-1 normalized. This solution is actually imperfect -- ideally we'd use the exact same normalization in this dataset as we do in the Allen, but that isn't possible given differences across the two datasets. So, by at least constraining the value range in the new dataset to be the same as the discovery dataset, we are in theory increasing the likelihood of generalization.
The second thing that's happening here is that we are MinMax scaling on just a subset of the new data. The reason is because the Allen Human Brain Atlas is based on adult humans between the ages of 20 and 60. Because gene expression changes somewhat with aging and rather dramatically during development, we want to make sure we are normalizing the new dataset based on individuals of the same age. You'll see we do this in the other datasets, when we e.g. base the normalization on Humans and leave the non-human primates out of the fitting step. However, once we establish the normalization on this subset that is similar to the discovery dataset, we apply it to the whole dataset.
So to answer the question directly -- I don't think this is a necessary step but I think it's highly recommended in this particular context. It might not be necessary in your context. But having the values be along a similar range, and basing that normalization on a subset as similar as possible to the discovery dataset, are recommended steps.
Let me know if that doesn't make sense or if you have some follow-up questions.


Master not pointing to latest commit?

I just noticed that master is not actually pointing to version 5.0.0 but instead 4.0.0. Is there a reason that master is behind the tagged release?

Is this still an issue?


Migrations for multi column primary keys do not work

Hi @odan
first of all, thank you for this great script :-)
I am using the latest version (3.1.0) and unfortunately have the same issue: Multi column primary keys cannot be generated. The problem is, that after every addColumn() in the generated migration file, there is a call to save().
The table:
CREATE TABLE `test` (
  `pk1` int(11) unsigned NOT NULL,
  `pk2` int(11) unsigned NOT NULL,
  PRIMARY KEY (`pk1`,`pk2`)
) ENGINE=InnoDB

Will produce a migration file like this:
...
$table = $this->table("test", ['id' => false, 'primary_key' => ["pk1", "pk2"], 'engine' => "InnoDB", 'encoding' => "utf8", 'collation' => "utf8_general_ci", 'comment' => "", 'row_format' => "Dynamic"]);
$table->addColumn('pk1', 'integer', ['null' => false, 'limit' => MysqlAdapter::INT_REGULAR, 'precision' => 10, 'signed' => false])->save();
$table->addColumn('pk2', 'integer', ['null' => false, 'limit' => MysqlAdapter::INT_REGULAR, 'precision' => 10, 'signed' => false, 'after' => 'pk1'])->save();
$table->save();
...

Which will then, when running the migration with phinx, produce the mysql query (output via -vvv option):
 -- createTable('test')
CREATE TABLE `test` (`pk1` INT(11) unsigned NOT NULL, PRIMARY KEY (`pk1`,`pk2`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT=''  ROW_FORMAT=Dynamic;

To fix this, the save() call after the addColumn() calls should be removed, as there is a final $table->save() call anyways.
$table = $this->table("test", ['id' => false, 'primary_key' => ["pk1", "pk2"], 'engine' => "InnoDB", 'encoding' => "utf8", 'collation' => "utf8_general_ci", 'comment' => "", 'row_format' => "Dynamic"]);
$table->addColumn('pk1', 'integer', ['null' => false, 'limit' => MysqlAdapter::INT_REGULAR, 'precision' => 10, 'signed' => false]);
$table->addColumn('pk2', 'integer', ['null' => false, 'limit' => MysqlAdapter::INT_REGULAR, 'precision' => 10, 'signed' => false, 'after' => 'pk1']);
$table->save();

Originally posted by @geiru in https://github.com/odan/phinx-migrations-generator/issues/43#issuecomment-445206153

Thanks a lot!


Documented what materials can't be parsed

Description
Wrote up what materials can't be parsed in the README. Also added a new section in the user guide for issues like this.
Fixes #542.
Checklist

[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation (if applicable)

Thanks for the review.


How can make a robot use a tool?

Hi, I want to know how to fix a tool, such as a stick, on the gripper of a robot, such as Franka, and then complete some tasks of using tools. I didn't find any relevant examples. My understanding is that I may need to remodel a robot's urdf file and then load it? Can you provide some reference?

You can follow this tutorial (note this is in our development branch docs and is WIP) - it follows the import of a brand new robot, you can simply edit the part after the USD if you'd like. https://behavior.stanford.edu/omnigibson-develop/tutorials/custom_robot_import.html
A much simpler alternative is you could just import the object in OmniGibson and attach it to the robot's hand at runtime using the create_joint function.


Batch download for pre-trained models

Background
After talking with @joverhul I think we should provide a feature to users who need to import commonly used pre-trained models. Currently we only have documented the process of downloading/uploading models into the pFDA environment. While this is functional, it might be cumbersome or tedious when having to import the same models over and over again.
Open Questions

Which models should be included into a pre-compiled script?
These  can be uploaded into the pFDA shared Space. Once we have these uploaded and identified, I can write a script to automate the download of these files onto a workstation
How many different model scripts should we provide?
Do we need to create separate snapshots for this, or should we just download necessary files at runtime?
If the files are not too large, they can be packaged into a pre-built snapshot. The only downside to this method is that they will need to be rebuilt whenever models need to be updated.

I am going to close this, since we've implemented the MODAC API. This API module is available in AMPL on 1.7.0, however, I've also loaded the module in our latest image, which uses the pfda branch on the fork https://github.com/mass-matrix/AMPL


Jumping locale depending on interaction

We have built a bot for MSTeams. To interact we implemented a custom TeamsActivityHandlerin which we register ourself for the onMessage-event using a callback.
This worked perfectly fine for the recent months, but all of a sudden we get different locale's for the user depending on how he interacts with MS Teams.
When the user writes a test-message: (message happend at: 2023-09-12T09:29:12.3763679Z)
  "entities": [
    {
      "locale": "de-CH",
      "country": "CH",
      "platform": "Mac",
      "timezone": "Europe/Zurich",
      "type": "clientInfo"
    }
  ],
  "locale": "de-CH",
  "localTimezone": "Europe/Zurich",

When the user pushs a button: (message happend at: 2023-09-12T09:29:07.997Z)
  "entities": [
    {
      "locale": "de-DE",
      "country": "DE",
      "platform": "Mac",
      "timezone": "Europe/Zurich",
      "type": "clientInfo"
    }
  ],
  "locale": "de-DE",
  "localTimezone": "Europe/Zurich",

This happens after we switched the language within the teams client. So for some reason the language is not switched for all kind of messages.
Expected behaviour:
The same user should always have the same locale information as long as he does not change it within the settings.
Our Bot/App-ID is: 4112cc9a-d683-4ffd-b0bc-2013af7c7497
Let me know if you need any further information.

Thank you for reporting this issue, we will check this at our end and get back to you.

@sschoeb - We checked this at our end, we are able to repro this issue with English (Australia). Whereas changing the language to Hindi, English (US), English (UK) has same locale and country.
When we change the language to English (Australia), sending a text message has correct locale, but pressing a button action has incorrect locale info.

Sending a text message has below info -

 "entities": [
        {
            "locale": "en-AU",
            "country": "AU",
            "platform": "Windows",
            "timezone": "Asia/Calcutta",
            "type": "clientInfo"
        }
    ],

Pressing a button has below info -

 "entities": [
        {
            "locale": "en-GB",
            "country": "GB",
            "platform": "Windows",
            "timezone": "Asia/Calcutta",
            "type": "clientInfo"
        }
    ],

We will check this internally and get back to you.

We raised a bug for the same, we will keep you posted on the updates. Thank you.

@Meghana-MSFT Thanks for your feedback. As this can end up in super confusing behaviour for our endusers, I would consider it as quite serious. Is there any timeline you can share? Or maybe just the priority of the issue within the team?
In case this would stay for months we would have to find other solutions/workaround for our users.

Unfortunately, we do not have an ETA to share with you. Please be informed that we will keep you posted on the updates. Thank you.

Any update on this bug? It's impacting the functionality of the bots heavily. It was working the past years, so the bug has to be introduced with an update.

@Meghana-MSFT We are getting negative feedback of our customers as this bug leads to a very bad user experience. I would still consider this a serious bug which is hard to workaround (imagine a conversation with a real person which does change the language on each conversation turn).
We would be very happy if you could escalate this issue or at least provide a workaround as long as it cannot be fixed. Thank you.

We have increased the priority of the bug and are following up with the engineering team. Unfortunately, we do not have a workaround. We will keep you posted on the updates. Thank you.

@Meghana-MSFT additional information for the issue:
The problem does only occure, when you switch the locale inside a language. E.g. when you switch from "de-CH" to "de-DE", or from "en-US" to "en-GB"

@Meghana-MSFT We now have to deal with this issue for more around 4 months. As I think that having different languages for the user depending the type of interaction, this is quite a dealbreaker!
It's like me having this conversation with you:
Me: Hi @Meghana-MSFT How are you?
You: I'm good, what about you?
Me: Auch gut, Danke.
I think you would be very confused as a user. So are our users! Is there any news on this?

Apologies for the inconvenience caused to you. We are following up with the engineering team. We will keep you posted on the updates. Thank you.

@Meghana-MSFT Any update on this issue?

Unfortunately, we do not have any ETA/update to share. We are following up with the engineering team. We will keep you posted on the updates. Thank you.

@Meghana-MSFT still waiting for your update - any news on this?

@sschoeb - We are following up with the engineering team. We will keep you posted on the updates. Thank you.


Touchscreen fixes

Thanks for your PR! I tested your changes and got an exception on reconnect. The mtdev_open function call in INIT in kivy/lib/mtdev.py on device initialization throws an exception ("Unable to open device").
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/kivy/input/providers/mtdev.py", line 288, in _thread_run
_device = Device(_fn)
File "/usr/local/lib/python2.7/dist-packages/kivy/lib/mtdev.py", line 148, in init
raise Exception('Unable to open device')
Exception: Unable to open device
Your code is similar to mine, yet I didn't have the same problem. After some debugging I found that the reason for this is that the idling time of 0.05 per loop is not long enough. The os.path.exists function detects the presense of the device faster than its ready to be connected to. Thus I would suggest waiting like 1 second per loop. It should also decrease CPU load. Currently, after the exception has been thrown in INIT, there won't be any more reconnects.

iCmdr,  What touchscreen you are using?
Maybe it depends from the touchscreen manufacturer?
If it is so, you should add sleep of 1 second right after mtdev file input is detected and leave 0.05 s of polling. In this case, it will work 100 % of the time.
I am just waiting while input file appears on the system. Just make sleep one more second right after it is got detected.
For my touchscreen it worked perfectly 24 hours, with no crashes or what so ever.

I am using a Waveshare Capacitive IPS touchscreen (http://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)). The touch controller works over USB. I can run further tests later this evening.

this patch fixes all my problems with disconnecting usb keyboard and usb sound card.. is this already in the main branch?

@audryste Sorry for the delay and thanks for the reconnecting + other fixes! 🍡


[SSE Sidecar] GraphQL Analysis

@hectoratcasper commented on Thu Jun 02 2022
Identify required elements to support future implementations for GraphQL
Expected result
GraphQL Analysis determining the following:
Re usage of RESTful models o new design enhancements.
Subscribe to various chunks of server data
Request multiple objects
Maintain constant connection with server using Websockets (bi - direccional)
Resources
Please refer to the SSE Sidecar High Level Design document for high level implementation details.
https://docs.google.com/document/d/1vBRbBmij9HHotY_8HIaUKk5a9Kq9Rqgxlk-UAE_F7xs/edit
Repository for this project:
https://github.com/CasperLabs/event-sidecar

As per the triage with Jakub, the business case for this requirement is not clear. Therefore, advised to close this and revisit in the future should GraphQL is required. On that basis, closing this ticket.


Add images promote cmd

What this PR does / why we need it:
This adds the cmd 'images promote', which promotes verified
containerdisks from a source to a target registry.
The cmd shares most of its logic with 'images verify', so the shared
parts were moved to common.go.
Which issue(s) this PR fixes:
Fixes #2
Special notes for your reviewer:
Merge after #18
Release note:

Add cmd to promote verified containerdisks to another registry

What would be the workflow here? Would it be something like

build image and push to staging registry
test (verify) image
promote image from staging registry to official registry

@davidvossel Exactly, that would be the workflow.

What would be the workflow here? Would it be something like

build image and push to staging registry
test (verify) image
promote image from staging registry to official registry

Yep. Right now with subcommands. if we like we can also easily refactor the code later and have a full pipeline command to better parallelize the steps if we wish.

@rmohr I changed it so crane.Copy is used and the stage and a possible error of every artifact are saved into the results file. Is it ready to merge now?

/lgtm
/approve


Accessibility support

What problem does this feature solve?
组件是否考虑对ARIA的支持, 如果框架走国际路线，必须要支持 Accessibility，国外有些地区法律法规需要有Accessibility支持。
What does the proposed API look like?
Angular Material Design 的组件基本会支持Accessibility
https://material.angular.io/components/paginator/overview

we will support universal render first, and will take aria into consideration then.

@vthinkxie  现在的v1.2是否已完全支持SSR了呢？


UVI Request

--- UVI JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v4.19 to before v5.4.128",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4d8fcf216c90bc25e34ae2200aa8985ee3158898",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4b16118665e94c90a3e84a5190486fd0e4eedd74"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "4d8fcf216c90bc25e34ae2200aa8985ee3158898",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "4b16118665e94c90a3e84a5190486fd0e4eedd74",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "net/mlx5e: Fix page reclaim for dead peer hairpin\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.4.128 by commit 4b16118665e94c90a3e84a5190486fd0e4eedd74, it was introduced in version v4.19 by commit 4d8fcf216c90bc25e34ae2200aa8985ee3158898. For more details please see the references link."
}
--- UVI JSON ---

This issue has been assigned UVI-2021-1000918


parol-ls ConnectionRefused OS error

On parol-ls 0.14.0:
Starting parol language server
Error: Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }

Kernel 5.19.0-50-generic Ubuntu 22.04

@nblei ,
thank you for reporting this issue.
Did you use Visual Studio Code plus parol's VS Code extension?

I installed Ubuntu 22.04.2 LTS on a new virtual machine alongside with code and parol-ls 0.14.0.
In this configuration I couldn't reproduce your problem.
I think I need more information and maybe a little support from your side to be able to figure out what the cause may be.

  Please ignore.

So I assume you use neovim as your favorite editor, right? ,😉
Can I ask you how the overall experience with parol-ls is?
I have very little feedback about that.

Honestly I don't have much feedback.  I'm using it so I can make changes to Dalance's veryl project.  Its quite straightforward to make minor changes to the grammar.

Ok, fine.
Don't hesitate to contact me in case of any problems regarding parole or parole language server.
Good luck!

@jsinger67 --- Not an issue, but a feature that could be extremely useful:  auto-generation of tests based on the parol grammar file.  Dalance's veryl grammar is quite complex and the ad-hoc testcases are currently inadequate.  Being able to generate automatic tests (modulo some recursion limit) would be very useful.

@nblei ,
Good point. I will think about that.
A try in this direction had been implemented by me.
Former there was a language generator which was able to generate random strings from user's grammar.
Unfortunately I had to disable the language generator because of version conflicts (see issue #135).
Anyway, I think your proposal is worth thinking about. We have so much auto-generation, why not generate tests 😉


Fix multiple file upload

Fixes #1806
Fixes #1811

coverage: 94.271%. remained the same
when pulling 610713bc5ed6898e6288730fdae5c9ba71a1d52e on bugfix/multiple-file-upload
into b244d809089eb584ce3e9661d619ed5564ca4103 on main.


Using Godot api in ECS systems

Problem
It is not clear how we can get the Godot api to work in the ECS context. As an example, using Godot physics api to detect collisions or make physics simulation in a ECS system. I can see there is a Shape3dComponent but It is not clear how it can be used to access the Godot physics api which relies on kinematic, static bodies and other classes. The same applies for other classes and features. Maybe it is about documentation.
Proposal
As an idea, I don't know how feasible it is to get Godot scenes registered as components to have the full Godot api available in ECS systems. While adding complex scenes as components is not what ECS is about it could integrate Godot in the ECS paradigm.

Yup, it's not clear because right now there is not a specific way of doing it. There are not Components or Systems that integrate the PhysicsServer in Godex (like for the rendering).
I'm working on adding the physics engine to Godex (fully maintained by Godex) so you will be able to create simulations that are really optimized and convenient to deal with, using ECS. For this reason I didn't add a specific way to deal with the PhysicsServer (yet at least).
I think that a way to support the PhysicsServer in Godex, like I did for the RenderingServer, make sense. I think we need that, because some hybrid projects where the gameplay is Scene based and ECS based: will find that a lot useful.
However, my main plan is to allow an ECS physics to run, because for the game I'm working on my plan is to use only ECS for the gameplay.

As an idea, I don't know how feasible it is to get Godot scenes registered as components to have the full Godot api available in ECS systems. While adding complex scenes as components is not what ECS is about it could integrate Godot in the ECS paradigm.

The idea is that you can have some _process() that read and write data to Godex. For example, in Wander the gameplay is fully handled by Godex, but the Character animations are node bases using the AnimationPlayer (since there are not ECS animations, yet). So, each frame, my AnimationPlayer has a script that extract data from the Godex world. This is dome by using the DynamicQuery, here you can see an example:
var query: DynamicQuery = null

func _process(delta: float):
	if query == null:
    		query = DynamicQuery.new()
		query.with_component(ECS.Player, false)
		query.with_component(ECS.Health, false)
		query.with_component(ECS.Shield, false)
		query.maybe_component(ECS.Stunned, false)
		query.maybe_component(ECS.HasBall, false)
		query.maybe_component(ECS.HasWeapon, false)

	# Fetches the above data from the world
	query.begin(ECS.get_active_world())

	while query.is_not_done():
		var health_comp = query.get_component(1)
		var shield_comp = query.get_component(2)
		var stunned_comp = query.get_component(3)
		var has_ball_comp = query.get_component(4)
		var has_weapon_comp = query.get_component(5)

		if stunned_comp != null:
			# Not stunned
			pass
		else:
			# Stunned
			pass

		# etc...

		query.next()

	query.end()

In the same way, you can also pass the data. For example, let's suppose you have an Area that does damage to the Characters that goes inside.
var query: DynamicQuery = null

func _process(delta: float):
	if query == null:
    		query = DynamicQuery.new()
		query.with_component(ECS.Health, true) # This time it's MUTABLE

	# Fetches the above data from the world
	query.begin(ECS.get_active_world())

	# For each overlapped Character
	for body in $Area.get_overlapping_bodies():
		if body is Character:
			# This extracts the `Entity` node from the Character that entered the Area.
			# Imagine that Character scene is as follows:
			# Character (RigidBody)
			#  |- CharacterEntity (Entity)
			var entity = body.get_child("CharacterEntity")

			# If the `World` has this entity, fetch it.
			if query.has(entity.get_entity_id()):
				# Fetches a specific entity ID. You can think about it like data_array[entity_id]
				query.fetch(entity.get_entity_id())

				# Take the component health
				var health_comp = query.get_component(0)

				# Deal damage to this entity.
				health_comp.health -= 10;

	query.end()

This is not the final API and is supposed to evolve, so if you have any idea to improve it, I'm glad to read that. Hope it's clear, anyway let me know if you have other questions.

@AndreaCatania  Thanks for the detailed answer. I have a much clear idea of the current state of the project now and how both "worlds" can be used together.

Thanks for this question, I've added a Wiki page https://github.com/GodotECS/godex/wiki/Godex-and-Godot-communication

I've started to support Bullet physics with Godex. I've created a WIKI page here: https://github.com/GodotECS/godex/wiki/Bullet-Physics-engine


set up template for docs

I have setup the required infrastructure for documentation. We should of course add more documentation later when the API stabilizes (see #7).

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


🐛 fix: update referenced packages (Update referenced package versions #261 create-svelte outdated #263)

resolves #261
resolves #263

I'm currently waiting to merge this, to see if we introduced any regressions with the last release. Just to be sure to be able to differentiate potential bugs from different features.

I'm going to merge this either way now, as without this, other problems occur. See #228


Add proper mappings management

This PR implements the CL side of the proposition outline in #2358.
That is, it defines 4 SSSOM mapping sets (declared in the ODK, but as “manually maintained”, so all the code to produce them is in the custom Makefile):

fbbt.sssom.tsv: This is basically a local mirror of the FBbt mapping set, except that it only contains mappings relevant to CL (FBbt-to-CL mappings; all FBbt-to-something-else mappings are removed).
zfa.sssom.tsv: A mapping set obtained by extracting the CL-pointing cross-references in ZFA (ZFA is the source of truth for the CL-ZFA mappings).
cl-local.sssom.tsv: A mapping set obtained by extracting cross-references from the CL edit file, for all foreign ontologies for which CL is the source of truth of mappings (all of them except FBbt and ZFA).
cl.sssom.tsv: A “meta” set made by combining all three sets above. This is the set that will ultimately be published.

The FBbt and ZFA sets are committed to the repository (in src/mappings rather than src/ontology/mappings, to align CL with the recommendations of the ODK) since they are dependent on remote resources. This is the same logic as the one we use in Uberon.
The CL-local and CL sets are not committed since they can always be re-generated as needed from files that are present in any copy of the repository.
The FBbt and ZFA sets are also used to populate the mappings.owl component, which contains the FBbt and ZFA mappings as old-style cross-references for backwards compatibility (previously only FBbt mappings were present in that component).

Awwesome, THANKS!


Runtime problem when using Apple Silicon

Came to http-client (another project) from: https://twitter.com/kelseyhightower/status/1696196971277775348
Installed fpm with brew from homebrew-fortran.
% brew install fpm
==> Fetching dependencies for fortran-lang/fortran/fpm: ca-certificates
==> Fetching ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2023-08-22
################################################################################################################################################### 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:a331e92e7a759571296581f029e5cc2ec7cee70cd92dc0b5f8eb76095f94a21a
################################################################################################################################################### 100.0%
==> Fetching fortran-lang/fortran/fpm
==> Downloading https://github.com/fortran-lang/fpm/releases/download/v0.9.0/fpm-0.9.0.zip
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/233763778/b18842ea-8633-4f96-bf20-fe2e3190adc4?X-Amz-Alg
################################################################################################################################################### 100.0%
==> Installing fpm from fortran-lang/fortran
==> Installing dependencies for fortran-lang/fortran/fpm: ca-certificates
==> Installing fortran-lang/fortran/fpm dependency: ca-certificates
==> Pouring ca-certificates--2023-08-22.arm64_ventura.bottle.tar.gz
==> Regenerating CA certificate bundle from keychain, this may take a while...
🍺  /opt/homebrew/Cellar/ca-certificates/2023-08-22: 3 files, 221.7KB
==> Installing fortran-lang/fortran/fpm
==> Using Homebrew-provided Fortran compiler
This may be changed by setting the FC environment variable.
==> ./install.sh --prefix=/opt/homebrew/Cellar/fpm/0.9.0
🍺  /opt/homebrew/Cellar/fpm/0.9.0: 6 files, 1.5MB, built in 1 minute 11 seconds

Then noticing that the http-client example code gives a runtime failure:
 Error message:URL using bad/illegal format or missing URL

Figured that internally it uses this project, fortran-curl.
Maybe you have a clue where to look, since everything compiles just fine. Not sure if Apple Silicon is even the thing causing the bug.
Running all your example programs:
for file in build/gfortran_E167FD2A985B468F/example/*; do [[ -x "$file" ]] && echo "Running $file" && ./"$file"; done

Running build/gfortran_E167FD2A985B468F/example/dict
Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/download
Saving https://netlib.org/fftpack/test.f to file data.txt ...
Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/getinfo
Sending request ...
Error: URL using bad/illegal format or missing URL
Running build/gfortran_E167FD2A985B468F/example/gopher
STOP Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/http
STOP Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/imap
* URL rejected: Malformed input to a URL function
* Closing connection -1
Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/post
* URL rejected: Malformed input to a URL function
* Closing connection -1
STOP Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/smtp
* URL rejected: Malformed input to a URL function
* Closing connection -1
Error: curl_easy_perform() failed
Running build/gfortran_E167FD2A985B468F/example/version
Version: libcurl/8.1.2 SecureTransport (LibreSSL/3.3.6) zlib/1.2.11 nghttp2/1.51.0

Host: x86_64-apple-darwin22.0
cURL: 8.1.2
SSL:  SecureTransport (LibreSSL/3.3.6)

Escaped:   escaped%20string%20%26
Unescaped: escaped string &

Though above it says x86_64, it's actually ARM64.
% file build/gfortran_E167FD2A985B468F/example/*
build/gfortran_E167FD2A985B468F/example/dict:         Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/dict.log:     empty
build/gfortran_E167FD2A985B468F/example/download:     Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/download.log: empty
build/gfortran_E167FD2A985B468F/example/getinfo:      Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/getinfo.log:  empty
build/gfortran_E167FD2A985B468F/example/gopher:       Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/gopher.log:   empty
build/gfortran_E167FD2A985B468F/example/http:         Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/http.log:     empty
build/gfortran_E167FD2A985B468F/example/imap:         Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/imap.log:     empty
build/gfortran_E167FD2A985B468F/example/post:         Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/post.log:     empty
build/gfortran_E167FD2A985B468F/example/smtp:         Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/smtp.log:     empty
build/gfortran_E167FD2A985B468F/example/version:      Mach-O 64-bit executable arm64
build/gfortran_E167FD2A985B468F/example/version.log:  empty

Apart from the http example outputting some garbage (probably an uninitialised string) under the 0.1.0 and 0.1.1 tag, all of the earlier versions fail in a fairly similar way. So it's not an introduced bug (not a regression).

In the program examples/http/http.f90, could you please output the return code of curl_easy_perform(curl_ptr)?
rc = curl_easy_perform(curl_ptr)
print *, rc

Does the following example in C work on your system?
/* example.c */

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.netlib.org/slatec/readme");

        res = curl_easy_perform(curl);

        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));

        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();

    return 0;
}

$ cc -I/usr/local/include -L/usr/local/lib -o example example.c -lcurl

Yes, both work.
% build/gfortran_E167FD2A985B468F/example/http
           3
STOP Error: curl_easy_perform() failed
% ./example
 ===== readme for slatec =====

SLATEC Common Mathematical Library, Version 4.1, July 1993
a comprehensive software library containing over
1400 general purpose mathematical and statistical routines
written in Fortran 77.

Together with ChatGPT (🙈) I managed to build something that successfully passes a string from Fortran to C. Not sure if this helps any.
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

void http_get(char *url, int length){
  CURL *curl;
  CURLcode res;
  char c_url[length + 1];

  strncpy(c_url, url, length);
  c_url[length] = '\0';

  curl_global_init(CURL_GLOBAL_DEFAULT);
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, c_url);
    res = curl_easy_perform(curl);
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    curl_easy_cleanup(curl);
  }
  curl_global_cleanup();
}

program http_get_fortran
  use, intrinsic :: iso_c_binding
  implicit none

  call perform_http_get("http://example.com")

contains

  subroutine perform_http_get(url_f)
    character(len=*) :: url_f
    character(len=18), target :: url_target
    type(C_PTR) :: url_c_ptr
    integer(kind=C_INT) :: length

    interface
      subroutine http_get(url, length) bind(C, name='http_get')
        import :: C_PTR, C_INT
        type(C_PTR), value :: url
        integer(kind=C_INT), value :: length
      end subroutine http_get
    end interface

    url_target = url_f
    length = len_trim(url_target)
    url_c_ptr = c_loc(url_target)

    call http_get(url_c_ptr, length)
  end subroutine perform_http_get

end program http_get_fortran

For good measure a version that doesn't use the length (2nd) parameter, but successfully passes just a null terminated string.
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

void http_get(char *url){
  CURL *curl;
  CURLcode res;

  curl_global_init(CURL_GLOBAL_DEFAULT);
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, url);
    res = curl_easy_perform(curl);
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    curl_easy_cleanup(curl);
  }
  curl_global_cleanup();
}

program http_get_fortran
  use, intrinsic :: iso_c_binding
  implicit none

  call perform_http_get("http://example.com")

contains

  subroutine perform_http_get(url_f)
    character(len=*) :: url_f
    character(len=18), target :: url_target
    type(C_PTR) :: url_c_ptr

    interface
      subroutine http_get(url) bind(C, name='http_get')
        import :: C_PTR
        type(C_PTR), value :: url
      end subroutine http_get
    end interface

    url_target = url_f // C_NULL_CHAR
    url_c_ptr = c_loc(url_target)

    call http_get(url_c_ptr)
  end subroutine perform_http_get

end program http_get_fortran

It seems as interface curl_easy_setopt() does not pass the whole character string to libcurl. Since libcurl 7.17.0, strings are copied by default, so, technically, it shouldn’t be a problem at all.
Does example http.f90 work when you add c_null_char to the URL?:
character(len=*), parameter :: DEFAULT_URL = 'https://www.netlib.org/slatec/readme' // c_null_char

Sadly adding c_null_char wasn't enough.
program main
    use, intrinsic :: iso_c_binding
    use, intrinsic :: iso_fortran_env, only: i8 => int64
    use :: curl
    use :: http_callback
    implicit none

    character(len=*), parameter :: DEFAULT_PROTOCOL = 'http'
    character(len=*), parameter :: DEFAULT_URL      = 'https://www.netlib.org/slatec/readme' // c_null_char

    type(c_ptr)                 :: curl_ptr
    integer                     :: rc
    type(response_type), target :: response

% build/gfortran_E167FD2A985B468F/example/http
           3
STOP Error: curl_easy_perform() failed

Could you try the latest commit that adds interfaces and calls to curl_global_init() and curl_global_cleanup()?
Which GNU Fortran compiler flags are set? If built with fpm, have you selected profile debug or release to make fortran-curl?

Just fpm build (so that should be debug by default)
Sadly it still has issues.
% build/gfortran_E167FD2A985B468F/example/http
STOP Error: curl_easy_perform() failed

Unfortunately, I can’t reproduce this behaviour, neither on Linux nor FreeBSD. Hard to tell from the distance what the cause of this issue is, could be related to libcurl or GNU Fortran.

On my Apple M1:
$ git clone https://github.com/interkosmos/fortran-curl
Cloning into 'fortran-curl'...
remote: Enumerating objects: 484, done.
remote: Counting objects: 100% (113/113), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 484 (delta 32), reused 54 (delta 24), pack-reused 371
Receiving objects: 100% (484/484), 98.20 KiB | 866.00 KiB/s, done.
Resolving deltas: 100% (228/228), done.
$ cd fortran-curl
$ fpm build
 + mkdir -p build/dependencies
curl_macro.c                           done.
curl.f90                               done.
libfortran-curl.a                      done.
dict.f90                               done.
download.f90                           done.
getinfo.f90                            done.
gopher.f90                             done.
http.f90                               done.
imap.f90                               done.
smtp.f90                               done.
post.f90                               done.
version.f90                            done.
dict                                   done.
download                               done.
getinfo                                done.
gopher                                 done.
http                                   done.
imap                                   done.
smtp                                   done.
post                                   done.
version                                done.
[100%] Project compiled successfully.
$ fpm run --example http
Project is up to date
STOP Error: curl_easy_perform() failed

On my M1, the error is actually on CURLOPT_TIMEOUT: from the main program,
    ! Set curl options.
    rc = curl_easy_setopt(curl_ptr, CURLOPT_DEFAULT_PROTOCOL, DEFAULT_PROTOCOL)
    if (rc/=CURLE_OK) stop 1
    rc = curl_easy_setopt(curl_ptr, CURLOPT_URL,              DEFAULT_URL)
    if (rc/=CURLE_OK) stop 2
    rc = curl_easy_setopt(curl_ptr, CURLOPT_FOLLOWLOCATION,   1)
    if (rc/=CURLE_OK) stop 3
    rc = curl_easy_setopt(curl_ptr, CURLOPT_TIMEOUT,          10)
    if (rc/=CURLE_OK) stop 4 ! Stop here

Yes, for me as well. But if you comment it out, it will still fail later as above.

On Apple M1 systems with homebrew there are two competing curl installs:

system provided (currently 7.88.1)
homebrew provided (8.2.1), which I link via

-L/opt/homebrew/Cellar/curl/8.2.1/lib/
-I/opt/homebrew/Cellar/curl/8.2.1/include/

I've tried manually linking against either, but the same behavior is seen

I've added some debugging prints to the actual libcurl. No need for mocks 🙈.
You can download curl from: https://curl.se/download.html
Build it with:
./configure  --without-ssl
make
make install

This gets installed in a different place than where macOS has libcurl. So we override the DYLD library path order.
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH

curl_easy_setopt() is located in lib/setopt.c at the bottom of the file.
You can add some debugging like this:
void print_string_hex(const char *str) {
    if (str == NULL) return;
    while (*str != '\0') {
        printf("%02x ", (unsigned char)*str);
        str++;
    }
    printf("\n");
}

/*
 * curl_easy_setopt() is the external interface for setting options on an
 * easy handle.
 *
 * NOTE: This is one of few API functions that are allowed to be called from
 * within a callback.
 */

#undef curl_easy_setopt
CURLcode curl_easy_setopt(struct Curl_easy *data, CURLoption tag, ...)
{
  va_list arg;
  CURLcode result;

  if(!data)
    return CURLE_BAD_FUNCTION_ARGUMENT;

  va_start(arg, tag);

  printf("Debug: Entering curl_easy_setopt, option: %d\n", tag);

  // Add your debugging prints here
  switch(tag) {
    case CURLOPT_DEFAULT_PROTOCOL:
    {
      char *proto = va_arg(arg, char *);
      printf("Debug: curl_easy_setopt, CURLOPT_DEFAULT_PROTOCOL: %s\n", proto);
      print_string_hex(proto);
      break;
    }
    case CURLOPT_URL:
    {
      char *url = va_arg(arg, char *);
      printf("Debug: curl_easy_setopt, CURLOPT_URL: %s\n", url);
      print_string_hex(url);
      break;
    }
    case CURLOPT_TIMEOUT:
    {
      long timeout = va_arg(arg, long);
      printf("Debug: curl_easy_setopt, CURLOPT_TIMEOUT: %ld\n", timeout);
      break;
    }
    default:
    {
      // Handle other options or do nothing
      break;
    }
  }

  result = Curl_vsetopt(data, tag, arg);

  va_end(arg);

  printf("Debug: Exiting curl_easy_setopt\n");

  return result;
}

I added some debugging prints like this to examples/http/http.f90:
    ! Set curl options.
    print *, 'CURLOPT_DEFAULT_PROTOCOL ', CURLOPT_DEFAULT_PROTOCOL, ' DEFAULT_PROTOCOL ', DEFAULT_PROTOCOL
    rc = curl_easy_setopt(curl_ptr, CURLOPT_DEFAULT_PROTOCOL, DEFAULT_PROTOCOL)
    print *, 'CURLOPT_URL ', CURLOPT_URL, ' DEFAULT_URL ', DEFAULT_URL
    rc = curl_easy_setopt(curl_ptr, CURLOPT_URL,              DEFAULT_URL)

And augmented curl_easy_setopt_char() inside src/curl.f90 with a print statement, so we can see it's actually been executed.  If there are two different strings, you would expect some difference.
The CURLOPT_TIMEOUT value also doesn't quite make sense as a UNIX timestamp.
Maybe a compiler issue? But please take a look at my C code. I might have a made a mistake with pointers.

Hmm, it looks like my call to va_arg() will modify the variadic argument list va_list arg (go to the next one for the next call).
So as a debugging step it's okay right now, but it does influence the code paths that follow.

I've extracted a minimal test on variadic functions with C/Fortran interoperability and it does seem the problem lies there.
Have two files: cvar.c:
#include <stdio.h>
#include <stdarg.h>

// Simple wrapper for variable argument
int variable_arguments(int datatype, ...) {

   va_list valist;

   /* initialize valist for num number of arguments */
   va_start(valist, datatype);

   switch (datatype)
   {
   case 1:
       {
       int num = va_arg(valist, int);
       printf("INT  argument: %d \n",num);
       break;
       }
   case 2:
       {
       long numl = va_arg(valist, long);
       printf("LONG argument: %ld \n",numl);
       break;
       }
   default:
       {
       printf(" INVALID argument... \n");
       break;
       }
   }

   /* clean memory reserved for valist */
   va_end(valist);

   return 0;
}

and a main Fortran program:
program test_var
    use iso_c_binding
    use iso_fortran_env
    implicit none
    interface
        integer(c_int) function variable_arguments_int(datatype, valist) bind(c,name='variable_arguments')
           import
           integer(c_int), value :: datatype
           integer(c_int), value :: valist
        end function variable_arguments_int
        integer(c_int) function variable_arguments_long(datatype, var) bind(c,name='variable_arguments')
           import
           integer(c_int), value :: datatype
           integer(c_long), value :: var
        end function variable_arguments_long
    end interface

    integer(c_int) :: rc

    rc = variable_arguments_int (1,123_int32)
    rc = variable_arguments_long(2,123_int64)

end program test_var

The expected output is
INT  argument: 123
LONG argument: 123

I build it with Homebrew gcc as gcc-13 cvar.c main.f90 -lgfortran -lquadmath but what I get is
INT  argument:<PHONE_NUMBER>
LONG argument:<PHONE_NUMBER>

If I instead write type-specific wrappers on the C side, then everything works well:
// Add type-specific interface
int variable_arguments_int(int datatype, int num)
{
    return variable_arguments(datatype, num);
}
int variable_arguments_long(int datatype, long num)
{
    return variable_arguments(datatype, num);
}

And then modifying the Fortran interface as
    interface
        integer(c_int) function variable_arguments_int(datatype, valist) bind(c,name='variable_arguments_int')
           import
           integer(c_int), value :: datatype
           integer(c_int), value :: valist
        end function variable_arguments_int
        integer(c_int) function variable_arguments_long(datatype, var) bind(c,name='variable_arguments_long')
           import
           integer(c_int), value :: datatype
           integer(c_long), value    :: var
        end function variable_arguments_long
    end interface

Now returns the correct output:
federico@Federicos-MBP test_var_fort % gcc-13 cvar.c main.f90 -lgfortran -lquadmath
federico@Federicos-MBP test_var_fort % ./a.out
INT  argument: 123
LONG argument: 123

How can this work fine on Unix but not on macOS?

I would not use variadic arguments from Fortran like this. I think it's only working by accident, and only on linux.

Just doublechecked the latest F2023 standard draft and it turns out that Ondrej @certik is right: at 18.3.7
A Fortran procedure interface is interoperable with a C function prototype if
[...]
(7) the prototype does not have variable arguments as denoted by the ellipsis (...)
[...]
Note 2 - The C language allows specification of a C function that can take a variable number of
arguments (ISO/IEC 9899:2018, 7.16). This document does not provide a mechanism for Fortran
procedures to interoperate with such C functions.


Allow syntactically specifying multiple extra directories

A step toward #1020. This PR allows specifying multiple extra directories, retaining backward compatibility. Note that this does NOT have an actual implementation; only the first directory is in effect, which is the current status. This just allows the syntax for specifying multiple directories.
The only exception is the _skaffold-files(-v2) goals; I made it print all the given extra directories, which shouldn't be a problem.
All of these are accepted:
-Djib.extraDirectory.path=/some/path
-Djib.extraDirectory.path=/some/path,/this/is/ignored

<extraDirectory>/some/path</extraDirectory>

<extraDirectory>
  <path>/some/path</path>
</extraDirectory>

<extraDirectory>
  <path>/some/path</path>
  <path>/this/is/ignored</path>
  <permissions> may or may not have this <permissions>
</extraDirectory>

jib.extraDirectory = 'some/path'  // wan't possible before
jib.extraDirectory = file('some/path')
jib.extraDirectory = ['some/path', 'this/is/ignored']
jib.extraDirectory = files('some/path', 'this/is/ignored').collect()
jib.extraDirectory.path = 'some/path'  // wasn't possible before
jib.extraDirectory.path = file('some/path')
jib.extraDirectory.path = ['some/path', 'this/is/ignored']
jib.extraDirectory.path = files('some/path', 'this/is/ignored').collect()

Ah, wait. I just found something wrong.

-Djib.extraDirectory.path=/some/path,/this/is/ignored

What do you think about instead using the platform path separator (: on Unix systems, ; on Windows)?  Commas, although uncommon, are allowed in directory names.

What do you think about instead using the platform path separator (: on Unix systems, ; on Windows)? Commas, although uncommon, are allowed in directory names.

I will point out that all our other list system properties are separated by commas, but commas themselves can be escaped with \. So maybe we should just stay consistent.

Volumes provide directories too.  Ok, consistency is good.

I realized the initial PR was very close to making things work end-to-end (placing files from multiple directories in different layers). I'm still fixing things that I did wrong.

Maven works end-to-end. Each directory goes into its own layer in order. All below are valid:
<extraDirectory>/some/path</extraDirectory>

<extraDirectory>
  <path>/some/path</path>
</extraDirectory>

<extraDirectory>
  <!-- if <path> or <paths> is missing, the default "src/main/jib" is in effect -->
  <permissions> ... </permissions>
</extraDirectory>

<extraDirectory>
  <paths>
    <path>/some/path</path>
    <path>/this/is/ignored</path>
  </paths>
  <permissions> may or may not have this </permissions>
</extraDirectory>

The property jib.extraDirectory.path in Maven works too.
Also fixed a separate issue in FilesMojoV2 where it throws NPE if <extraDirectory> is defined but <path> (or <paths>) is missing.
However, Gradle isn't working. Will continue to work on that.

Gradle working. The property works on Gradle too.
jib.extraDirectory = 'some/path'  // wan't possible before
jib.extraDirectory = file('some/path')
jib.extraDirectory = ['some/path', 'this/is/ignored']
jib.extraDirectory = files('some/path', 'this/is/ignored')
jib.extraDirectory.path = 'some/path'  // wasn't possible before
jib.extraDirectory.path = file('some/path')
jib.extraDirectory.path = ['some/path', 'this/is/ignored']
jib.extraDirectory.path = files('some/path', 'this/is/ignored')

I'll add more integration tests.

This should be working now, essentially fixing #1020. For doc changes and CHANGLOG, I'll create another PR after having LGTM.

I think it might make sense to support extraDirectory and a plural version extraDirectories/extraLayers (or something). We can say extraDirectory will be deprecated in 2.0. This will also allow you to design the extra directories substructure however you want.

@loosebazooka I gave a thought about that too, and here's what I thought as downsides:

Increased pollution in the config space.
Our docs will look more complicated. Users might be confused. Especially our code can look confusing by having getExtraDiretory and getExtraDirectories in many places for example.
Confusion arises when both extraDirectory and extraDirectories are given. Need more code to examine values of both configs and print errors.
If we are ever going to deprecate extraDirectory, we could just rename extraDirectory to extraDirectories at that time, instead of carrying both config forms until then.

This will also allow you to design the extra directories substructure however you want.

I think it isn't the case that the extra directory structures for multiple layers in this PR are not ideal because of the backward compatibility. If we rename extraDirectory to extraDirectories, I think things will look good enough. For Maven, <paths> as a list don't interfere with the current <path>. We could simply drop the old <path> when we deprecate extraDirectory

@loosebazooka forgot to ask, what do you think?

Okay, so I think I understand and I can be sold with the structural changes to the config being minimal and perhaps I'm being overly zealous with my config deprecation philosophy, I'm just kind of concerned that if we don't try to move to the "right" naming, we will end up with names that don't match their function exactly.
So what about this suggestion: The PR remains as-is, except naming, we're doing a naming change of extraDirectory(keep till 2.0, but deprecated) -> extraDirectories(documented now in docs)

I think all the changes we make in jib-core can still be breaking (given we are pre-1.0), so we should just be able to call getExtraDirectories globally in the codebase.
The configuration complication is limited at the plugin level. All code still calls getExtraDirectories(). getExtraDirectories() correctly handles delegating to the users config (possible providing a deprecation message if they happened to use extraDirectory instead of extraDirectories. I believe this to be an ideal deprecation pattern/policy. The problem with renaming at an instant, is that it will immediately break everyone with no warning (and I feel like I made this mistake with the appengine plugins).
From the next release on our docs will only reference extraDirectories?

Talked with @loosebazooka. Supporting both the old structure and the new structure sounds like a good deprecation strategy. Basically, This is already achieved in this PR; it's merely that the new structure has the same config name as extraDirectory instead of extraDirectories. We decided we'll rename the new structure in a later PR, which will also contain a deprecation warning message when the old structure is used. So, this PR is still ready for review as-is.

One more thought, sorry :)
Should just leave <path> as is, and mark it deprecated. Our final state is the only way to specify extra directories would be through the complex object block <extraDirectories><paths>...?

Should just leave <path> as is, and mark it deprecated.

Good idea. Adding @Deprecated can certainly be done in this PR.


Remove loading states in tabs

so this would mean the tabs would just "pop in" now?

so this would mean the tabs would just "pop in" now?

yeah, what do you suggest? maybe an animation?

so this would mean the tabs would just "pop in" now?

yeah, what do you suggest? maybe an animation?

I think we have the loading states maybe just not show the text but still be there or something. something just popping in is always bad.

Superseded by #532


How to apply Middleware to a group of Module Route?

I have these 3 module routes
// Finances routes file
Route::group(['middleware' => ['auth'], 'prefix' => 'admin/finances', 'namespace' => 'Modules\Finances\Http\Controllers'], function()
{
Route::get('/', 'FinancesController@index');
});
// Jobs routes file
Route::group(['middleware' => ['auth'], 'prefix' => 'admin/jobs', 'namespace' => 'Modules\Jobs\Http\Controllers'], function()
{
Route::get('/', 'JobsController@index');
});
The question is how can I apply auth middleware to these two routes at one place. So when I want to add or change middleware, I can change it once only.

You can add the middleware to a "core" module, that contains logic common for multiple modules. Consumer modules would then use this middleware.

I mean I want to apply middleware to these 2 modules or some routes of these two.
ex:
// This one is to apply to the whole route of these two modules
Route::group(['middleware' => ['custom-middleware'],function()
{
Route::resource('/', 'FinancesController');
Route::resource('/', 'JobsController');
});
// This one apply on only some routes of these two module
Route::group(['middleware' => ['custom-middleware'],function()
{
Route::get('/', 'FinancesController@index');
Route::get('/', 'JobsController@index');
});
How can i do it?

Same answer as above. Please refer to the laravel documentation.


Airplane from sprite

get the airplane graphic from spritesheet

allow multiple airplanes of different types

started in #14

started in #14

sprite work completed in #15


feat: include config params for PAR, JARM, and DPoP

PAR: Pushed Authorization Requests
JARM: JWT Secured Authorization Response Mode
DPoP: Demonstrating Proof of Possession

Extracted from paulswartz/oidcc#3

@paulswartz Oooh, are you working to add FAPI? That is awesome :)

If you plan to add full FAPI Support, we should probably talk to the ErlEF people to purchase the certification.

Preliminary review:

Add require_pushed_authorization_requests to client registration
Mention PAR in Supported Features of README


Fix the analysis script

The analysis/analysis.py script uses the tools package which has now been renamed to https://github.com/Kortemme-Lab/klab.

"pip install -e<EMAIL_ADDRESS>in the virtual environment containing the loop_modeling clone
Fix the analysis.py script to use klab rather than tools.
Update the main documentation to tell users to install the klab package as a dependency.

Now the analyze.py script will automatically ask the user to install klab.


UrlEncoded for Asian languages

Hi Lee,
I've changed this to make sure url is encoded for Asian language.
https://github.com/wezmag/mvcforum/commit/84f18b46e9310c8617ea4a0614c00817fa0404d5#diff-99776ee77a1b2eefc0d5225bf059b616
How do you think?

Added in v1.8


Updating Datahub Administration pages with External Access functionality (CAT-1590)

In the Datahub release we introduced new functionality External Access. This pull request extends documentation of admin pages with this new funtionlity.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@BananiMendix , can you sign CLA please? This is required to merge the PR once it's reviewed.

@BananiMendix , I am sorry for the confusion, but I checked out your branch locally and because it was called "development", I had to rename it. As a result, my changes were saved in a separate branch although it did not suppose to happen, changes should have synced.
Let's continue in this PR https://github.com/mendix/docs/pull/3578, I see that your commits are saved there, and there are two commits with my review. I'll close this PR.


MLDB-1244 Add 'finish' and logging script to mldb service

The docker init system (based on runsvdir) will call
/etc/service/mldb_runner/finish when mldb_runner exits.
The finish script will print a message with the signal number that killed the
process if it is available.
The 'run' script has been tweaked to 'exec' mldb_runner instead of forking it.
This is required for the finish script to properly get the signal code when
mldb_runner exits.
Since we now 'exec', we cannot use a pipeline to redirect stderr to stdout and
stdout to tee.  Instead, we use a logging script, which is a simple wrapper
around tee. runsv will arrange to wire up the file descriptor correctly
(mldb_runner's stdout to the logger's stdin).

Example output:
MLDB ready

MLDB exited due to signal 15. SIGTERM: regular shutdown

[...]

MLDB ready

MLDB exited due to signal 9. SIGKILL: killed from outside, did we run out of memory (OOM killed?)

[...]

MLDB exited due to signal 11. SIGSEGV: segfault - internal error

[...]

MLDB exited due to signal 1.

+1, merging!


USPS US to US rate requests must specify a container type

Problem
When no container type is specified we set the container type to <Container/>. On large packages (packages with at least one dimension greater than 1 foot) the rate response comes back but is incorrect.
Solution
Choose a container type when non is specified.
Notes

A container type was being specified for international rate requests

@Shopify/shipping

What are the other container types besides NONRECTANGULAR and RECTANGULAR?

https://github.com/Shopify/active_shipping/blob/master/lib/active_shipping/carriers/usps.rb#L56
CONTAINERS = {
  rectangular: 'RECTANGULAR',
  variable: 'VARIABLE',
  box: 'FLAT RATE BOX',
  box_large: 'LG FLAT RATE BOX',
  box_medium: 'MD FLAT RATE BOX',
  box_small: 'SM FLAT RATE BOX',
  envelope: 'FLAT RATE ENVELOPE',
  envelope_legal: 'LEGAL FLAT RATE ENVELOPE',
  envelope_padded: 'PADDED FLAT RATE ENVELOPE',
  envelope_gift_card: 'GIFT CARD FLAT RATE ENVELOPE',
  envelope_window: 'WINDOW FLAT RATE ENVELOPE',
  envelope_small: 'SM FLAT RATE ENVELOPE',
  package_service: 'PACKAGE SERVICE'
}

:+1:

Rebased this one, merging after a CI pass.


Retraining Saved Models in a Self-Training Setting

Hi,
I’m working on a project using MolTrain and had a question about the possibility of retraining saved models after completing the first stage of training.
Context:
After successfully going through the first MolTrain stage, I would like to load the saved models and continue retraining on another dataset. Specifically, I’m exploring a self-training setting and would like to understand how I can accomplish this.
Questions:

Is there any built-in functionality in MolTrain for retraining using previously saved models?
If not, could you provide guidance or suggest modifications that would allow for loading the saved models' weights and continuing training on a new dataset?
Are there any specific commands or scripts for such use cases (e.g., changing datasets but keeping initial weights)?
Any insights or examples you can provide would be greatly appreciated!

Thank you for your help!
Best regards,
Yikun

Hi, thank you for your questions!
Currently, MolTrain does not support this feature natively, but it's a great suggestion! We plan to incorporate it into future versions.
If you'd like to manually modify the code, you can refer to this specific commit, which provides a useful reference for loading saved model weights and continuing training.
We also have some examples in our documentation that may help with similar use cases. You can find them at the following link: UniMol Documents

Thank you so much for the quick response and helpful guidance! I’ll check out the commit and the documentation you mentioned. I’m looking forward to trying this out and excited to see the feature in future versions.


Fix issue where configs are actully merged into functions.

🐛Closes #250 Actually patch the app config if there is an app file so that the functions get the apps config.

@rdallman If we do config before the deploy then that means we have to create the app if it does not exist. That logic should still be left to the deploy not the app. That way if the deploy fails for what ever reason the config is not re updated... Not sure if we should even have this work in this way. Its hard to say since I do not think we have that mapped out. What ever we want to do is fine. The way I did it felt like the least invasive / most in line with current behavior.
So I guess real question becomes what  should happen if

User calls deploy with app file
App does not exist. Create app and add config before calling deploy?

If we do config before the deploy then that means we have to create the app if it does not exist.

ah, good catch. isn't that just a matter of changing PATCH to PUT though? (behavior is same atm, at least) then it will create or update.
it's a bit pedantic I guess, i do think it seems a little more natural to have the reverse happen (we basically have to pick one) where if the update config fails, nothing gets deployed, or if deploys fail after there's just a config change then there's just a config change left laying around vs having deployed functions that may need some updated config [was my thinking].

Right so right now it seems that the second option config change left laying around  is what happens and if update config fails the nothing is deployed. So seems that you are good with that?
@rdallman

@rdallman Updated


multi-arch docker image support

/cc @morvencao

travis support multi-arch docker image now https://docs.travis-ci.com/user/multi-cpu-architectures/

resolved in https://github.com/IBM/go-repo-template/pull/53
/close


Java indexer: mitigate incoherence when referencing varargs methods [phab:D1793]

Created by schroederc at 2017-07-24 18:58:43:
When analyzing an ArrayType from a referenced method with a variable-length argument, javac incorrectly reports that they array argument is not a varargs.  This causes the indexer to emit different nodes for a method depending on whether the method is being referenced or defined.

craigbarber accepted this revision at 2017-07-24 19:57:11

fromberger accepted this revision at 2017-07-24 20:43:15

schroederc closed via commit 689b57e43f4e1c1eea54699eed6cac9abfe7f52a at 2017-07-25 21:14:15


Updating gatling-rsync configuration

This is to fix a change in 0.9.0 version of
vagrant-gatling-rsync where rsync will run by default. Here's the
changelog from the plugin:
https://github.com/smerrill/vagrant-gatling-rsync/blob/v0.9.0/CHANGELOG.md#090-june-28-2015.

Looks reasonable to me :+1:

:+1:

Make it all faster! :+1:


Have started getting an error in my application after running flutter upgrade

: Warning: Operand of null-aware operation '?.' has type 'WidgetsBinding' which excludes null.
../…/src/overlay_entry.dart:101

'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../flutter/packages/flutter/lib/src/widgets/binding.dart').
WidgetsBinding.instance?.scheduleFrameCallback((_) => animateRemove());
^
e: /Users/kavyabhargava/FlutterDev/flutter/.pub-cache/hosted/pub.dartlang.org/share_plus-3.1.0/android/src/main/kotlin/dev/fluttercommunity/plus/share/MethodCallHandler.kt: (34, 24): Type mismatch: inferred type is String? but String was expected

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':share_plus:compileDebugKotlin'.

Compilation error. See log for more details

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 13s
Exception: Gradle task assembleDebug failed with exit code 1
Flutter doctor -v output:
[✓] Flutter (Channel stable, 3.0.0, on macOS 12.2.1 21D62 darwin-arm, locale en-IN)
    • Flutter version 3.0.0 at /Users/kavyabhargava/FlutterDev/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ee4e09cce0 (8 days ago), 2022-05-09 16:45:18 -0700
    • Engine revision d1b9a6938a
    • Dart version 2.17.0
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/kavyabhargava/Library/Android/sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)

[✓] VS Code (version 1.67.0)
    • VS Code at /Users/kavyabhargava/Downloads/Visual Studio Code.app/Contents
    • Flutter extension version 3.40.0

[✓] Connected device (3 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64  • Android 12 (API 32)
      (emulator)
    • macOS (desktop)             • macos         • darwin-arm64   • macOS 12.2.1 21D62
      darwin-arm
    • Chrome (web)                • chrome        • web-javascript • Google Chrome
      101.0.4951.54

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Hi @kavyabhargava, Thanks for filing the issue. The build seems to be failing due to the null safety error in the share_plus plugin.

e: /Users/kavyabhargava/FlutterDev/flutter/.pub-cache/hosted/pub.dartlang.org/share_plus-3.1.0/android/src/main/kotlin/dev/fluttercommunity/plus/share/MethodCallHandler.kt: (34, 24): Type mismatch: inferred type is String? but String was expected
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':share_plus:compileDebugKotlin'.

I would suggest filing that issue in its dedicated repo. Additionally, you may try using the latest version of the plugin 4.0.4 and see if it helps fix the issue.
partial duplicate of https://github.com/flutter/flutter/issues/103561
Closing as this is not really a bug in flutter but with the third party plugin. In case you disagree feel free to write in the comments and we will reopen it.
Thank you.


Automatically detect MermaidJS shortcode

Rather than requiring metadata set in a page's front matter, automatically detect when a page relies on MermaidJS.
Previews:

page without MermaidJS
page with MermaidJS

/kind cleanup
/area web-development

Great contribution! (will differ /lgtm to another reviewer)
/approve


Re-sync respositories and improve rendering of label-less highlights

For whatever reason, my repository is 8 commits ahead but I don't think most of the commits would lead to changes?
Anyway, I changed the rendering of label-less highlights to not have an extraneous "tail" pointing to the (nonexistent) label

Might need to update the tests...

Yep, looks like I broke something, argh


Feature/error handling

Adds error handling to algorithm registration
When algorithm fails:

When algorithm is successful:

Can test with this image: 'mas.dit.maap-project.org/root/maap-workspaces/jupyterlab/python:alg-error-handling'

Yes, I agree


32-bit builds of Godot do not work with LLVM MinGW

Tested versions

Latest master (aa8d9b83f66488dbb2c9c918e9016ef80f821fb4)
4.4dev6, 4.4dev5, 4.4dev4, 4.4dev3

System information
Godot v4.3.rc (322e93592) - Windows 10.0.26100 - GLES3 (Compatibility) - Radeon RX 580 Series (Advanced Micro Devices, Inc.; 31.0.21921.1000) - Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz (6 Threads)
Issue description
Any attempt at building Godot for 32-bit Windows will succeed, but then actually trying to run will crash with this
================================================================
CrashHandlerException: Program crashed with signal 11
Engine version: Godot Engine v4.4.dev.custom_build (55e55b4879f7ad89086aa26f2e53882cf85077f9)
Dumping the backtrace.
-- END OF BACKTRACE --
================================================================

And just stop. And for some bizarre reason, it does not crash if its a dev build with debug symbols? (dev_mode="yes" dev_build="yes")
I'm still not sure if this is a Godot issue or a compiler issue.
Steps to reproduce

Use the latest LLVM MinGW (can be older too, I tested 20231128
Compile for windows with arch="x86_32"
Wait for compilation and try to run the executable.
(extra) re-compile with dev_mode="yes" dev_build="yes" and see how it does not crash.

Minimal reproduction project (MRP)
Use this link to get the builds and test it yourself:

Did a git bisect, I confirm this is a Godot bug, and the culprit is #85167.

#99168 was merged yesterday and fixes some issues from #85167, could you check whether that fixes the 32-bit support too?

Built latest master (a372214a4a047ccf63d23c4406337b30e55ff60b) with LLVM 19.1.5, and it ran just fine!
RandomShaper thought ahead then 👌!
I'll do a production build (but with thin lto) to see if the issue is truly fixed.

Yes! it built and ran, and here's the final proof!

So, I can close this issue then as a false alarm from my part.👍

Awesome, thanks for confirming the fix!


"Quantum Development Techniques" section overview page

The page was practically just a placeholder, so updated it to be more a roadmap of the section's pages (akin to the "Q# Programming Language" section overview page). This will be particularly helpful in letting us usefully link to the page from the cards on the main page (PR #625).
Additionally, updated some of the pages' metadata (titles/descriptions) to be more internally consistent/descriptive and allow users to see the actual page title when they have a tab open (currently they just see "Q# techniques ..." and if they have multiple tabs it becomes a frustrating guessing game of clicks)

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
54
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit 66a5b9c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
54
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit a98e5b4:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
58
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
58
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit 8d8d94b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 10e68de:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
58
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
58
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
78
58
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit 371b5b1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 7b87010:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology.

Article
Acrolinxscore
Lowestcategoryscore
Spellingissues
Scorecard
Processed

articles/techniques/file-structure.md
79
62
1
link
:white_check_mark:

articles/techniques/going-further.md
76
42
4
link
:white_check_mark:

articles/techniques/index.md
79
57
1
link
:white_check_mark:

articles/techniques/local-variables.md
75
38
3
link
:white_check_mark:

articles/techniques/operations-and-functions.md
79
49
3
link
:white_check_mark:

articles/techniques/putting-it-all-together.md
83
51
2
link
:white_check_mark:

articles/techniques/testing-and-debugging.md
80
60
2
link
:white_check_mark:

articles/techniques/working-with-qubits.md
76
53
5
link
:white_check_mark:

More information about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues
Troubleshooting issues with Acrolinx

Docs Build status updates of commit d685fbf:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/techniques/file-structure.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/going-further.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/index.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/local-variables.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/operations-and-functions.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/putting-it-all-together.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/testing-and-debugging.md
:white_check_mark:Succeeded
View (qsharp-preview)

articles/techniques/working-with-qubits.md
:white_check_mark:Succeeded
View (qsharp-preview)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Feature/1002 Script to query statuses of all applications

Mentions #1002
Create a node script query.applications-statuses to query all statuses of all applications in Firestore.

@HalcyonJAC Happy for this one to be closed, Ryan, the work is now complete.


List "x64 Linux distributions supported as container hosts" up to date?

Right now, the list of suppored Linux distributions at https://docs.microsoft.com/en-us/azure/azure-monitor/containers/containers#x64-linux-distributions-supported-as-container-hosts contains:

Ubuntu 14.04 LTS and 16.04 LTS
CoreOS(stable)
Amazon Linux 2016.09.0
openSUSE 13.2
openSUSE LEAP 42.2
CentOS 7.2 and 7.3
SLES 12
RHEL 7.2 and 7.3
Red Hat OpenShift Container Platform (OCP) 3.4 and 3.5
ACS Mesosphere DC/OS 1.7.3 to 1.8.8
ACS Kubernetes 1.4.5 to 1.6
Kubernetes events, Kubernetes inventory, and container processes are only supported with version 1.4.1-45 and later of the Log Analytics agent for Linux
ACS Docker Swarm

Is this list up to date? I care most about Ubuntu; Ubuntu 14.04 LTS and 16.04 LTS are out of support (although not yet totally EOL).

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ec237c1c-6c64-c473-379c-ebb8ac8b2bba
Version Independent ID: 1335a7b7-b1ce-8f6a-d4e2-bf5e73b31317
Content: Container Monitoring solution in Azure Monitor - Azure Monitor
Content Source: articles/azure-monitor/containers/containers.md
Service: azure-monitor
Sub-service: containers
GitHub Login: @bwren
Microsoft Alias: bwren

@alexs77 Thanks for reaching out. We will investigate and update the thread accordingly.

This solution has been replaced with Container Insights so we aren't maintaining this list. The article will be moved to our Retired section soon.
#please-close


Taking action in compare view should disable replaceWithTargetHandler button

The replaceWithTargetHandler is meant to replace a list of process inputs with a reference to the process itself. If these inputs are modified, with the addition of inputs from the left hand side (Shift row), the removal of inputs (Remove row), the editing of a number, or the expansion of one input to its constituent inputs (Expand row), there is no longer a 1-to-1 correspondence with the original process, and the up arrow and replaceWithTargetHandler should be disabled (disappear).
The up arrow itself should also have a tooltip "Collapse process inputs".

I think I'll need some clarifications about the detailed conditions when we should hide that functionality. Eg, some user story (what should user do to disable this button).

I added some basic code to do this here: a9dc413a82d5c18f6557680a1414f55439df399e
@lilliputten, I guess you would like to either edit this to make it more consistent with the rest of the JS, or to animate the arrow disappearing via a class rather than setting display. So I am leaving this open even though it is working well enough, but setting the milestone to 1.1.

Fixed in PR #95.


[5.8][CSGen] Detect nested out-of-scope variables in recursive declarations

Cherry-pick of https://github.com/apple/swift/pull/63566

Follow-up to https://github.com/apple/swift/pull/63505
Since, when the type is not stated, a variable assumes
the type of its initializer that enables out-of-scope variables
to be nested inside of some other concrete type i.e. Optional.
Resolves: https://github.com/apple/swift/issues/63455
(cherry picked from commit 8e82f1d68bbe40b47e23366e36aad2f6ad141192)

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please smoke test macOS platform


support uploading files with spaces in the name

Codecov Report

Merging #51 (3fd9b6d) into main (8b70af7) will increase coverage by 0.02%.
The diff coverage is 66.66%.

Additional details and impacted files

@@            Coverage Diff             @@
##             main      #51      +/-   ##
==========================================
+ Coverage   82.23%   82.25%   +0.02%
==========================================
  Files          10       10
  Lines         805      806       +1
==========================================
+ Hits          662      663       +1
  Misses        102      102
  Partials       41       41

Impacted Files
Coverage Δ

upload.go
86.74% <66.66%> (+0.16%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8b70af7...3fd9b6d. Read the comment docs.


Atomically updating multiple pipelines at once

This situation was proposed by a user who wants to use one giant pipeline spec for a many of his pipelines and update them all at the same time (since they use the same image). Let me know if I'm misunderstanding what would be going on here.
If a user does update-pipeline -f multiple_pipelines.json (or passes multiple -f flags), these are sent as multiple update-pipeline requests. Since we don't have multi-document atomic updates (until v1.4 and we move from Rethink to etcd), could this cause some clobbering of commits? The first update would go through, archiving everything downstream and kicking off a bunch of jobs and new commits -- then the second one comes in and everything downstream gets "archived" again including the newly created commits which might be partially done. I assume that first batch of jobs/commits run to completion as opposed to terminating when the 2nd update request comes in.
This means that if a user updates 10 pipelines at once, their cluster will reprocess every affected commit in the system 10 times, putting a huge amount of load on the cluster, right?

I don't think this is much of an issue.
There's a very small window when new jobs could get kicked off on the order of milliseconds. It's unlikely that jobs could complete in that time and cause unnecessary processing, you probably can't even launch a container in that time. If they did it would be because the jobs are very, very lightweight in which case it's not such a big deal that we did some extra processing.


make sure certificates are up-to-date

Found a TODO about this in one of our internal test-scripts to include this step in the get.docker.com install script.

@tianon @tiborvass PTAL 😅

Honestly, I'm a little confused what problem this is solving?  If there's a package that gets installed that needs this to be run, it'll usually run it automatically via postinst. :confused:
Is there an issue/report somewhere with more details on what this is fixing?

@tianon I dug into history for that change, and it was added to fix issues in our builds for the armhf builds (either the host machines or in the balena images, I don't recall). Apparently those images at some points had (curl and) ca-certificates already installed, but the certificates were outdated. Then running curl (?) failed because the certificates were outdated.
I must admit that I don't recall the exact details, and the Jenkins logs for those failures are long gone. I'm ok with closing, just wanted to open this one for discussion to see if it would make sense to include (perhaps it would be similar scenarios where users run into the same problem?)

Yeah, IMO this sounds like a bug in either the base image / environment or one of the packages being installed. :confused:

Let's close this one for now


Build failure: python313 --enable-experimental-jit

Steps To Reproduce
I'm attempting to build Python 3.13.0b4 with the new experimental JIT. However supplying the configure flag breaks the build, noting that it cannot find python3. Just removing the --enable-experimental-jit is enough for it to build correctly.
Steps to reproduce the behaviour:

Grab the flake.nix from the build logs below
Note it overrides configureFlags adding "--enable-experimental-jit" and adds the required clang_18  and llvm_18 as mentioned here.
nix build .#python313_JIT with attached flake

Build log
Here's the build log,  flake.nix, and flake.lock  of a plain python313 build failure when enabling the experimental JIT.
Additional context
This seems to stem from this line within the configure.ac. It seems the PYTHON_FOR_REGEN is not being correctly found.
I can build 3.13.0b4 from source outside of nix with a default configuration and --enable-experimental-jit.
Supplying the build with pkgs.python313 as a buildInput or nativeBuildInputs resolves this particular issue but only leads to a rather uninformative KeyError: 6. Relevant gist here. KeyError is on line 2835.
No change on unstable.
Notify maintainers
No maintiners listed in the meta.maintainers but @mweinelt and @tjni are listed as the Python team members.

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
this path will be fetched (0.00 MiB download, 0.00 MiB unpacked):
  /nix/store/9j1f45904jshhlsmb9ljqaxdkg86ajl2-nix-info
copying path '/nix/store/9j1f45904jshhlsmb9ljqaxdkg86ajl2-nix-info' from 'https://cache.nixos.org'...
 - system: `"x86_64-linux"`
 - host os: `Linux 6.9.9-1-default, openSUSE Tumbleweed, noversion, nobuild`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.23.3`
 - nixpkgs: `/nix/store/73jd5krdaw6r94zwfra7bi6qxw4lr0dp-source`

Add a :+1: reaction to issues you find important.

Still broken on 3.13.0rc1