feat: iteratedDeriv_{c,}exp_const_mul

The only added import is Mathlib.Analysis.Calculus.IteratedDeriv itself; its dependencies are already imported.
Based on @CBirkbeck's work on modular forms.

The only part that is specific about exp is that iteratedDeriv n exp = exp right? If so could you prove the general result instead, and then use iteratedDeriv_eq_iterate and Real.iter_deriv_exp to get your result?

Is there any reason not to do this for NormedSpace.exp directly? (of course, we'll still want the versions specialized to Complex.exp and Real.exp too.)

I was asking to ask for that, but then realized that we could refactor this whole file to go through NormedSpace.exp, so maybe we can do that in one go later. Also, I think the real generalization is that this is not a lemma about exponentials at all (although the fact that I'm the only one to notice it makes me worry about my own sanity) : iteratedDeriv n (f (c * .)) x = c ^ n * iteratedDeriv n f (c * x) is true for all C^n functions, right ?

Also, doing the proof in the general setting for NormedSpace.exp might be unexpectedly tricky, iteratedFDeriv is an annoying beast to fight...

Seems true. I'll take a look at updating the PR later
import Mathlib

variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] [NormedAlgebra 𝕜 ℂ]

theorem xxx (n : ℕ) (c : 𝕜) (f : 𝕜 → 𝕜) (h : ContDiff 𝕜 n f) : iteratedDeriv n (fun x => f (c * x)) = fun x => c ^ n * iteratedDeriv n f (c * x) := by
  induction n with
  | zero => simp
  | succ n ih =>
    funext x
    rw [pow_succ, iteratedDeriv_succ, ih h.of_succ, deriv_const_mul_field]
    rw [iteratedDeriv_succ]
    rw [← Function.comp_def ]
    rw [deriv.comp x (h.differentiable_iteratedDeriv _ (Nat.cast_lt.mpr n.lt_succ_self)).differentiableAt (differentiableAt_id'.const_mul _)]
    rw [deriv_const_mul _ differentiableAt_id', deriv_id'']
    ring

theorem iteratedDeriv_cexp_const_mul_ (n : ℕ) (c : ℂ) :
    (iteratedDeriv n fun s : ℂ => Complex.exp (c * s)) = fun s => c ^ n * Complex.exp (c * s) := by
  rw [xxx]
  funext x
  rw [@iteratedDeriv_eq_iterate]
  rw [Complex.iter_deriv_exp]

@Ruben-VandeVelde this still has a build failure

I think this should go in Analysis.Calculus.IteratedDeriv.Lemmas (I know there has been some file shuffling recently).

bors merge


Searchable attributes in the config file are not added to algolia

Right now although the searchable attributes are specified in the config file they are still hardcoded in algolia-indexer and algolia fragmenter. So what should be the right thing would be to use the values from the config file when constructing the object to pass to algolia.

I could help with this if the team is okay with it

@lallenfrancisl Sorry about this late response, totally fell through!! Always happy to receive PRs 🤗

Oh great I try to work on the issue this weekend

I came here to post this.  I'd call it a bug, not an enhancement, because it makes it impossible to use the netlify-algolia package to keep posts in sync with Algolia for anyone wanting to use filtering.  Every time the webhook calls the function, the whole Algolia index settings get reset to using only slugs for faceting, which breaks the filtering I need for functionality on my client's full text search.
@lallenfrancisl , did you come up with a fix?  Or should I try to take a stab at it?


feat(mousearea): mouse enter and exit

Iced add these recently,  under the terms on_move , on_exit and on_enter.
I am happy to create copy these files or merge these commits. Then i can finally remove my copied mouse area files.


i can't use ‘WobblePresenter’  when i install by CocoaPods

WobblePresenter is not shipped with CollectionKit itself. but feel free to grab it from the Example project.


Timeout: add seperate flags for reboot and ssh timeout

cc: @Lassulus since you added the infinite loops; Can you check if this works for you?

it seems the script aborts after the first ssh error if the retry_limits are not defined

Logic LGTM, but as written --reboot-retry-limit doesn't seem to have to do anything with the actual reboot (into the installed system, at the very end), but just retries connecting after kexec. While kexec could be considered a form of reboot, I think this naming could confuse users and would suggest something like --kexec-connection-retries or so


How to get molar masses of elements?

Thanks for putting this package together, it is useful!
I'm trying to get the mass fraction of each constituent element of a substance, which I had hoped I could do from the substance object itself but haven't figured that one out.
More generally, how can I access the text name or attributes of an element.
I could do this using the dict from Substance.composition, but it returns a dict with keys of z number rather than element name, which seems to be required by chempy.mass_fractions
any way to map z number back to the text element name?  it seems like this dictionary probably exits in the code somewhere to return the Substance.composition dictionary in the first place..
Thanks,

Glad to hear that you find it useful,
You can split the composition dictionary into multiple ones with just a single key in each, and then use:
https://github.com/bjodah/chempy/blob/6e2008577f0d8b866fa31852e99912e8bd90e568/chempy/util/periodic.py#L94

Oh and the symbol names are in the same file: from chempy.util.periodic import symbols

See issue #172 for a relevant bit of code.

I'm closing this, feel free to re-open if need be. Also, a PR with additions to e.g. documentation or README is of course always welcomed.


Add Loki and upgrade dashboards

Description of changes:
Adds the loki-stack chart to the soak test cluster, which installs Loki and Promtail for cluster text logs.
Add a new panel to the ACK Dashboard called "Controller ERROR Logs" which reports any ACK controller logs containing the term ERROR. Also updates the existing panels from the old "Graph" panel type to "Timeseries"
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Is it possible to export and add another dashboard to monitor pod level Memory, CPU, Network and Disk IO. I found those metrics very important for soak test to validate that there is no memory leak and we used to get them from the K8s dashboards which got removed.

@RedbackThomson this PR looks good, only I think you need to update the PR summary to accurately reflect what is in the PR now :)

Good call. Updated!

/lgtm


Better author support

Fixes #28

Ahh nice. Checked the docs, and name is required, so there is either site.author.name, or it's not a valid object.
One thought, how do we want to handle if no author is specified, as either a string or an object? Right now, we output an empty node.
Last, would you mind updating the docs with this behavior? Awesome stuff.

Ahh nice. Checked the docs, and name is required, so there is either site.author.name, or it's not a valid object.
One thought, how do we want to handle if no author is specified, as either a string or an object? Right now, we output an empty node.

So if no author information is provided, we don't output an <author> tag, and that's ok.
If some author information is provided without a name (like URL or email), creating an <author> tag without a name is invalid.
My first thought is that this is a problem best solved with documentation. We could just make it clear that, if your site/post has an author, you must provide the author's name.
:grey_question:

So if no author information is provided, we don't output an  tag, and that's ok.

Missed the containing {% if site.author %}. :+1:

I'm bad at documentation (which is to say, I suppose, that I am a lazy programmer).
Can somebody take a look and make some suggestions?

For the feed author, if nothing is provided, should we try to fallback to site.github.owner, similar to what is done for site.url?


Hotbar icon active border & status led are not visible

Broken in master branch.

Might be regression from #2710 .


Fixed #11927 -- Added dumpdata --yaml-collection-style option.

By default, pyyaml uses the "block" style (separate line per element)
for collections that contain nested collections, and the "flow" style
(single line for all elements) for other collections. However, when
creating fixtures or otherwise hand-editing or versioning the result of
dumpdata, the block style is preferred.
This commit adds a new option for the dumpdata command which allows
forcing the use of either the 'block' or 'flow' style. The default is
'auto' and thus unchanged.
This fixes #11927.

 -   fields: {headline: Poker on TV is great!, pub_date: ! '2006-06-16 11:00:00'}
+   fields: {headline: Poker on TV is great!, pub_date: !!timestamp '2006-06-16 11:00:00'}

There seems to be one test failure on Windows, which apparently serializes timestamps differently in the flow style (using ! rather than !!timestamp). Not sure how to fix this, it seems no other tests run into this so far. Using a model without a timestamp would be easy, but I'm not sure if any is available in the existing fixtures.

Adding format-specific options to dumpdata doesn't look like a proper separation of concerns. Instead I imagine something similar to manage.py test where test runners have an add_arguments() method that the command invokes.

Adding format-specific options to dumpdata doesn't look like a proper separation of concerns

Yeah, that part smells a bit.

Instead I imagine something similar to manage.py test where test runners have an add_arguments() method that the command invokes.

That makes sense and is probable feasible. To make that work, it should pre-scan the commandline for the --format command, just like test prescans for --testrunner. One caveat is that manage.py dumpdata --help will not show the extra options, while manage.py dumpdata --format yaml --help will, but that is probably something that can be fixed with documentation (perhaps add a note the --help output).
I'll have a go at implementing this, but it might not be until the end of august due to the holidays.

I had another look at this, but found a bug in the commandline-prescanning used by manage.py test that I wanted to mimic. I fixed that in #10307. If that approach looks ok, I'll generalize prescan_testrunner_option() and move it into django.core.management.utils to be reused by manage.py dumpdata to prescan the --format option.

I went ahead and implemented the format-specific arguments for dumpdata as well. I now have something that works and is reasonably elegant, except that it does not work for the test suite (more on that below). I just pushed new commits that:

Include the manage.py test bugfix related to testrunner-specific arguments mentioned above. It also includes a new commit that improves the --help output related to the testrunner-specific arguments.
Adds prescanning of --format option for the dumpdata command, and based on the prescanned format, calls add_arguments() on the format to register format-specific commandline arguments.
Lets the 'yaml' serializer register a --yaml-collection-style option. This behaves the same as before, except that it is now yaml-specific.
Modifies the dumpdata test code to allow passing the new option, without always passing it (since other formats will note accept it).

The problem I'm still facing is with the test suite. I had added testcases for dumpdata that passed the new yaml_collection_style option. These testcases use django.core.management.call_command helper function, which accepts parsed commandline options, rather than the actual commandline. This means it does not call Command.run_from_argv to parse the commandline, bypassing the prescanning. However, it does create a commandline parser and uses it to figure out what options would be valid. Since the YAML-specific options are not present in this parser (since no prescanning happened), the yaml_collection_style option will always be rejected.
I'm not sure what the best way forward is, but I can imagine three ways to fix this:

Modify the testcase to actually run the command, rather than bypassing the fork and commandline parsing using call_command. This is what the tests for manage.py test --testrunner do, which is why this is not a problem there.
Modify the management commands (in particular call_command  and ManagementUtility.execute()) to explicitly support this prescanning (rather than making it a detail inside the test and dumpdata commands). This would mean extending the command-API with something like add_prescan_arguments() (or perhaps call add_arguments() twice), using argparse's parse_known_args to parse just those, and only then call the real add_arguments(). I'm not sure how to pass the prescanned arguments to add_arguments(), though, since the current API does not specify arbitrary kwargs. This will probably need an extra method, process_prescanned_arguments() or something. I can make this work, but I can't see this being really elegant.
Drop the prescanning, and instead  use a custom argparse Action class. This could allow a single argument-parsing pass, where, once the --format option is parsed, calls add_arguments on the specified format, modifying the parser during the parsing process. I'm not entirely sure if this works, and would be a supported usecases for argparse, but it does sound elegant. This would mean that any format-specific options would need to appear after --format, but that seems reasonable enough. It would also mean that the options for the default format would need to be removed again, which might not be possible without digging further into argparse internals than we're already doing (and what would happen when you put json-specific options on the commandline followed by --format=yaml?). Also, this would need changes in call_command, which now digs into argparse internals to figure out available options, which might not work with this approach...

Conceptually, the last option seems the most elegant, except that I'm afraid that argparse does not really support this case (especially wrt options related to the default format). I just came up with this option while writing this comment, so I haven't really tried anything yet.
Any other insights?

@timgraham (and others), any insights in the best way to fix this (I outlined a few possibilities in the previous comment). I haven't looked at this since then, but if some consensus is reached on the way forward, I can see if I can move this forward again.

Closing as per ticket.


UI Build Changes

I ended up just splitting up the 'dependency installation' and 'build' steps into different scripts, to avoid trying to run sudo from CMake. These changes build the javascript stuff in the source directory and then install it, which should play nicely with symlink installs for hot reload things.

I think your if statement in the install_deps.sh might be wrong. The npm list command returns a non-zero exit status to indicate that it didn't find the package but the if statement is testing for success. It seems like it works if you replace line 11 with this:
if !npm list --depth 1 --global $package_name > /dev/null 2>&1; then

Yeah, I just figured that out too. Testing things in a local vm right now.
My bash is bad and I should feel bad.

Alright, turns out installing that webkit package requires installing a buuunch of other GUI / front-end related packages.
My personal vote would be to skip the UI tests in CI for now (as is implemented in this PR now), and we can spend some time poking at this in the background and see if there's maybe a different base image we can use or something to get UI tests running in CI again.
As things stand in this PR right now, CI works at least to tell us if the UI build works.
https://github.com/SSL-A-Team/software/runs/5256410208


Mobile Compatibility for WP Super Cache

More and more sites are now compatible with mobile devices, either using responsive web design or by using a plugin specifically for mobile (ex: WPTouch). Let's make the configs compatible with such plugins and WP Super Cache plugin.

Fixed in https://github.com/pothi/wordpress-nginx/commit/efdd9a8343e989005523c28367eb9980d61bf736 !


Docs: Remove badge from readme

Change-type: patch
Signed-off-by: Josh Bowling<EMAIL_ADDRESS>

@balena-ci I self certify!


comment not supposed to be ddoc

It's showing up in the documentation for the subsequent function as a result. I don't know why it's there to begin with.

LGTM

Auto-merge toggled on

thanks

oops, looks like you need to be approved for the autotester first.
ping @braddr

@quickfur Anyone with merge rights can add users to the autotester whitelist: https://auto-tester.puremagic.com/pulls.ghtml?projectid=1

Heh, didn't realize that. Thanks!


State of pin changed by input device

I wanted to make a script to switch a pin on or off with the ability that it holds the state after the script finishes/exits. I solved this by changing the DefaultPin:
class SleepNoMore(gpiozero.devices.DefaultPin):
	def close(self):
		pass

gpiozero.devices.DefaultPin = SleepNoMore

It works very well if I alter the state using DigitalOutputDevice but the pin switches back to ON if i use it as DigitalInputDevice. I found out this happens somewhere in the __init__ but i couldn't trace it down yet. Here is the complete script (so you can test this):
import argparse, sys, gpiozero

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-O', '--off', action='store_true', default=False, help="turns the 5 Volt switch off")
group.add_argument('-I', '--on', action='store_true', default=False, help="turns the 5 Volt switch on")
args = parser.parse_args()

class SleepNoMore(gpiozero.devices.DefaultPin):
	def close(self):
		pass

gpiozero.devices.DefaultPin = SleepNoMore

if args.off:
	gpiozero.DigitalOutputDevice(13, initial_value=False)
elif args.on:
	gpiozero.DigitalOutputDevice(13, initial_value=True)
else:
	current_state = gpiozero.DigitalInputDevice(13).is_active
	sys.stdout.write(str(current_state))

Please pardon my ignorance if I missed a software detail I should be knowing.

Interesting!

This is kind of related to discussions in #118 and #323 and #39
I'm fairly sure there was also another similar discussion, where @waveform80 recommended using RPi.GPIO instead of gpiozero for scripts where you want the GPIO state to persist after the script finishes running, but I can't seem to find that right now.
Have you got any external hardware attached to GPIO 13? IIRC a pin in input mode (with nothing connected) will always be inactive by default. If your external hardware is active-low, then you'll need to set pull_up=True in the DigitalInputDevice constructor.

Hmm.
#39: The way the cleanup operates is ok in my case. I manage this by changing the DefaultPin as mentioned above.
#118: I read this often and I still can't put the information to use. Should I directly alter firmware device-tree configurations using python? I could, but this would be a very dirty solution IMO.
As for #323: In my case it would be really useful to have a final_value parameter.
I already tried the same feat using RPi.GPIO:
import argparse, sys
import RPi.GPIO as GPIO

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-O', '--off', action='store_true', default=False, help="turns the 5 Volt switch off")
group.add_argument('-I', '--on', action='store_true', default=False, help="turns the 5 Volt switch on")
args = parser.parse_args()

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

if args.off:
	GPIO.setup(13, GPIO.OUT, initial=GPIO.LOW)
elif args.on:
	GPIO.setup(13, GPIO.OUT, initial=GPIO.HIGH)
else:
	GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
	current_state = GPIO.input(13)
	sys.stdout.write(str(current_state))

But it behaves exactly the same: Switching works good, but reading changes the hardware state.
There is circuitry attached to port 13, but it has no pull-up resistor applied to it.
To sum it up I think the problem is somewhat like: the RPi.GPIO module reads the default value on each initialization of a class instance and if the hardware state does not equal the firmware default state, it changes the hardware state.

I already tried the same feat using RPi.GPIO: ... But it behaves exactly the same:

I guess at least that shows that it isn't a problem specific to GpioZero ;-)

reading changes the hardware state. ... There is circuitry attached to port 13, but it has no pull-up resistor applied to it.

Then I'm not sure what it is that you're trying to do, or what you expect to happen?
When a GPIO pin is in input mode, it'll report the state of whatever the external circuitry is driving  it to.
Could you clarify the problem? And/or what it is that you're trying to do?

When a GPIO pin is in input mode, it'll report the state of whatever the external circuitry is driving it to.

Yes, that I am aware of.

Could you clarify the problem? And/or what it is that you're trying to do?

Imagine a LED connected to port 13. If the LED should be switched on, the script has the job to start, turn the LED on and then quit. The LED should stay on now, regardless of the script running or not.
If the user wants to read the status of the LED the script has the job to start, read the status, return it and then quit. The LED should stay the way it was before the script read its status.

If the user wants to read the status of the LED the script has the job to start, read the status, return it and then quit. The LED should stay the way it was before the script read its status.

Ahhh. AFAIK you can't read the output-value of a GPIO pin by switching it to input-mode. I'm not familiar with the low-level hardware (or the low-level software that controls it), but perhaps @bcroston (the author of RPi.GPIO) knows a way of doing what you're trying to accomplish.
I guess the other option would simply be to have a long-running script, rather than a script which repeatedly launches and exits *shrug*
Or perhaps you could connect gpio13 to another gpio-pin, and use the second gpio-pin to read gpio13's current output-value?

I think in a software-hardware environment a software/program/module should never change the state of hardware devices only because the software quits or restarts. The software should act as if it wasn't there.

I think part of the 'philosophy' of gpiozero is to be predictable (remember that its primary target is beginners), by resetting the hardware to a known state at program-start (via the initial_value parameters) and at program-exit (via the close functions). If that doesn't fit with your way of working, then perhaps it's not the right library for you.

but perhaps @bcroston (the author of RPi.GPIO) knows a way of doing what you're trying to accomplish.

Thanks I will contact him, didn't know he uses github too.

the other option would simply be to have a long-running script

I thought of this too, but the script would then have to communicate with other processes (that's like - super advanced stuff). It should just be an easy to handle interface for other programming languages (TCL and in the future Java).

you could connect gpio13 to another gpio-pin

Unfortunately I can't: we have a standardized shield attached to the pi and I don't have the authority to alter the blueprint of it.

perhaps it's not the right library for you.

Yeah I thought so too, but there aren't any as well documented solutions out there as gpiozero. At least none that I know of.
I understand that you want to help and I want to express my thankfulness for your quick responses and wide-ranging solutions on my problem. I mean it.

I haven't looked at their documentation, but I believe pigpio and wiringpi are also pretty full-featured GPIO libraries.
And of course the ultimate cross-language way to control the gpio pins (without relying on other scripts or libraries) is to just use sysfs.

Thank you for suggesting alternatives.
I will mark this as closed.

Ahhh. AFAIK you can't read the output-value of a GPIO pin by switching it to input-mode. I'm not familiar with the low-level hardware (or the low-level software that controls it), but perhaps @bcroston (the author of RPi.GPIO) knows a way of doing what you're trying to accomplish.

That is correct - however, you can read the output value of a GPIO pin while it's in output mode (this is why OutputDevice has a readable value property - and no, it's not just querying the last thing the script set it to, it's actually reading the hardware register driving the GPIO).
Or to put it another way, try changing the pen-ultimate line of your script to:
    current_state = gpiozero.DigitalOutputDevice(13).is_active

I think in a software-hardware environment a software/program/module should never change the state of hardware devices only because the software quits or restarts. The software should act as if it wasn't there.

I'm afraid I have to disagree there; the philosophy is sound, but the practical reality is different. Consider a class full of beginners building robots. Their scripts frequently go wrong (because they're beginners), and frequently when the motors are already running at which point an anticipated short burst of movement becomes a continual running of the motor and chaos ensues (during which Pi's run off tables, robots crash to the floor, components go flying left and right, etc. etc.)
Having experienced this, I'm quite keen to keep the current behaviour, at least as a default :) That said, I'm definitely more convinced of the need for a final_value parameter in the library; there's obvious use-cases for it.

Thank you for your insights!
I tried this new solution but it has the exact opposite effect: If i read out the state after turning the "LED" on, it turns off. This is because of the default value of the initial_value parameter, i think.
I am currently playing with the thought of directly reading out the hardware device via the /sys/class/gpio devices/files(?), but this is kinda hairy in python.
Yay for (maybe) convincing you of the optional  final_value parameter.

I tried this new solution but it has the exact opposite effect: If i read out the state after turning the "LED" on, it turns off. This is because of the default value of the initial_value parameter, i think.

Ahh, you're absolutely right - my mistake. Set initial_value to None (which means "leave the device as you find it" as opposed to True or False, the default, which force the device to the corresponding state).

Oh my god, i didn't know one can do that. I already thought of this (i would program my device classes like this) but i didn't check the source back then and now i didn't want to summon any strange errors or device states by supplying None.
If this works then this is the cleanest - currently possible - solution IMO.
I will try this out when i am back at my desk.

You don't need to go digging through the source, just digging through the docs ;-)
http://gpiozero.readthedocs.io/en/latest/api_output.html#gpiozero.OutputDevice

Oh. Another proof of A: I can't read and B: I do not have the required engineering mindset to come up with such a solution. I just straight thought "If I want to read something out I need an InputDevice". Well.
As for the solution: It friggin works! Thank you very much to everyone helping me!

No prob, glad you got it working! I agree that it is rather strange to use an OutputDevice to read the state of the pin. It might help to think of the class as representing that which is attached to the pin. The LED is an output device, ergo you use the OutputDevice class (well, ideally, the LED class which derives from OutputDevice, but you get the point :-).
It's an interesting case - would I be right in thinking you were experienced with other GPIO libraries already? The reason I ask is I think this might be a symptom of thinking about things at the pin level (which is what all the existing libraries do) rather than thinking about things at the device-attached-to-the-pin level (which is what GPIO Zero tries to do).
It is a different mind-set but I think I can speak for most of us when I say we're reasonably confident it's a more intuitive approach for people completely new to the subject. Unfortunately that does it'll be a little unintuitive for people used to the existing libraries (and there's still plenty more work to do on our docs - I need to add the value property to most of the concrete classes like LED).

I agree, this view of things helps with hardware applications.
No, this is my "first GPIO library". I started with rPI.GPIO, but quickly saw that i needed multiple threads for event based functionality and a more object-oriented (pythonic) approach. A journey through google showed me that this is the library to use (active development, broad userbase and usecases, good documentation).
I was a victim of tunnel vision and only focused my mind on what i want to achieve and not the grand idea behind it.
What i learned through my adventures with Raspberry Pi is: always see the objective goal/output (what you want to achieve) of the program, not just the technical intricacies alone.
Regarding the docs: Pat yourself a little on the back, because these are already one of the more human-readable and detailed docs i saw. Also i really appreciate the cross-linking inside the docs.


Use promises for requestTileGeometry

Fixes #6823
The interface for TerrainProvider says that requestTileGeometry should return either a Promise or undefined.

Thanks for the pull request @hpinkos!

:heavy_check_mark: Signed CLA found.
:grey_question: CHANGES.md was not updated.

If this change updates the public API in any way, please add a bullet point to CHANGES.md.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

I am a bot who helps you make Cesium awesome! Contributions to my configuration are welcome.
:earth_africa: :earth_americas: :earth_asia:

Thanks.

@hpinkos This breaks the GoogleEarth Sandcastle example.

Thanks @tfili, I had a typo.  I pushed a fix here: https://github.com/AnalyticalGraphicsInc/cesium/commit/5dd97079d7ad2ab7b2cf72b8e58e2c67f8999ca1

👍 Thanks @hpinkos


Add parent make verify target

This adds a make verify target which will run all of the other *-verify targets. This would simplify our CI and make future changes to it easier as well

/kind cleanup
/cc @ingvagabund @seanmalloy

/lgtm


Expose Sentry initialization and make sample rate configurable

The GitHub action calls the replay handler directly, skipping the init logic within the CLI.
This PR exposes the Sentry initialisation logic to enable recording GitHub action runs performance data.
Additionally this makes the sample rate configurable and handles cases where replay handler is called within a Sentry transaction (so action runs can be grouped in a single transaction)

The plan is to set 'METICULOUS_TELEMETRY_SAMPLE_RATE' to '0.01' in report-diffs-action?

The plan is to set 'METICULOUS_TELEMETRY_SAMPLE_RATE' to '0.01' in report-diffs-action?

Yep, probably with around 10% sample rate though given that's on per-test run basis.


docs: stylelint-processor-glamorous

What: Added stylelint-processor-glamorous to README

Why:

How: Appended to the related projects section.

Checklist:

[ ] Documentation
[ ] Tests
[ ] Ready to be merged
[x] Added myself to contributors table

Codecov Report

Merging #385 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #385   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          10     10
  Lines         182    182
  Branches       52     52
=====================================
  Hits          182    182

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 47f8428...f70d9b4. Read the comment docs.


backport of CLOUDSTACK-8197 create MinVRVersion config item

Conflicts:
api/src/com/cloud/network/VirtualNetworkApplianceService.java
engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

adjusted default to 4.5.0

@DaanHoogland looks like asfgit failed to close both #243 and #244 can you please close it manually; merged both of them on 4.4 and 4.5 branches. Thanks.


Add support for interactive buttons [block_actions]

Hey! I badly needed support for interactive buttons. So I implemented an early but working version.
What's new:

update existing message
delete existing message
handle block_actions payloads

Example usage:
from machine.plugins.base import MachineBasePlugin
from machine.plugins.decorators import listen_to, process
from slack_sdk.models.blocks.blocks import SectionBlock, ActionsBlock
from slack_sdk.models.blocks.block_elements import ButtonElement

class PasswordReset(MachineBasePlugin):
    """Detects Password reset requests"""

    @listen_to(regex=r"(Password.*reset)|(reset.*Password)")
    async def question(self, msg):
        fields = SectionBlock(
            text=f"Hey<EMAIL_ADDRESS>it looks like you might want to reset your password. Do you want me to do it?"
        )

        approve_button = ButtonElement(
            text="Yes, please.",
            action_id="password_reset_yes_for_user",
            value=f"{msg.sender.id}",
            style="primary",
        )
        deny_button = ButtonElement(
            text="No, thank you.",
            action_id="password_reset_no_for_user",
            value=f"{msg.sender.id}",
            style="danger",
        )

        buttons = [approve_button, deny_button]

        actions = ActionsBlock(
            block_id="password_reset_user_confirmation_block", elements=buttons
        )

        await msg.reply(
            # providing text is strongly advised for i.e. mobile notifications
            text=f"Hey<EMAIL_ADDRESS>it looks like you might want to reset your password. Do you want me to do it?",
            in_thread=True,
            blocks=[fields, actions],
        )

    @process("block_actions")
    async def update_block(self, event):
        if (
            event.get("actions")
            and event["actions"][0]["block_id"]
            == "password_reset_user_confirmation_block"
        ):
            channel = event["channel"]

           # do more validation, i.e. if the person who clicked the button is allowed to execute the action

            await self.update(
                blocks=[], # reset all blocks to display text
                channel=channel["id"],
                ts=event["message"]["ts"],
                text='Got it',
            )
            # or delete initial message and i.e. post a new one
            # await self.delete(channel=channel["id"], ts=event["message"]["ts"])

PS. I really tried to delete or update initial message according to https://api.slack.com/interactivity/handling#payloads but I did not manage to do it with socket mode. I am not sure if it is even possible, so I decided to introduce update and delete methods.
Cheers!

Hey @pawelros , I ended up building a more comprehensive solution that includes a dedicated decorator for block actions. I did use your code for the update and delete functions for messages and added you as co-author to the commit.

Awesome, thanks! Thank you for your work on this project, I built a bot that makes my team's everyday life much easier.

That is very kind of you to say! I would love to get some insight in how you're using Slack Machine, how it makes your team's life easier. I rarely get those kinds of insights 🙂 If you are willing to share, you can email me at daan (at) dv.email
Btw, I have released v0.37.0 on PyPI. You can find documentation for Block Actions here


Royalty receivers

What
It would be nice to have an on-chain multi royalty system.
How
receivers => [ [address, royalty] ] where the sum of all the royalties here should be equal to 100
the main field royalty will represent the cut from the sale price (e.g. 5%), where the receivers will tell how to split that 5% (e.g. 30% to address1, 70% to address2)

let's introduce receivers that is Tuple(string, number) Array.

Anybody familiar with the code base keen on helping us implement this? Would be much appreciated!


How to Swap SearchSuggestions

mSearchView.swapSuggestions(newSuggestions);
I have an arraylist of Strings with me to be suggested for a change in the query.  What should be the input of the swapSuggestions function?

I have this problem.
I have List<Address>.
But swapsuggestion needs SearchSuggestion

I found a way to do this.
SearchSuggestion is an abstract interface with unimplemented functions. So, I created a new object Suggestion which contains the suggestion string as its field and implements the functions of SearchSuggestion. And then we can return an ArrayList<Suggestion> to  swapSuggestion function.
Here is my code
`public class Suggestion implements SearchSuggestion{
public String suggestion ;
public Suggestion(String s){
    this.suggestion = s ;
}
public String getSuggestion(){
    return this.suggestion ;
}

@Override
public String getBody() {
    return this.suggestion ;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {

}

}
Now pass an array list ofSuggestionobjects containing the suggested strings as their fields to theswapSuggestions` function.

Here is my code:
Geocoder geocoder = new Geocoder(this); List<Address> addressList = null; addressList = geocoder.getFromLocationName(searchQuery, 5);
But the method getFromLocationName returns List<Address>
So I can not pass addresslist variable to Suggestion Class that you mentioned.

@nefrin79 you could use that AddressModel like a model for suggestion
public class Suggestion implements SearchSuggestion {
    private Address mQuery;

    public Suggestion(Address query) {
        this.mQuery = query;
    }

    public Address getmQuery() {
        return mQuery;
    }

    public void setmQuery(Address mQuery) {
        this.mQuery = mQuery;
    }

    @Override
    public String getBody() {
        return mQuery.getAdminArea() + ", " + mQuery.getCountryName();
    }

and then you create another list to hold your result
List<Suggestion> lstResult = new ArrayList<>();
Finally, you add those address item back to the list that you just created
List<Address> addressList = geocoder.getFromLocationName(queryLocation, 5);

            if (addressList != null) {
                for (Address address : addressList) {
                    lstResult.add(new Suggestion(address));
                }
            }


Docker Network stack issue in v6.5

The recent Service Fabric software update to v6.5.435.1 seems to have broken our DNS inside the docker containers..  All of our Java services running in docker can't resolve the DNS for SQL, Cosmos or Service Bus.
seeing errors like:
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host xxxx-server.database.windows.net, port 1433 has failed. Error: "xxxx-server.database.windows.net. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) ~[sqljdbc42-6.0.jar!/:na]
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242) ~[sqljdbc42-6.0.jar!/:na]
com.mongodb.MongoSocketException: xxxxx.documents.azure.com: Temporary failure in name resolution
at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:188) ~[mongo-java-driver-3.2.2.jar!/:na]
at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50) ~[mongo-java-driver-3.2.2.jar!/:na]
at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongo-java-driver-3.2.2.jar!/:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114) ~[mongo-java-driver-3.2.2.jar!/:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) ~[mongo-java-driver-3.2.2.jar!/:na]
at java.base/java.lang.Thread.run(Thread.java:835) ~[na:na]
Reverting to v6.4.661.1 resolved the issue.
I saw a similar issue in the v6.3 update back in August 2018 https://blogs.msdn.microsoft.com/azureservicefabric/2018/08/22/microsoft-azure-service-fabric-6-3-refresh-release-cu1-notes/

It seems the docker stack is configured incorrectly in this case.  The DNS server address on the right container is invalid.  This example shows the container inspections from one cluster node vs another...

I also see this issue occurring in a SF cluster running v6.4.661.1 - So it doesnt seem isolated to v6.5.
It seems to have regressed...  I also saw this issue in August of last year, after time with support they stated:

We were wrongly setting the DNS server chain on host network connected containers to only the Host IP address on Docker NAT network. On clusters where service_fabric bridge network is not present, the response from the DNS service running host appears to come from an IP (Host IP on cluster network) rather than the host IP on docker NAT network.

This happens due to missing NAT translation rules which get created by CNS plugin when bridge network is created. As the replies seem to be coming from an unexpected source (due to difference in IP), OS resolver drops the response, resulting into DNS resolution failures. To fix this, we now set the DNS server as <IP_ADDRESS> for host network connected containers. This will make the reply look from an expected source as DNS service is running on the host.

This is a serious issue.  I can't control the Decker network stack configuration.  It's obviously a bug in service fabric.  Can I get some traction on this?  I'm leaving this cluster in a broken state so that Microsoft can look at it.  Otherwise, Id delete the cluster and the problem would probably go away.  It keeps regressing however, a system exhibiting this behavior may be invaluable in fixing this bug.

The container's DNS service point to the node IP since that is where our DNS service runs (and it serves all the SF names + does the DNS forwarding).
Is the current cluster exhibiting the issue? Seems that our DNS service is not enabled on that cluster. DNS service has to be enabled for containers. There is a bug that we don't check nor enable the DNS service in this case (I'll open a bug on our side to track this down):

Can we check that enabling the DNS service mitigates the issue on that cluster?

It seems to be quite the opposite.  Microsoft had me remove the DNS Service from the cluster, and it seems to have resolved the issue.
Get Outlook for iOShttps://aka.ms/o0ukef

From: Dario<EMAIL_ADDRESS>Sent: Monday, July 8, 2019 5:10:27 PM
To: microsoft/service-fabric
Cc: Gavin Stevens; Author
Subject: Re: [microsoft/service-fabric] Docker Network stack issue in v6.5 (#340)
The container's DNS service point to the node IP since that is where our DNS service runs (and it serves all the SF names + does the DNS forwarding).
Is the current cluster exhibiting the issue? Seems that our DNS service is not enabled on that cluster. DNS service has to be enabled for containers. There is a bug that we don't check nor enable the DNS service in this case (I'll open a bug on our side to track this down):
[image]https://user-images.githubusercontent.com/10108760/60850172-e4635600-a1a2-11e9-821f-502553330953.png
Can we check that enabling the DNS service mitigates the issue on that cluster?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/service-fabric/issues/340?email_source=notifications&email_token=AC2KDI52XE7ZXH67XF4UAKLP6PJPHA5CNFSM4HYPFPA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZOWNHI#issuecomment-509437597, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AC2KDI2PEVZTPV72CJTNHQLP6PJPHANCNFSM4HYPFPAQ.

Oh, ok, so now your cluster: doesn't have the DNS service enables and inside the container the dns server is the NAT address?

The container reports no DNS address when the DNS service disabled..
"Dns": [],


Keyboard: Space -> close the intellisense suggestions panel or insert a space

VSCode Version: 1.12.1
OS Version: macOs Sierra 10.12.4 (16E195)

Steps to Reproduce:

Type something in the VSCode editor, hit the space button, when the intellisense suggestions panel show up.
The result is VSCode will close the intellisense suggestions panel without inserting a space, but I just need that space, or I have to hit the space button again.

ps: I don't have this problem with the VSCode that the version is lower than 1.12.x. BTW, it is better VSCode will do the both stuff after I hit the space button, I think.
Any suggestions will be appreciated.

@LanGuoguo Can you provide more details please. Especially important is:

In what language happens this?
What exact text are you typing?
What extensions do you have (produces the suggestions)?
Do you have any keybindings customizations?

@jrieken Thanks for your reply.
Here's some details:

language: English
text: Just a const, as shown in the 2017-05-10_09-41-19.gif pic. You can imagine that I have to hit the space button twice.

extensions: I think JavaScript (ES6) code snippets & npm Intellisense will produce some suggestions

keybindings: I finally figured it out it's my fault, the space keybindings is bad. It is in the USER definition, however I have no idea I put that keybinding before.

Yeah, you have bound space to accept a suggestion so that's what it now does.


Using unicode username/password for RabbitMQ agent will result in 401 unauthorised access

Note: If you have a feature request, you should contact support so the request can be properly tracked.
Output of the info page
===============
Agent (v7.21.0)
===============

  Status date: 2020-07-21 19:48:59.566785 UTC
  Agent start: 2020-07-21 19:35:07.318096 UTC
  Pid: 382
  Go Version: go1.13.11
  Python Version: 3.8.1
  Build arch: amd64
  Agent flavor: agent
  Check Runners: 4
  Log Level: error

  Paths
  =====
    Config File: /etc/datadog-agent/datadog.yaml
    conf.d: /etc/datadog-agent/conf.d
    checks.d: /etc/datadog-agent/checks.d

  Clocks
  ======
    NTP offset: 135µs
    System UTC time: 2020-07-21 19:48:59.566785 UTC

  Host Info
  =========
    bootTime: 2020-04-05 09:54:42.000000 UTC
    kernelArch: x86_64
    kernelVersion: 4.15.0-1063-aws
    os: linux
    platform: debian
    platformFamily: debian
    platformVersion: bullseye/sid
    procs: 129
    uptime: 2577h40m29s
    virtualizationRole: guest
    virtualizationSystem: docker

  Hostnames
  =========
    hostname: localhost
    instance-id: i-09a102e5481303d4d
    socket-fqdn: df17fe1509a6
    socket-hostname: df17fe1509a6
    hostname provider: container

=========
Collector
=========

  Running Checks
  ==============

    cpu
    ---
      Instance ID: cpu [OK]
      Configuration Source: file:/etc/datadog-agent/conf.d/cpu.d/conf.yaml.default
      Total Runs: 55
      Metric Samples: Last Run: 6, Total: 324
      Events: Last Run: 0, Total: 0
      Service Checks: Last Run: 0, Total: 0
      Average Execution Time : 0s
      Last Execution Date : 2020-07-21 19:48:47.000000 UTC
      Last Successful Execution Date : 2020-07-21 19:48:47.000000 UTC

    disk (2.10.1)
    -------------
      Instance ID: disk:2539eb9332db6987 [OK]
      Configuration Source: file:/etc/datadog-agent/conf.d/disk.yaml
      Total Runs: 56
      Metric Samples: Last Run: 188, Total: 10,528
      Events: Last Run: 0, Total: 0
      Service Checks: Last Run: 0, Total: 0
      Average Execution Time : 26ms
      Last Execution Date : 2020-07-21 19:48:56.000000 UTC
      Last Successful Execution Date : 2020-07-21 19:48:56.000000 UTC

    docker
    ------
      Instance ID: docker [OK]
      Configuration Source: file:/etc/datadog-agent/conf.d/docker.d/conf.yaml.default
      Total Runs: 55
      Metric Samples: Last Run: 59, Total: 3,245
      Events: Last Run: 0, Total: 2
      Service Checks: Last Run: 1, Total: 55
      Average Execution Time : 17ms
      Last Execution Date : 2020-07-21 19:48:54.000000 UTC
      Last Successful Execution Date : 2020-07-21 19:48:54.000000 UTC

    rabbitmq (1.15.0)
    -----------------
      Instance ID: rabbitmq:2caf95082cc855fe [OK]
      Configuration Source: file:/etc/datadog-agent/conf.d/rabbitmq.yaml
      Total Runs: 55
      Metric Samples: Last Run: 514, Total: 28,301
      Events: Last Run: 0, Total: 0
      Service Checks: Last Run: 2, Total: 110
      Average Execution Time : 280ms
      Last Execution Date : 2020-07-21 19:48:55.000000 UTC
      Last Successful Execution Date : 2020-07-21 19:48:55.000000 UTC
      metadata:
        version.major: 3
        version.minor: 7
        version.patch: 12
        version.raw: 3.7.12
        version.scheme: semver

========
JMXFetch
========

  Initialized checks
  ==================
    no checks

  Failed checks
  =============
    no checks

=========
Forwarder
=========

  Transactions
  ============
    CheckRunsV1: 55
    Connections: 0
    Containers: 0
    Dropped: 0
    DroppedOnInput: 0
    Events: 0
    HostMetadata: 0
    IntakeV1: 8
    Metadata: 0
    Pods: 0
    Processes: 0
    RTContainers: 0
    RTProcesses: 0
    Requeued: 0
    Retried: 0
    RetryQueueSize: 0
    Series: 0
    ServiceChecks: 0
    SketchSeries: 0
    Success: 118
    TimeseriesV1: 55

==========
Logs Agent
==========

  Logs Agent is not running

=========
APM Agent
=========
  Status: Running
  Pid: 381
  Uptime: 832 seconds
  Mem alloc: 7,336,976 bytes
  Hostname: queue02
  Receiver: <IP_ADDRESS>:8126
  Endpoints:
    https://trace.agent.datadoghq.eu

  Receiver (previous minute)
  ==========================
    No traces received in the previous minute.
    Default priority sampling rate: 100.0%

  Writer (previous minute)
  ========================
    Traces: 0 payloads, 0 traces, 0 events, 0 bytes
    Stats: 0 payloads, 0 stats buckets, 0 bytes

=========
Aggregator
=========
  Checks Metric Sample: 63,153
  Dogstatsd Metric Sample: 5,643
  Event: 3
  Events Flushed: 3
  Number Of Flushes: 55
  Series Flushed: 56,042
  Service Check: 884
  Service Checks Flushed: 932

=========
DogStatsD
=========
  Event Packets: 0
  Event Parse Errors: 0
  Metric Packets: 5,642
  Metric Parse Errors: 0
  Service Check Packets: 0
  Service Check Parse Errors: 0
  Udp Bytes: 413,940
  Udp Packet Reading Errors: 0
  Udp Packets: 544
  Uds Bytes: 0
  Uds Origin Detection Errors: 0
  Uds Packet Reading Errors: 0
  Uds Packets: 0

Additional environment details (Operating System, Cloud provider, etc):
Steps to reproduce the issue:

Provide a unicode username/passowrd for RabbitMQ instance (basic auth):

instances:
    -  rabbitmq_api_url: http://localhost:15672/api/
       username: myusername
       password: unicode_pass_l£fsS

Restart datadog-agent

Describe the results you received:
Although the entered username/password are correct I see following error message in logs:
HTTP access denied: user 'myusername' - invalid credentials
Error executing check: Cannot open RabbitMQ API url: http://localhost:15672/api/overview 401 Client Error: Unauthorized for url: http://localhost:15672/api/overview

Describe the results you expected:
Since the username/password are correct, I should see no error message and auth should be successful. I checked the username/password on RabbitMQ admin page and it works.
Additional information you deem important (e.g. issue happens only occasionally):
It seems that in newer versions, datadog-agent does some kind of decodings on instance values which will cause such problems.
To be exact, I think this is the PR that decode all values and convert them to native strings: https://github.com/DataDog/integrations-core/pull/4730

Hi,
I tried to reproduce but I'm facing issues with RabbitMQ simply refusing to have a user with unicode characters.
For example this command docker run -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=è -p 5672:5672 -p 15672:15672 rabbitmq:3.7-management raises the following exception:
BOOT FAILED
===========

Error description:
    rabbit:start_it/1 line 505
    rabbit:boot_error/2 line 1020
    rabbit_lager:log_locations/0 line 97
    rabbit_lager:ensure_lager_configured/0 line 198
    rabbit_lager:lager_configured/0 line 206
    lager:list_all_sinks/0 line 345
    lager_config:get/2 line 71
    ets:lookup(lager_config, {'_global',handlers})
error:{badmatch,{error,{5,file_io_server,invalid_unicode}}}
Log file(s) (may contain more information):

Because the integration simply makes http requests, could you try to run the following command:
curl -i -u <USER>:<UNICODE_PASSWORD> http://localhost:15672/api/whoam

Maybe the answer is that, the rabbitmq UI converts/escapes the unicode characters?

Hi, my colleague just left for vacation, but this is how we added the user:
sudo docker-compose exec rabbitmq rabbitmqctl add_user monitor unicode_password_with_£

Hey @moodh
I was able to create a user with a unicode password and confirmed that the rabbitmq integration was still working.
I'm thinking you may not have granted the required permissions, can you try this curl command then? Rabbitmq should give you the reason for the 401.
curl -i -u monitor:<YOUR_PASS> http://<RABBIT_MQ_HOST>:15672/api/overview

Hi, with a unicode password all endpoints works from curl/web browser to rabbitmq, just not through the datadog integration. We tested adding encoding correctly in the integration code which made the integration work so its definitely a problem in the integration with that version combination.
My colleague will be gone for a month now and he has a reproducible environment so I'm not able to test more scenarios without him.

Hi again, took me sometime to dig into that issue but you're right non-ascii characters in the password or the username will prevent the rabbitmq integration to work correctly.
Some technical details:
The integration communicates with rabbitmq using HTTP with the help of the requests library.
With that in mind I was able to confirm that:

curl -v -u datadog:àà http://localhost:15672/api/whoami works
requests.get("http://localhost:15672/api/whoami", auth=('datadog', 'àà')) works on python2
requests.get("http://localhost:15672/api/whoami", auth=('datadog', 'àà')) does not work on python3
requests.get("http://localhost:15672/api/whoami", auth=('datadog', 'àà'.encode('utf-8'))) works on python3

My understanding is that:

RabbitMQ server does not send any charset information to the client, so requests has no way of knowing how to encode the username and password.
requests defaults to latin1 encoding and not utf-8, see this github issue https://github.com/psf/requests/issues/4564
The RabbitMQ server expects utf-8 encoded auth data so it sens back a 401 status code.

All in all what does it means for you is that:

There is no way currently to have a non-ascii username or password with the rabbitmq integration on python3. Your only option is to use Agent 6 which uses python2
We'll work on some quick patch soon (only in the rabbitmq integration) so that the auth data is encoded in utf-8.

Hi, great that you found the cause. Don't worry about fixing it soon for our sake, we simply changed the password when we realized that was the issue. :)


Block Examples broken

Hi there,
When executing the blocks.go from the examples I get an exception (using current master 2891986e2a3e7c60d4e660658e3bcd4d69934f4c).
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x705b57]

goroutine 1 [running]:
github.com/nlopes/slack.NewSectionBlock(0xc000074cc0, 0x0, 0x0, 0x0, 0x0, 0xc000097778, 0x1, 0x1, 0x0)
	c:/dev/git/goslack/block_section.go:38 +0x1a7
main.exampleOne()
	c:/dev/git/goslack/examples/blocks/blocks.go:50 +0x11b
main.main()
	c:/dev/git/goslack/examples/blocks/blocks.go:17 +0xb5
Process exiting with code: 0

Im rather new to go so I dont know whats the cause.
Any chance to get that fixed?
go version go1.12.7 windows/amd64
Is it related to #476 ?

@WtfJoke i mean its block code so its related. =)
looking at the code.... if you remove the final nil from the method call it should work.... feel free to try and if it does submit a PR fixing it.

Hi James
Thanks for the hint/solution. It works, didnt thought it would be that easy. I will submit a PR soon and will close this issue


Display the determined uncompressed size on the "too small for image" warning

We should make sure the user understands why the drive is not large enough, which can be a bit confusing in the case of compressed images, where the compressed package is usually smaller than the drive.

Something like this? Although maybe "image size too big" "actual image size too big" or some such?

Might also be worth having an option to display the exact byte-sizes of both the uncompressed image and the drive in that scenario too, since with the units currently being always-rounded to GB, a "7.5GB" image may not actually fit on a "7.5GB" drive, if the image is even a few kilobytes larger than the drive.

Hmm, looking at @Shou 's screenshot I guess we need to be careful to try and keep the "warning label" small - maybe @konmouz has some ideas?

@lurch yeah, good call. Perhaps "Image Size Bigger By x units" and we just display in the appropriate human readable unit?

Let's bring @konmouz here.

2 options:

we can have a 'insufficient space' label and on hover a tooltip with details (what @lurch suggested)
avoid the label and have just an the alert/ danger icon with the explanation, all in red - no tooltip

BTW, @Shou why the above element has two labels? System and boot? It would be better to stick to 1 label per drive.

I think I like the second option more, given that a tooltip might not be very discoverable unless the user however on the badge. In order to continue the brainstorm session: what about displaying the size that doesn't fit instead? E.g: You need 300 more MBs for the image.

@jviotti this sounds even better. So using the label font size and the alert icon, we can display such a message.  - Or, 300 MBs more are required for the selected image. -

BTW, @Shou why the above element has two labels? System and boot?

It's actually System and Source ;-)  But yeah, it probably makes sense to only show one warning-label-per-drive, and I guess in this instance Source is 'more important' than System (a system drive may be writable, but a source drive (where the image is being read from) never will be).
With regards to the "too small" label message, what about "Drive is 300MB smaller than image" ?

Sounds good to me, we should probably add the word 'selected' though, just to help user understand.

The "source" label doesn't sound like something I'd understand, nevermind
my mother. Shouldn't we find a better name for it?
--
Alexandros Marinos
Founder & CEO, Resin.io
+1<PHONE_NUMBER>
@alexandrosm
On Mon, Feb 27, 2017 at 9:35 AM, Konstantinos Mouzakis <
<EMAIL_ADDRESS>wrote:

Sounds good to me, we should probably add the word 'selected' though, just
to help user understand.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/resin-io/etcher/issues/1136#issuecomment-282791659,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABLUCEAJF6dY0Sb7TMqWzVbRls4lD-Zkks5rgwlngaJpZM4MMJEA
.

I guess Source was chosen, as it's the logical-opposite of Destination, but you're right that it doesn't make much sense when seen in isolation. Difficult to thing of a more meaningful label though... what about something like "Image source" or "Image location" instead of "Source Drive"?

I created new issues to track some of the suggestions mentioned here:

https://github.com/resin-io/etcher/issues/1143
https://github.com/resin-io/etcher/issues/1144


Expose forceSSL parameter

The site I'm currently developing has a strict Content Security Policy that we'd like to use to prevent non-https access to APIs. Google Analytics as a raw library has a forceSSL method we can use and we can include the snippet in SSL mode, but through segment it doesn't look like that option is exposed.

I think you'd need to open this against the https://github.com/segment-integrations/analytics.js-integration-google-analytics repo

Ah, yeah - looks like this ticket covers the problem


TUI Input is not UTF-8 safe

Problem
Putting multibyte characters into tui inputs panics whenever the cursor passes over them, as the multibyte character is treated as two cursor positions and trips up in a call to split_at in plasmo.
Steps To Reproduce
Steps to reproduce the behavior:

create an input with value set to some multibyte character
focus the input
attempt to move the cursor across the multibyte character, either using the right arrow key or using the end key

use crossterm::{execute, terminal::{disable_raw_mode, LeaveAlternateScreen}};
use dioxus::prelude::*;

use std::io::stdout;

fn main() {
    let panic_hook = std::panic::take_hook();
    std::panic::set_hook(Box::new(move |panic| {
        reset_term().expect("failed to reset the terminal");
        panic_hook(panic);
    }));
    dioxus_tui::launch(app);
}

fn reset_term() -> std::io::Result<()> {
    execute!(stdout(), LeaveAlternateScreen)?;
    disable_raw_mode()?;
    Ok(())
}

fn app(cx: Scope) -> Element {
    cx.render(rsx!{
        input {
            value: "Hello, world! 🧡",
        }
    })
}

thread 'main' panicked at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/str/mod.rs:666:13:
byte index 15 is not a char boundary; it is inside '🧡' (bytes 14..18) of `Hello, world! 🧡`
[...]
  21:     0x5b2071163047 - core::str::<impl str>::split_at::hf4b04f97915ce27d
                               at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/str/mod.rs:666:13
  22:     0x5b207116b776 - plasmo::widgets::text_like::TextLike<C>::write_value::h146b9797a78959f1
                               at /home/lmh/.cargo/registry/src/index.crates.io-6f17d22bba15001f/plasmo-0.4.3/src/widgets/text_like.rs:140:13

Environment:

Dioxus version: 0.4.3
Rust version: stable
OS info: all
App platform: tui

Questionnaire

[x] I'm interested in fixing this myself but don't know where to start
[ ] I would like to fix and I have a solution
[ ] I don't have time to fix this right now, but maybe later

I think Plasmo is trying to treat the character offset as a byte offset when you move the cursor here:
https://github.com/DioxusLabs/dioxus/blob/main/packages/native-core/src/utils/cursor.rs#L113-L114
We need to convert the character offset into a byte offset by reading the length of the characters after or before the current position with char_indicies

TUI has been moved to blitz and is "on ice"


ADAP-399: Implement native materialized view DDL

resolves https://github.com/dbt-labs/dbt-core/issues/6911
Description
Replace all stubs with actual Redshift DDL for materialized views.
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have signed the CLA
[x] I have run this code in development and it appears to resolve the stated issue
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] I have opened an issue to add/update docs, or docs changes are not required/relevant for this PR
[ ] I have run changie new to create a changelog entry

This work has been lumped in with https://github.com/dbt-labs/dbt-redshift/pull/387, so this PR is no longer needed.


[BUG] Nested loops break

Describe the bug
Nested stqdm loops fail
To Reproduce
stqdm_bug.py:

import streamlit as st
from functools import partial
from stqdm import stqdm
from time import sleep
import logging

progress = partial(stqdm, st_container=st.sidebar)

def subfun(total):
    for n in progress(range(total), desc="paragraph"):
        sleep(0.1)
        pass
sections = "ABCDEFGHIJK"

with progress(total=len(sections), desc="Working on") as pbar:
    for section_counter, draft_section in enumerate(sections):
        logging.warning(f"counter: {section_counter} / {len(sections)}")
        try:
            pbar.update(section_counter)
        except Exception as ee:
            logging.warning(ee)
        pbar.set_description(desc=f"Section '{draft_section}'")
        subfun(30)
        sleep(0.5)

streamlit run stqdm_bug.py

Fails while displaying:
Section 'F': : 15it [00:04, 3.24it/s]

Expected behavior
I expect the nested progress bars to run bug-free as tqdm does
Screenshots
raceback (most recent call last):
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
    result = func()
                  ^^^^^^
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 590, in code_to_exec
    exec(code, module.__dict__)
  File "~/Library/CloudStorage/OneDrive-JNJ/repos/psts-doc-qc/stqdm_bug.py", line 16, in <module>
    with progress(total=len(sections), desc="QC-ing") as pbar:
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/tqdm/std.py", line 1140, in __exit__
    self.close()
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/stqdm/stqdm.py", line 109, in close
    super().close()
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/tqdm/std.py", line 1302, in close
    self.display(pos=0)
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/stqdm/stqdm.py", line 97, in display
    self.st_display(**self.format_dict)
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/stqdm/stqdm.py", line 89, in st_display
    self.st_progress_bar.progress(n / total)
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/streamlit/elements/progress.py", line 146, in progress
    progress_proto.value = _get_value(value)
                           ^^^^^^^^^^^^^^^^^
  File "~/Library/r-miniconda-arm64/dspy/lib/python3.11/site-packages/streamlit/elements/progress.py", line 74, in _get_value
    raise StreamlitAPIException(
streamlit.errors.StreamlitAPIException: Progress Value has invalid value [0.0, 1.0]: 1.363636

if I replace stqdm with tqdm, it works with no issues.
Desktop:

OS: Apple M1 Max, Sonoma 14.7 (23H124)
Browser: Chrome
Version of streamlit: streamlit==1.38.0
Version of stqdm: stqdm==0.0.5
Version of tqdm: tqdm==4.66.2

actually this breaks even without nesting. Something about pbar.update()


ERR wrong number of arguments for 'unlink' command

Brief Description of the Bug
I am using the Redis handler example.
When I invoke revalidatePath or revalidateTag, I always get the error:
revalidateTag failed for <tag_identifier> [ErrorReply: ERR wrong number of arguments for 'unlink' command]

Severity
Major
Frequency of Occurrence
Always
Steps to Reproduce

Setup Next.js app to use Redis handler
run Redis stack: docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
Browse to a path
revalidateTag on that path (or revalidatePath)

Expected vs. Actual Behavior
The cache should be cleared on the next page visit.
Instead the cache does not clear and I get the error: revalidateTag failed for <tag_identifier> [ErrorReply: ERR wrong number of arguments for 'unlink' command].
Environment:

OS: Windows + Ubuntu on WSL
Node.js version: v20.5.0
@neshca/cache-handler version: v1.0.5
next version: v14.1.0

I think this commit https://github.com/caching-tools/next-shared-cache/commit/e92658a introduced the bug
Example on how to unlink found here: https://github.com/redis/redis-om-node/pull/89/files#diff-147a4b9e517bc0355f0911b17497cdb0d0fbeb27d8d588eb071aba8d3dddf0efR155

@leoseccia and @mbeaudru, thank you for this issue. It was fixed in version 1.0.8.


Cannot discover peripherals anymore

I picked up a small project from some time ago, in which I want to scan all bluetooth devices in my area for their uuids, but when I run my script now, it seems to not go into discover mode anymore. I might just miss something trivial... Can somebody tell me, what I'm doing wrong? Any help would be very appreciated.
Here is the script that I'm trying to run. It's basically taken from the test.js file.
var noble = require('noble');

noble.on('stateChange', function(state) {
  if (state === 'poweredOn') {
    noble.startScanning([], true); //allow duplicates
  } else {
    noble.stopScanning();
  }
});

noble.on('discover', function(peripheral) {
  var uuid;
  if(peripheral.advertisement.serviceUuids != undefined
  	  && peripheral.advertisement.serviceUuids != null){
  	uuid = peripheral.advertisement.serviceUuids;
  } else {
  	uuid = "undefined or other";
  }
  console.log('Found device with local name: ' + peripheral.advertisement.localName);
  console.log('advertising the following service uuid\'s: ' + uuid);
  console.log("...");
}

Did you find a solution? I'm also not discovering anything.

Sorry, i was using @abandonware/noble. With this code the discover event is never called. Installing noble doesn't work because it cannot find module 'bluetooth-hci-socket'. I will look further into the node-ble project.

Yes, I'm using the abandonware version as well.  The code I posted above works.

What OS are you using? I'm using Debian 11 with kernel version 5.15.5


add jackson serialization

fix: #1116

Codecov Report

Merging #1133 into develop will increase coverage by 0.06%.
The diff coverage is 69.23%.

@@              Coverage Diff              @@
##             develop    #1133      +/-   ##
=============================================
+ Coverage      41.86%   41.92%   +0.06%
- Complexity      1366     1370       +4
=============================================
  Files            244      245       +1
  Lines          10165    10179      +14
  Branches        1333     1331       -2
=============================================
+ Hits            4256     4268      +12
- Misses          5355     5360       +5
+ Partials         554      551       -3

Impacted Files
Coverage Δ
Complexity Δ

...ata/rm/datasource/undo/JSONBasedUndoLogParser.java
100% <ø> (ø)
3 <0> (ø)
:arrow_down:

.../java/io/seata/rm/datasource/DataCompareUtils.java
90.19% <ø> (+5.98%)
24 <0> (ø)
:arrow_down:

...seata/rm/datasource/undo/UndoLogParserFactory.java
80% <100%> (ø)
1 <0> (ø)
:arrow_down:

...seata/rm/datasource/undo/JacksonUndoLogParser.java
62.5% <62.5%> (ø)
4 <4> (?)

...o/seata/rm/datasource/sql/struct/TableRecords.java
73.77% <77.77%> (+0.08%)
13 <1> (ø)
:arrow_down:

...server/store/file/FileTransactionStoreManager.java
46.34% <0%> (+0.34%)
19% <0%> (ø)
:arrow_down:

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 052b432...799538a. Read the comment docs.

There was a PR (#1125 )  about  adding protostuff as the serializer of UndoLogParser. JSON is inefficient, is it necessary to add a jackson serialization ?

Functional Verification: bigint(11), date, time, timestamp check ok.
CREATE TABLE test_jackson (
id int(11) NOT NULL AUTO_INCREMENT,
int_test bigint(11) DEFAULT NULL,
date_test date DEFAULT NULL,
time_test time DEFAULT NULL,
timespan_test timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8


Change web server in the architecture diagram to Tomcat

In developing server, we will use Tomcat open source. There are databases and application in server. And in server, they can give and receive relevant data. Application receive necessary information from each API. And user can access to application through cellphone


datacube doc updates

new datacubes updates, as discussed. Do we want another graphic explaining the concept of additional dimensions (CRS, sensors)? I think that could be beneficial, but maybe not needed.

There are three additional "data cube" instead of "datacube". Could you also replace those? Especially the heading... :-)


Image Insert into page not possible

Describe the bug
On a page i try to upload an image. After the upload is complete the image disappears on the right side and does not appear on the left side.
Steps To Reproduce
Steps to reproduce the behavior:

Go to page
Click on Insert Image
Selecte image
Click on "open"
Watch image beeing uploaded
Get "Image upload successful notification
No image appears in the gallery

Expected behavior
The image is beeing shown in the gallery or directly inserted into the page
Screenshots

Your Configuration (please complete the following information):

Version: v0.25.5
PHP Version: 7.3
Hosting Method (Nginx/Apache/Docker): Root Server with apache

Additional context
I would guess that there is a problem with the thumbnail generation and therfore the images cannot be displayed in the gallery (see the null values in the thumbs key)
This is the response to the image gallery request (/images/gallery/all/0?page_id=5):
{
  "images": [
    {
      "id": 13,
      "name": "Gmf7667581533146232710[1].jpg",
      "url": "https://domain.com/uploads/images/gallery/2019-04-Apr/Gmf7667581533146232710[1].jpg",
      "created_at": "2019-04-05 09:31:50",
      "updated_at": "2019-04-05 09:31:50",
      "created_by": 1,
      "updated_by": 1,
      "path": "/uploads/images/gallery/2019-04-Apr/Gmf7667581533146232710[1].jpg",
      "type": "gallery",
      "uploaded_to": 5,
      "thumbs": {
        "gallery": null,
        "display": null
      }
    },
    {
      "id": 12,
      "name": "7667581533146232710[2].jpg",
      "url": "https://domain.com/uploads/images/gallery/2019-04-Apr/7667581533146232710[2].jpg",
      "created_at": "2019-04-05 09:28:14",
      "updated_at": "2019-04-05 09:28:14",
      "created_by": 1,
      "updated_by": 1,
      "path": "/uploads/images/gallery/2019-04-Apr/7667581533146232710[2].jpg",
      "type": "gallery",
      "uploaded_to": 5,
      "thumbs": {
        "gallery": null,
        "display": null
      }
    },
    {
      "id": 11,
      "name": "OJ37667581533146232710[1].jpg",
      "url": "https://domain.com/uploads/images/gallery/2019-04-Apr/OJ37667581533146232710[1].jpg",
      "created_at": "2019-04-05 09:28:02",
      "updated_at": "2019-04-05 09:28:02",
      "created_by": 1,
      "updated_by": 1,
      "path": "/uploads/images/gallery/2019-04-Apr/OJ37667581533146232710[1].jpg",
      "type": "gallery",
      "uploaded_to": 5,
      "thumbs": {
        "gallery": null,
        "display": null
      }
    },
    {
      "id": 10,
      "name": "7667581533146232710[1].jpg",
      "url": "https://domain.com/uploads/images/gallery/2019-04-Apr/7667581533146232710[1].jpg",
      "created_at": "2019-04-05 09:13:10",
      "updated_at": "2019-04-05 09:13:10",
      "created_by": 1,
      "updated_by": 1,
      "path": "/uploads/images/gallery/2019-04-Apr/7667581533146232710[1].jpg",
      "type": "gallery",
      "uploaded_to": 5,
      "thumbs": {
        "gallery": null,
        "display": null
      }
    }
  ],
  "hasMore": false
}

There is no error on the javascript debug console and also no error in the laravel.log or the apache error log.
Are there any steps to help debugging this problem?

Hi @effem,
Sorry to hear you are experiencing issues.
You could temporarily comment out this line:
https://github.com/BookStackApp/BookStack/blob/495d18814a7e76cec5d8e54f7ee19ccbd47bb6c5/app/Uploads/ImageRepo.php#L216
And then check the log after experiencing the error to see if you get any further detail in your log.

After analyzing the log output and further debugging on my server i fixed the problem.
There was a miss match between the version that apache was loading and the cli version that was showing up in the console. In the end it was a missing php-gd extension in the apache php version.
During the installation via composer the cli version of php is used and the required php-gd extension is present but the apache version was an older one that had not php-gd installed!
Thanks for your help!

@effem Ah, Thanks for reporting your findings, Glad to hear you found the issue!


Add sorting and sequential selection to notes merge

Thank you very much for adding the notes merging feature, and the feature would be even more awesome if sorting and sequential selection were added to it.
https://user-images.githubusercontent.com/38974362/187030439-92607ffb-c068-4e8f-a0fb-f4a128c173f8.mp4

This is already on my mind. I think the best way to implement it is to make it sequential, rather than providing custom sorting. What do you think?

I agree with you, the best way to implement it is to make it sequential.

Thank you for adding this improvement, But #135


Added link to the traditional chinese translation

Added traditional chinese  finally. 🎉🎉🎉

Awesome thank you for your hard work!!


Fixes #3814 Split calculate-checksum parameter changeSetIdentifier into changeSetPath / changesetId / changeSetAuthor

Impact

[ ] Bug fix (non-breaking change which fixes expected existing functionality)
[ ] Enhancement/New feature (adds functionality without impacting existing logic)
[X] Breaking change (fix or feature that would cause existing functionality to change)

TypeBug
APIBreakingChanges
newContributors
Description
As described in #3814 the calculate-checksum command was not able to parse arguments which contains :: characters. So the user is not able to use this command in conjuction with changeset Identifiers containing ::.
As suggested in the issue I have split the parameter changeSetIdentifier into three seperate parameters

changeSetPath
changeSetId
changeSetAuthor

Herefor I made changes to the CalculateChecksumCommandStep and introduced the parameters mentioned above. I had to adjust the calculate-checksum API in Main and the Liquibase class.
So the user has to adjust his use of the calculate-checksum command with the new parameters like so.
liquibase calculate-checksum --changeSetPath="changelog.xml"  --changeSetId="1::createTable" --changeSetAuthor="Me"
Things to be aware of

No Tests were written / adjusted until now
New Contributor

Things to worry about
Additional Context
Manual Test
Run config

Result

Hi @JulienMa94,
Thank you for submitting this PR for us, I have left you a few comments. Please have a look at them and please let me know if you have any questions.
Thanks,
Daniel.

@MalloD12 thx for your review. I will look into your suggested changes as soon I can find some freetime.
Greetings, Julien

Hi @MalloD12,
I had some time to look into your suggestions and tried to refine the code to your suggestions.
Unfortunately I have some problems with my local project setup and could not test my changes until now.
At the moment I receive a NPE inside the Scope class at line 427
https://github.com/liquibase/liquibase/blob/e885b06bb3bb87c1b165b6dd127b93bfdc315996/liquibase-standard/src/main/java/liquibase/Scope.java#L426-L431
I tried to debug this problem but I could not resolve it and I am a bit clueless if it is a problem related to my code changes or to my local run configuration.
Greetings
Julien

Hi @MalloD12,
I had some time to look into your suggestions and tried to refine the code to your suggestions.
Unfortunately I have some problems with my local project setup and could not test my changes until now. At the moment I receive a NPE inside the Scope class at line 427
https://github.com/liquibase/liquibase/blob/e885b06bb3bb87c1b165b6dd127b93bfdc315996/liquibase-standard/src/main/java/liquibase/Scope.java#L426-L431
I tried to debug this problem but I could not resolve it and I am a bit clueless if it is a problem related to my code changes or to my local run configuration.
Greetings Julien

I haven't faced this particular issue previously, but a team member told me he did and it got fixed for him by rebuilding the project.
Thanks,
Daniel.

Will try to rebuild it 👍🏽

Hi @MalloD12,
I have implemented your suggestions and made the following parameters optional

changeSetIdentifier
changeSetPath
changeSetId
changeSetAuthor

Inside the run method there is a case distinction if a single parameter (changeSetIdentifier) and multiple parameters (changeSetPath, changeSetid, changeSetAuthor) are passed by the user.
The changeSetIdentifier follows the orginial pattern myFile::myId::myAuthor.
I have added a help text to inform the user that there are two options for the Calculate Checksum command.
Manual Tests:
Single parameter config:

Single parameter result:

Multiple parameters config:

Multiple parameters result:

Hi @MalloD12,
I had some time to look into your suggestions and tried to refine the code to your suggestions.
Unfortunately I have some problems with my local project setup and could not test my changes until now. At the moment I receive a NPE inside the Scope class at line 427
https://github.com/liquibase/liquibase/blob/e885b06bb3bb87c1b165b6dd127b93bfdc315996/liquibase-standard/src/main/java/liquibase/Scope.java#L426-L431
I tried to debug this problem but I could not resolve it and I am a bit clueless if it is a problem related to my code changes or to my local run configuration.
Greetings Julien

I haven't faced this particular issue previously, but a team member told me he did and it got fixed for him by rebuilding the project.
Thanks, Daniel.

Rebuilding did the trick, thx for the hint 👍🏼

Hi @JulienMa94,
Thank you for addressing the discussed changes. I reviewed them today and they look good to me. I have made a few minor text updates, plus fixed some command definition tests (as well as added one happy path test by making use of the three new arguments).
We are having a build issue when trying to publish artifacts generated from a contributor branch and the team is already working on it. Before approving this PR I need to hold and wait until that issue is resolved, since once the build is successful some other tests should be triggered. I hope this gets fixed, so we can move forward with this one next week.
Again, thank you for all the effort you have been doing.
Thanks,
Daniel.

Hi @JulienMa94,
Thank you for addressing the discussed changes. I reviewed them today and they look good to me. I have made a few minor text updates, plus fixed some command definition tests (as well as added one happy path test by making use of the three new arguments).
We are having a build issue when trying to publish artifacts generated from a contributor branch and the team is already working on it. Before approving this PR I need to hold and wait until that issue is resolved, since once the build is successful some other tests should be triggered. I hope this gets fixed, so we can move forward with this one next week.
Again, thank you for all the effort you have been doing.
Thanks, Daniel.

Hi @MalloD12,
no problem I will be waiting and hoping that the issues will get fixed soon.
Thank you aswell for the constructive review and the work you did!
Have a nice week,
Julien

Thank you @JulienMa94 for the PR submission! I've taken a look and conducted tests with various scenarios involving different numbers of arguments—providing all, none, or only some of the required ones. In these cases, the error messages received were not particularly clear or user-friendly.
Encountered an unexpected error while executing Liquibase: The specified changeSet could not be identified. ChangeSet ID: null, Author: null, Path: null, .
Could I kindly request an enhancement to the error messaging for these scenarios? I'm thinking along the lines of:
Error encountered while parsing the command line. Required arguments missing: '--changeset-id', '--changeset-path'.
Error encountered while parsing the command line. '--changeset-identifier' cannot be provided alongside other changeset arguments: '--changeset-id', '--changeset-path', '--changeset-author'.
Could I seek some insights from @filipelautert and @MalloD12 on this matter? Your guidance would be greatly appreciated.

Hi @rberezen,
thanks for the feedback. This enhancement sounds reasonable I will be able to work on the PR next week.
Greetings
Julien

Hi @rberezen,
I added your suggestions for the error messages. So if the user provides all four or an ambigous amount e.g id, path and identifier of Arguments the following error message should be displayed:
Error encountered while parsing the command line. '--changeset-identifier' cannot be provided alongside other changeset arguments: '--changeset-id', '--changeset-path', '--changeset-author'.
If the user provides insufficent arguments e.g missing id & path the following message will be printed:
Error encountered while parsing the command line. Required arguments missing: '--changeset-id', '--changeset-path'.
Grettings
Julien

Hi @rberezen,
I added your suggestions for the error messages. So if the user provides all four or an ambigous amount e.g id, path and identifier of Arguments the following error message should be displayed: Error encountered while parsing the command line. '--changeset-identifier' cannot be provided alongside other changeset arguments: '--changeset-id', '--changeset-path', '--changeset-author'.
If the user provides insufficent arguments e.g missing id & path the following message will be printed: Error encountered while parsing the command line. Required arguments missing: '--changeset-id', '--changeset-path'.
Grettings Julien

Thanks @JulienMa94 for implementing these changes! I think the below error message:
`Error encountered while parsing the command line. Required arguments missing: '--changeset-id', '--changeset-path'.`

is not totally accurate. Remember we change these arguments to not be required. I think it would be good to mention to users that if --changeset-identifier is provided then no other changeset arguments are needed, otherwise these three other arguments should be all present.
Thanks,
Daniel.

Hi @MalloD12 and @rberezen,
I refined the error message.
If the user provides insufficent arguments e.g missing id & path the following message will be printed:
Error encountered while parsing the command line. If --changeset-identifier is not provided than --changeset-id, --changeset-author and --changeset-path must be specified. Missing argument:  '--changeset-author', '--changeset-path'.

Greetings
Julien


update rolodex component name from rolodex-header to rolodex-animation

https://github.com/Johnsoct/rolodex/pull/22


Support for Gemini via Vertex API

Thanks for making llm and all of your work around it!
If I understand correctly, this plugin, llm-gemini, only works with the gemini api through Google AI Studio.  But it doesn't work with the gemini models through Google Vertex AI which uses different endpoints.
It's kind of confusing because google has two python libraries that are really similar.   google-cloud-aiplatform is the one that works with Vertex.  Code example:  https://cloud.google.com/vertex-ai/generative-ai/docs/start/quickstarts/quickstart-multimodal
Do you think llm-gemini could support using the Vertex API in addition to the aistudio api? (I'm not sure what to call the non-vertex api)
My use case is pretty simple:  At work, I can access the Vertex AI API through GCP, but not AI Studio.   Vertex also doesn't use your data for training purposes by default.

I'll be honest, I hadn't figured out the difference between AI Studio and Vertex API myself! Thanks for helping clarify.
I can see a few options:

Ship a separate plugin, llm-gemini-vertex (or llm-vertex even, no need for that to be limited to just Gemini models) which uses the Google Vertex AI API
Teach llm-gemini to call both. I'm not sure how best to have it decide which APi to use though - a couple of options:

You set a different secret for each one - if you set gemini (the current) or aistudio (a new one) then it uses AI Studio, if you set vertex then it uses the Vertex API
Register multiple models names - gemini-pro and gemini-1.5-pro-latest and gemini-pro-vertex and gemini-1.5-pro-latest-vertex

I think the llm-vertex plugin may be the best of these options.

I'll be honest, I hadn't figured out the difference between AI Studio and Vertex API myself! Thanks for helping clarify.

No promises that I'm 100% correct, the docs aren't great at clarifying so I could've missed a way to get things working :)
After thinking about it, I agree with you that llm-vertex probably makes the most sense.  I've only used the Gemini models in vertex, but I know you can train your own models or just use models other than Gemini, though I don't think they're all "chat" models.
For auth, using google's sdk is probably easiest.  Usually an app would use either auth set up by the gcloud command, or a .json file pointing to service account in GCP.  I couldn't find a way to use just an api key or token.

Hey @simonw , I took a crack at this tonight and created a plugin based on https://llm.datasette.io/en/stable/plugins/tutorial-model-plugin.html:

https://github.com/justyns/llm-vertex
https://pypi.org/project/llm-vertex

It works so far, but I left a few TODOs I wasn't sure about.  Like should I register all models on an account?   And should I add a prefix to the model name like vertex/gemini-1.5-pro-preview-0409 instead of just gemini-1.5-pro-preview-0409 to avoid possibly clashing with the llm-gemini plugin?


Add cattle and tarmac to $uncountable

At least tarmac has a plural form. https://en.wiktionary.org/wiki/tarmacs

Thanks, I never knew tarmacs was the plural. I don't think I've ever heard or seen it used before


doc: specify that *Flags are string lists

Current practice is wildly inconsistent:
nixpkgs $ egrep -r '(configure|build|install|make)Flags = \[' | wc -l
935
nixpkgs $ egrep -r '(configure|build|install|make)Flags = "' | wc -l
687

I certainly agree, but I want to leave some timeframe for others to react.

Thanks. (D'oh. Nice catch. I changed the title of the commit as well.)

We call them lists, but unlike what's typical in functional languages, they actually are implemented as contiguous arrays IIRC.

+1, I've been fixing occurrences of plain strings in makeFlags where I found them for quite some time.

There was a time when I wrote them as a single string myself, because I makes it harder to forget that spaces aren't allowed. TBH I still think that's a weird implementation issue that needs to be fixed, but assume their are good reasons for not just throwing everything at the shell quoted.

If you want to say it's a list of string, I think it must be noted that it's just a string in the end in the builder. The fact is that all *Flags really are strings, but nix converts lists to string. So I don't think that description is really good.

@Lethalman:

we like lists

Lists are rad - when they're not easily (and worse, quietly) broken by spaces. The current situation seems like the worst of both worlds.

it's just a string in the end in the builder

Honestly, if I was sure there was no hope of that changing and thought a PR changing *Flags to strings instead would stand a chance, I would have submitted that instead. But people (I remember not who) seemed less than wild about that idea.
I just wanted to hear some consensus on this before I started asking silly questions like: why aren't lists exported as bash arrays, besides the obvious compatibility reasons?

It's just not true that it's a list, so I find this PR misleading. The truth in the docs is: it's a string, but you can pass a list and nix will automatically join it with spaces.

To elaborate my opinion: I feel that /logically/ *Flags have "list of string flags" type, so our first effort should be spent at abstracting it as "list of string flags", and only if that effort is too big/complicated we may decide to do otherwise. That effort includes promoting usage of correct types (while https://github.com/NixOS/nix/issues/14 is not yet there ^_^), although explanation of caveats might be needed -- so a better way may be adding "Internally it's converted into a string separated with spaces" note. Also that effort may include (in some future) representing these lists as Bash (or other shell) arrays -- sounds good (if we don't talk about compatibility), but that's out of range of this PR.

I believe we agree that we would like to truly have the flags as lists of strings in future. Why not have that formulation now, to announce that intention, but we should add a note that spaces in these strings aren't supported (yet). Then we can improve the implementation later.
(Out of scope of this PR.) Note that our stdenv does accept configureFlagsArray already, treated as a bash array. I only don't know of a comfortable way of defining it, and I directly can't see how to pass arrays without modifying the nix-level. Actually, all nix arrays might be just passed as bash arrays into the builder, but I imagine we would need to have a switch somewhere in the derive primitive to maintain backward compatibility.

I fully agree with @vcunat's last comment and will add that caveat to the PR.

ping @nckx :)

There's a better approach: https://github.com/NixOS/nixpkgs/issues/15799

If *Flags are only for string lists, please chime in on #17886 about ideas for another name for cmakeFlags (that PR turns it from a list to a set).


Don't show results for 1- or 2-character searches

Trying to search for one or two characters ties up the server.

Do we want to limit it to 2? Searching for "edu" isn't much better.

@akeym said 3-char searches are sometimes useful, although I agree that they could still return a lot of results.

Well my computer didn't like searching for "edu" at all so we might want to have another layer of restrictions on top of this.


[BUG] Boot in EFI mode not selected when creating multiple VM instances using VM template with EFI mode selected.

Describe the bug
I created a VM template and selected Boot in EFI mode. When creating instances the UI shows Boot in EFI mode selected but after that VM boots with legacy BIOS mode, and EFI mode checkbox was not checked, and there is no /sys/firmware/efi present.
To Reproduce
Steps to reproduce the behavior:

Go to Template, create a VM template with Boot in EFI mode selected. (For this case I'm using Ubuntu Server Jammy cloud image)

Go to Virtual Machines, click Create, select Multiple instance, type in a random name prefix, and select the VM template we just created.

Go to Advanced Options, for now this EFI checkbox should be checked without any issue.

Click Create, and go to any VM we just created using this template, select Config, and we will see this Boot in EFI mode not checked.

Boot up any VM we just created if it's not booted up, login into the system, and we can see no /sys/firmware/efi present.

Expected behavior
VM instances should boot in EFI mode correctly, not in legacy BIOS mode.
Support bundle

supportbundle_f72326aa-4348-419e-935c-b561533d8249_2022-07-27T08-02-23Z.zip
Environment

Harvester ISO version: v1.0.2
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): Baremetal Dell PowerEdge R630

Additional context
Add any other context about the problem here.

Verified fixed on v1.0-b6244fcd-head (08/01). Close this issue.
Result
Now we can create multiple VM instance using VM template with EFI mode selected

All VMs are running

Check VM setting, the booting in EFI mode is checked

Access each VM we can see /sys/firmware/efi present
ubuntu@efi-01:~$ ls /sys/firmware/
acpi  dmi  efi  memmap

ubuntu@efi-02:~$ ls /sys/firmware/
acpi  dmi  efi  memmap

ubuntu@efi-03:~$ ls /sys/firmware
acpi  dmi  efi  memmap

Test Information

Test Environment: 1 node harvester on local kvm machine
Harvester version: v1.0-b6244fcd-head

Verify Steps

Create a VM template, check the Booting in EFI mode
Wait for all VM running
Check the EFI mode is enabled in VM config
ssh to each VM
Check the /etc/firmware/efi file


Task logger should have fallback operation id during execution

Context
When tasks use external threads, output is not linked to the task execution build operation id. This fixes this problem by explicitly assigning the task execution build operation id as fallback to the task logger.

@big-guy would be great to get feedback from you on this


Link creation doesn't work on ENTER

Hey, thank you for the very useful plugin ...
Link generation works fine with spaces but not with the ENTER key.
Thoughts?

@billmn @jkchavarrom2015 I have fixed this issue, and also add a new feature to support Firefox. Any problem please contact me, thanks~


Instrument the parsed AST and generate JS for it

This is basically done as of:

https://github.com/Janiczek/elm-compiler/commit/303068059656e3e983d5d3f490739e220c2bef9e
https://github.com/Janiczek/elm-make/commit/9af558c970e0952550505e25c0c34d90c20465ce

There's a binary made from these two commits here:
https://transfer.sh/Wm3lZ/elm-make


Properly close SSL Socket, not by creating decoy streams and closing …

…them instead. This (likely) causes the TCP channel to be interrupted from the SOCKS proxy and closing the connection no longer sends the correct termination sequence.
This fixes [STAB-6], with high confidence.

 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.:x: ilge sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Localizations

Type of change

[ ] 🐛 Bug fix
[ ] 🌟 New feature
[ ] 🔨 Breaking change
[ ] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

Packages affected

[ ] @clerk/clerk-js
[ ] @clerk/clerk-react
[ ] @clerk/nextjs
[ ] @clerk/remix
[ ] @clerk/types
[ ] @clerk/themes
[ ] @clerk/clerk-expo
[ ] @clerk/backend-core
[ ] @clerk/clerk-sdk-node
[ ] @clerk/edge
[ ] build/tooling/chore

Description

[ ] npm test runs as expected.
[ ] npm run build runs as expected.

Can you add the recommended usage pattern here as a comment?


MBCS_Tests_datetime related formatting test failures on IBM Cloud - RHEL only

Test_openjdk16_hs_special.functional_x86-64_linux
MBCS_Tests_datetime_0 => deep history 4/5 passed | possible issues - OK to Release test only fails on test-ibmcloud-rhel6-x64-1 - test or host needs updating - expected:<2021-04-21T17:48:12Z> but was:<2021-04-21T17:48:12.001Z>
MBCS_Tests_datetime_formatter_0 => deep history 4/5 passed | possible issues - OK to Release test only fails on test-ibmcloud-rhel6-x64-1 - test or host needs updating - expected:<2021-04-21T17:48:12Z> but was:<2021-04-21T17:48:12.001Z>

Hmmm it would be good to be 100% certain that this doesn't occur on RHEL7/RHEL8 so we'd need to run some Grinders on that. We should also bear in mind that RHEL6 is now out of support for most people, so a valid option may be to exclude it on that system if possible (or remove the machine, but since we build against that version it would seem not ideal to not test on it)

If we get the info on being able to recreate this, then it can probably be verified in a CentOS6 docker container and see if any other workaround is possible, therefore adding this as a good first issue

Rerunning with jdk17 5 iterations
https://ci.adoptium.net/job/Grinder/8475/console