[TOPIC-GPIO] miscellaneous API documentation updates

Make behavior and future intent more clear.

@dbkinder could you please look at the last commit currently 45ef15c2e7923b17efa84b27eea227edd9a5d956 and tell me if there is some way to put content at the top of the API page.  Basically I'd like a block of text at the top of the "API Reference" section, but to have it come from the header.

I think the commit for updating the atomicity should be pulled out into its own PR that also updates the new drivers to match.

There's a problem with that: I'm not going to change the drivers because I don't know the underlying HALs and what atomicity promises they make, and even if I do have hardware for all the drivers it's not an effective use of my time to test my inept attempts to update them.
I really think driver changes should be the responsibility of the people who know and normally maintain the drivers, so they can do things they way they want them done, rather than having to redo what somebody else did.

I think the commit for updating the atomicity should be pulled out into its own PR that also updates the new drivers to match.

I think we can live with this. The driver updates will likely come from @mnkp, and there's a reason we have a staging branch. If you prefer what we could do is wait until the existing (new) drivers are updated to reflect the text in this PR in topic-gpio  and then merge the present one.

I think we can live with this. The driver updates will likely come from @mnkp, and there's a reason we have a staging branch. If you prefer what we could do is wait until the existing (new) drivers are updated to reflect the text in this PR in topic-gpio and then merge the present one.

However we want to do it is fine, we can either hold this PR until there's a merged PR with the changes or we drop the commit for that text and have @Mnkp pick it up in a PR with the atomic changes.

I think we can live with this. The driver updates will likely come from @mnkp, and there's a reason we have a staging branch. If you prefer what we could do is wait until the existing (new) drivers are updated to reflect the text in this PR in topic-gpio and then merge the present one.

However we want to do it is fine, we can either hold this PR until there's a merged PR with the changes or we drop the commit for that text and have @mnkp pick it up in a PR with the atomic changes.

@mnkp and @pabigot  what's your point of view? We should get this done this week so we can send an email to driver maintainers as soon as possible.

However we want to do it is fine, we can either hold this PR until there's a merged PR with the changes or we drop the commit for that text and have @mnkp pick it up in a PR with the atomic changes.

@mnkp and @pabigot what's your point of view? We should get this done this week so we can send an email to driver maintainers as soon as possible.

@galak's options both require waiting to document the requirement until all drivers are updated to comply with it.  I see no motivation for that, and strong motivation for adding the documentation now so people who look at this in the branch are informed what's expected of them.  That full specification of API behavior was not addressed before the original merge was a process failure.
Note there are two commits that specify atomicity behavior: one generically, and one at each description of expected behavior.
If consensus is to not document atomicity behavior until it's implemented I'll remove both commits.

@galak's options both require waiting to document the requirement until all drivers are updated to comply with it. I see no motivation for that, and strong motivation for adding the documentation now so people who look at this in the branch are informed what's expected of them. That full specification of API behavior was not addressed before the original merge was a process failure.
Note there are two commits that specify atomicity behavior: one generically, and one at each description of expected behavior.
If consensus is to not document atomicity behavior until it's implemented I'll remove both commits.

Just to be clear I mean the 4 drivers that have been updated.  I'm assuming that should be a relatively quick thing for @mnkp to handle.

That full specification of API behavior was not addressed before the original merge was a process failure.

There is a lot of work that needs to be done before the GPIO API is complete and clean. We've started by adapting flags used in DT to match Linux bindings. That required also some related changes to the API functions. That was the only goal of the PR that got merged on the topic branch. Which I've stated and re-stated multiple times already. Having atomicity and thread safety is important but @pabigot you're just piling extra work on top of an already huge pile. I would rather focus my time and energy on the two pin testcase to ensure that the functionality that we've implemented works as advertised. Also we need to convert more drivers. We're still not 100% sure that the we don't hit a block when implementing gpio_port_* functions on all the different platforms.
That said I appreciate the fact @pabigot that you've provided the proposal. I'll be happy to contribute to this issue as soon as I find some time.

@mnkp Please understand, I'm not the one asking you to make these changes.  I think they should be done by the normal maintainers as part of a pass through confirming that the implementation is what they want to deal with in the future.  I absolutely do not understand why @galak wants the implementation changes made before we document the required behavior which (I hope) we all agree must be supported.
However, I accepted 16468 with the expectation that we would get the full definition of the API in place.  Which means defining the expected behavior and interaction with respect to interrupts and context switches, even if we haven't implemented it yet.
We should not be asking people to convert drivers, then coming back two weeks later and asking them to change them because we finally got the specification complete.
@galak please reconsider your NACK of the documentation-only PR.  This is only slowing us down.
As for the two-pin test case, AFAICT nobody's looked #19249 yet.  Yes, for right now you need to hard-code specific pins.  We can fix that up later.

We should not be asking people to convert drivers, then coming back two weeks later and asking them to change them because we finally got the specification complete.

We're doing incremental changes. It's not like we will need to throw away the code we wrote and write it again. When atomicity/thread safety concept is complete I expect I will need to review the code and throw in some irq_locks in a few places. I understand that you have a different perspective since you were working on an external GPIO driver where this issues have higher impact. However, the atomicity/thread safety concept has been missing for a while now.
I would rather split the whole thing in a smaller manageable (and as much as possible independent) packages. If there are things which need to be handled together then we have no choice.
Regarding atomicity I believe we should handle the thread safety at the same time. Even if only to ensure that the returned error codes are what we want them to be. Thread safety will be required for external gpio drivers.

Regarding atomicity I believe we should handle the thread safety at the same time. Even if only to ensure that the returned error codes are what we want them to be. Thread safety will be required for external gpio drivers.

It's supposed to all be covered.  See https://github.com/zephyrproject-rtos/zephyr/issues/18530#issuecomment-530472454 and the linked general issue #18970 where the meaning of the terms is being defined.

Regarding atomicity I believe we should handle the thread safety at the same time. Even if only to ensure that the returned error codes are what we want them to be. Thread safety will be required for external gpio drivers.

It's supposed to all be covered. See #18530 (comment) and the linked general issue #18970 where the meaning of the terms is being defined.

This PR covers atomicity only. I believe we should handle thread safety at the same time since both issues are related. If we guarantee atomicity in a normal SoC GPIO the thread safety is also insured but this doesn't hold true for the external GPIOs like gpio_sx1509b where we need to communicate over I2C bus.

I hadn't intended an exception from the atomicity requirement for non-SOC implementations; however the original definitions in #18970 improperly required it to encompass "non-blocking", which was a problem.
I've updated the PR to note a requirement for both thread- and interrupt-safety for all functions.  Reentrancy is not relevant for any current function.

Until #18970 gets some love and everybody agrees on what terms related to thread and interrupt safety and atomicity mean we can't document what the required behavior is.
Also @mnkp has a point about thread safety of callback registration. There are specific guarantees in the existing text about adding and removing a callback from an interrupt, which is enough for me.
I've removed the objectionable commits.  If somebody else wants some of them back, please feel free to do that in another PR.
@galak @mnkp please revisit your reviews.


Create Telemetry page

It's very important to be transparent to our users. CLI uses telemetry to track the usage of commands, while this project is open source, it's not trivial for everyone to check what we are actually logging.
Therefore we could add a new docs page where we explain what we are actually logging and why. According to me, this page should go under the 'about' tab.

@pnp/cli-for-microsoft-365-maintainers good idea? Remarks?

Agree we should be transparent about that, having a location with some details to quickly glance what is tracked would make sense for me :)

Since we're working on this, we should also add support for disabling the telemetry using a config value, like disableTelemetry.


Match doc links with Shuttle Service current doc url

Description of change
Updated doc string URL to match current URL for resource.
Please write a summary of your changes and why you made them.
URL in returned error doesn't  point to current Shuttle Service docs.
Be sure to reference any related issues by adding closes issue #.
How Has This Been Tested (if applicable)?
Please describe the tests that you ran to verify your changes.
Ran cargo clippy --tests --all-targets and cargo check

Happy to change it back again when the time comes : )


Example Gallery Bug when Rendering High Quality

Describe the bug
For the Gallery Example with https://docs.manim.community/en/stable/examples.html#pointwithtrace
Code:
from manim import *

class PointWithTrace(Scene):
    def construct(self):
        path = VMobject()
        dot = Dot()
        path.set_points_as_corners([dot.get_center(), dot.get_center()])
        def update_path(path):
            previous_path = path.copy()
            previous_path.add_points_as_corners([dot.get_center()])
            path.become(previous_path)
        path.add_updater(update_path)
        self.add(path, dot)
        self.play(Rotating(dot, radians=PI, about_point=RIGHT, run_time=2))
        self.wait()
        self.play(dot.animate.shift(UP))
        self.play(dot.animate.shift(LEFT))
        self.wait()

Wrong display or Error traceback:

Additional context
The circular arc is drawn correctly, but once it is done, it deletes the whole arc and continuous as if the path started from the origin completing the drawing. This doesn't happen with low quality, but happens when you use high quality.

Okay deleting the media directory and then re-running fixed the problem.


Loading map in unreal engine failed [holodeck-engine]

Describe the bug
A clear and concise description of what the bug is.
I followed all requirements on README.md file, but failed.
Error message after open holodeck.uproject file.
"Failed to load map!
../holodeck-engine/Content/ExampleLevel.umap appears to be an asset file."
To Reproduce
Please provide sample code to reproduce the bug.
Just clone the project and follow the manual.
Expected behavior
A clear and concise description of what you expected to happen.
I expect the level loaded successfully on unreal engine.
Screenshots
If applicable, add screenshots to help explain your problem.
Version Information:

OS: [e.g. iOS]
Window 10

Version [e.g. 22]
Unreal engine 4.22

Holodeck Version
holodeck-engine[master]

World/Scenario version

Additional context
Add any other context about the problem here.

.uasset files are stored in git-lfs. From the error you are describing, it seems git-lfs has not converted the pointer file into the actual file. Make sure git-lfs is installed and working on your machine.
Try running git lfs pull, or cloning with the https url instead of git.
To verify this I cloned holodeck-engine and disabled git-lfs and got the same error:

FYI, most of the assets that we show in our marketing stuff aren't included in holodeck-engine for licensing reasons.


Minor updates

Not planning to backport (doc-nits is only in master) unless there's pressure.

I would also very much like to see whatever changes we end up with backported to 1.1.0, as much as is appropriate (yes, I know, doc-nits is master only, but the rest is the same for all branches)

As I noted in the other PR - we need to be clear to point what used to go to openssl-dev off to github as per OMC decisions. openssl-project is not a replacement for openssl-dev - it has an entirely different purpose.
And the elimination of RT references should be backported for active release (1.0.2, 1.1.0) ...

I'll wait until @t-j-h has a chance to look before pushing.  I will cherry-pick, by just copying the file over to each release (and deleting the doc-nits sentence for the non-master branches).

Thanks for your feedback.  You don't have to abstain :)  Tim had made excellent points, too, and I want to make sure this addresses them before I merge.

@FdaSilvaYY, you propose a lot of good ideas here, but some of them go beyond the scope of a simple CONTRIBUTING text file. For example, it can't be purpose of it to provide a complete GitHub tutorial. There are are a lot of good tutorials out there, not only on GitHub.
I agree that it would be a good thing to have a place were OpenSSL specific GitHub matters like the basic workflow and the build serves are explained. But a plain text format is not the ideal medium for doing that. The Wiki would be a more suitable location.
An even better and more visible solution (than a link to the wiki) is the possibility to create a welcome page for the project. I happened to see a nice one just recently on the google/tink project page. If you scroll down a little, you see it. The source file, README.md is part of the repository and written in github flavoured markdown. From the welcome page, one could link into further useful documentation related to OpenSSL on GitHub, which could be located in docs/github as markdown files. There you would have a lot of possibilities to follow your ideas...

I know @t-j-h is busy this week with RSA, so I'll merge in a couple of days anyway.

Merged to all three branches (sans the doc-nits sentence for non-master); thanks everyone for the feedback.


Drop PHP 7.1 support

This would be a BC-breaking change.
Rationale is that upcoming php-v8 abstraction library is under development and I want to utilize new PHP 7.2 features, notably, object typehint.
If you are using php-v8 extension and for some reason have to stick to PHP 7.1 - please, let me know in comments. If you are willing to upgrade and capable to do that, please, let me know too in comments.
As of writing, I don't have specific due date for such changes. I guess I will match when top PHP  frameworks (Symphony, Laravel) and development tools (xdebug, phpunit, code sniffer, mess detector) and others will fully support PHP 7.2.

PHP 7.1 support will be dropped in php-v8 >= 0.3.x releases. If anyone is actively depend on it, please let me know in a timed manner. 0.2.2 (the next release) or 0.2.3, if any, would likely to close 0.2.x release series.


RawKeyEvent and RawKeyboard, et al should be deprecated and removed

Description
Several years ago, we embarked on a project to improve the keyboard key handling for Flutter.  The new system has been in production use for a while now (at least a couple of years).
However, the legacy interfaces are still present, and on the framework side, this makes for a confusing story for our users, and complicates the code. On the engine side, we are still producing and handling both kinds of keyboard events, which complicates the code and is less efficient.
This document describes the steps that need to be taken in order to complete the deprecation and removal of the old “Raw” APIs and code.
Affected APIs
The APIs that need to be deprecated and eventually removed are:

RawKeyboard
RawKeyEvent
RawKeyDownEvent
RawKeyUpEvent
RawKeyEventData
RawKeyEventDataAndroid
RawKeyEventDataLinux
RawKeyEventDataIos
RawKeyEventDataMacOs
RawKeyEventDataWindows
RawKeyEventDataFuchsia
RawKeyEventDataWeb
RawKeyEventHandler
FocusOnKeyCallback
RawKeyboardListener
KeyEventManager.handleRawKeyMessage
KeyboardSide
ModifierKey
KeyDataTransitMode
KeySimulatorTransitModeVariant
Focus.onKey
FocusScope.onKey
FocusNode.onKey
FocusNode.attach onKey argument.
FocusScopeNode.onKey
debugKeyEventSimulatorTransitModeOverride

Things that still need to be migrated to use only KeyEvent instead of RawKeyEvent (in some cases these currently work with both, and will eventually only need to work with KeyEvent):

ShortcutActivator.accepts
ShortcutActivator.isActivatedBy
ShortcutManager.handleKeypress
simulateKeyDownEvent
simulateKeyUpEvent
KeyEventSimulator
Many tests

Functionality that existed in RawKeyEvent that no longer exists after switch to KeyEvent:

Convenience functions for determining if a key is pressed.

bool isKeyPressed(LogicalKeyboardKey key)
bool get isControlPressed
bool get isShiftPressed
bool get isAltPressed
bool get isMetaPressed

Things that need to be removed:

All related private APIs
Key code generation that refers to RawKeyEvent
Engine side code that generates RawKeyEvent events.
Documentation references to all deprecated APIs, both in API docs and website docs.

Deprecation Timeline
Q4 2023: Deprecate all the API listed above as deprecated.
Q4 2024: Remove RawKeyboard and RawKeyEvent, et al. from the Flutter Framework.
Q4 2024: Remove related code from the Flutter Engine.

For the migration away from RawKeyEvent, we need to make ShortcutActivator.accepts handle KeyEvent events. The options appear to be:
1) add a new `acceptsKeyEvent` method that takes a `KeyEvent`, and make people override it (it will break all subclasses when it is added), or
2) create a sealed base class that only `RawKeyEvent` and `KeyEvent` derive from (`GenericKeyEvent` perhaps) and make the `ShortcutActivator.accepts` method take a `covariant GenericKeyEvent`, and then provide two implementations conditional on which type was given. Later, both `RawKeyEvent` and `GenericKeyEvent` would be removed.

The up side of the first method is that I don't need to relate the two key event classes, but the down side is a huge breaking change up front when the new method is added.
The up side of the second way is that we don't need to rename the method, and we don't break people's subclasses, but the down side is that we'll break all the subclasses anyhow when we remove GenericKeyEvent, or at runtime when we switch to sending only KeyEvents.
We could just leave GenericKeyEvent in place after removing the deprecated RawKeyEvent, but it would have no members, and only one subclass (KeyEvent), so it's really pretty useless. We could start its deprecation period when we remove RawKeyEvent, I guess, and then remove it two years from now...
The other part of the problem is when to switch over from sending RawKeyEvent instances to ShortcutActivator.accepts to sending KeyEvent instances.  If I go with the sealed base class path, then it will just break a lot of code at runtime, and static failures are preferable to runtime failures, of course.
Here's what I might try:

Introduce the sealed base class (GenericKeyEvent) and update ShortcutActivator.accepts:

Introduce the sealed base class GenericKeyEvent (which will mean moving implementation of RawKeyEvent in the framework into the same file as KeyEvent, but it'll be deprecated and removed eventually).
Update the ShortcutActivator.accepts method to accept a covariant GenericKeyEvent.
Maintain the existing implementation of ShortcutActivator.accepts for RawKeyEvent.
Add a new implementation for ShortcutActivator.accepts that handles KeyEvent objects.
Provide a global setting that changes wha

Deprecate RawKeyEvent:

Mark the RawKeyEvent class as deprecated.
Provide a migration guide for developers to switch from RawKeyEvent to KeyEvent.

Transition to KeyEvent:

Update the code that sends key events to ShortcutActivator.accepts to use KeyEvent instead of RawKeyEvent.
Maintain the existing implementation for RawKeyEvent in ShortcutActivator.accepts for a deprecation period.

Remove RawKeyEvent:

After the deprecation period, remove the RawKeyEvent class.
Remove the RawKeyEvent-specific implementation from ShortcutActivator.accepts.

After talking with Michael, it seems like method 1, above might be the best way to go.  Yes, it causes a breaking change for people who subclass ShortcutActivator directly, but most people don't do that.
I'm going to give that a try.

This change will require a lot of rework in several repos. Been using things like RawKeyboardListener and e.g. RawKeyEventDataMacOs, RawKeyEventDataIos, since that was pretty much the only way to get what was needed done, when it was written many years ago.
I've seen there are some newer ways, but no real idea what they are. Yes these old APIs are fairly low level, but once setup they worked worked very well, so there was no need to fix them or look into the newer APIs, since they were not broken.
I hope good and very in-depth guides on how to replace all the deprecated APIs above will be provided. At least I have no clue where to even begin look for replacements.

I'm all in for this change, except for the fact that shortcut is super painful. I hate it. Isn't there a better way? I understand its benefits, but the whole intents mixed with commands that are basically static (actions, bindings) make everything so hard. Could you use shortcuts to, say, control a character with WASD, while having everything in the same function? I miss a dynamic approach. Could you swap the behavior depending on user locale? I don't think so. Things are way too limited for my taste, which is the reason I usually don't use shortcuts in my apps.

@rydmike Yes, sorry for the churn, but the raw methods have been marked in the documentation as "going to be deprecated" for a while now (years), and we really need to remove the duplicate system to reduce the tech debt of maintaining them both, or it will just grow over time (as it already has).
There will definitely be an extensive migration guide and, for the things we use it for, dart fix solutions.
The replacements are generally found linked in the existing class documentation.  For the ones you mentioned, RawKeyboardListener is replaced by KeyboardListener, and (hopefully) the information in the platform specific classes you mentioned is available in KeyEvent, because the platform-specific data classes are being phased out. If not, please let us know what is missing.

Okay, with the commit of #136677, the deprecations are in, starting the one year countdown to their removal.
As mentioned in the issue description above, the migration guide for this is here: https://docs.flutter.dev/release/breaking-changes/key-event-migration

We recently migrated our keyboard shortcut listener's FocusNode to use onKeyEvent instead of onKey. Currently, using tester.sendKeyUpEvent does not appear to be triggering our handler. Using tester.sendKeyDownEvent does work as expected. Is this to be expected until the final checklist items re: simulated events is completed? Thanks in advance, just want to document test failures if we anticipate them passing as-is when this issue is completed.

@aymswick Could you please file an issue for what you described? (Feel free to cc me.)

Flutter 3.19.1
OSX Venture
Flutter Web
When I refactor from using RawKeyboardListener to KeyboardListener, no key events get triggered.
I'm using the listener to implement a way to close Overlays with the Escape key.

.. the information in the platform specific classes you mentioned is available in KeyEvent, because the platform-specific data classes are being phased out. If not, please let us know what is missing.

@gspencergoog In the Ubuntu installer we were are using the following to be able to let the user detect which keyboard layout their keyboard has:
void _handleKey(RawKeyEvent event) {
  final data = event.data as RawKeyEventDataLinux;
  final scanCode = data.scanCode;
  ...
}

Is this not possible to do in the new API?

I solved it with manual mapping for now (if anyone else needs this).
  bool _handleKey(KeyEvent event) {
    if (event is!  Delete
  0x64: 0x0056, // Europe 2 (Note 2)
  0x65: 0xE05D, // App
  0x67: 0x0059, // Keypad =
  0x68: 0x005D, // F13
  0x69: 0x005E, // F14
  0x6A: 0x005F, // F15
  0x85: 0x007E, // Keypad , (Brazilian Keypad .)
  0x87: 0x0073, // Keyboard Int'l 1 ろ (Ro)
  0x88: 0x0070, // Keyboard Int'l 2 かたかな ひらがな ローマ字 (Katakana/Hiragana)
  0x89: 0x007D, // Keyboard Int'l 3 ￥ (Yen)
  0x8A: 0x0079, // Keyboard Int'l 4 前候補 変換 (次候補) 全候補 (Henkan)
  0x8B: 0x007B, // Keyboard Int'l 5 無変換 (Muhenkan)
  0x8C: 0x005C, // Keyboard Int'l 6 (PC9800 Keypad , )
  0x90: 0x00F2, // Keyboard Lang 1 한/영 (Hanguel/English)
  0x91: 0x00F1, // Keyboard Lang 2 한자 (Hanja)
  0x92: 0x0078, // Keyboard Lang 3 かたかな (Katakana)
  0x93: 0x0077, // Keyboard Lang 4 ひらがな (Hiragana)
  0x94: 0x0076, // Keyboard Lang 5 半角/全角 (Zenkaku/Hankaku)
  0xE0: 0x001D, // Left Control
  0xE1: 0x002A, // Left Shift
  0xE2: 0x0038, // Left Alt
  0xE3: 0xE05B, // Left GUI
  0xE4: 0xE01D, // Right Control
  0xE5: 0x0036, // Right Shift
  0xE6: 0xE038, // Right Alt
  0xE7: 0xE05C, // Right GUI
};

Is this not possible to do in the new API?

Correct, this isn't possible in the new API, since it's more platform independent. If detecting the layout is something that makes sense in a cross platform way, we can work on figuring out a way to represent that.

Correct, this isn't possible in the new API, since it's more platform independent. If detecting the layout is something that makes sense in a cross platform way, we can work on figuring out a way to represent that.

I can't come up with another use-case than ours (OS installer), or possibly if you have like a front-end for OS keyboard settings, so it's probably not worth spending time on unless others see the need for it. We'll be fine with the manual mapping. :)

How can I migrate the following codes without rewriting the whole key binding logic under the new system?

  Keybinding({
    this.key = 'v',
    this.modifiers = RawKeyEventDataMacOs.modifierCommand | RawKeyEventDataMacOs.modifierLeftShift,
  });

  Map<String, dynamic> toJson() => {
        'key': this.key,
        'modifiers': this.modifiers,
      };

  Keybinding.fromJson(Map<String, dynamic> json) {
    key = json['key'] ?? 'v';
    modifiers = json['modifiers'] ?? RawKeyEventDataMacOs.modifierCommand | RawKeyEventDataMacOs.modifierLeftShift;
  }
  Keybinding.fromJsonString(String content) {
    var json = jsonDecode(content);
    key = json['key'] ?? 'v';
    modifiers = json['modifiers'] ?? RawKeyEventDataMacOs.modifierCommand | RawKeyEventDataMacOs.modifierLeftShift;
  }

  @override
  String toString() {
    var isCmdPressed =
        ((this.modifiers & RawKeyEventDataMacOs.modifierCommand) == RawKeyEventDataMacOs.modifierCommand);
    var isCtrlPressed =
        ((this.modifiers & RawKeyEventDataMacOs.modifierControl) == RawKeyEventDataMacOs.modifierControl);
    var isOptPressed = ((this.modifiers & RawKeyEventDataMacOs.modifierOption) == RawKeyEventDataMacOs.modifierOption);
    var isShiftPressed = ((this.modifiers & RawKeyEventDataMacOs.modifierShift) == RawKeyEventDataMacOs.modifierShift);

    String content = '';
    if (isCmdPressed) {
      content += 'CMD ';
    }
    if (isCtrlPressed) {
      content += 'CTRL ';
    }
    if (isOptPressed) {
      content += 'OPT ';
    }
    if (isShiftPressed) {
      content += 'SHIFT ';
    }
    if (this.key == ' ') {
      content += 'SPACE';
    } else {
      content += this.key.toUpperCase();
    }

    return content;
  }

@deskangel Unfortunately, you will have to rewrite your logic, since the modifier mask is no longer provided.  There are, however, some helper functions that will help you do it: Look at HardwareKeyboard.isMetaPressed, etc.

This is what I am concerned about. This isn't the first time I've had to
rewrite all the codes related to the keyboard handling without seeing any
benefits. Are the breaking changes caused by the removal absolutely
necessary, or is it just for the sake of tidiness or clean?
Best regards,
William Hsueh
Greg Spencer @.***> 于 2024年3月26日周二 00:33写道：

@deskangel https://github.com/deskangel Unfortunately, you will have to
rewrite your logic, since the modifier mask is no longer provided. There
are, however, some helper functions that will help you do it: Look at
HardwareKeyboard.isMetaPressed
https://main-api.flutter.dev/flutter/services/HardwareKeyboard/isMetaPressed.html,
etc.
—
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/136419#issuecomment-2018421221,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APA5BTMZLRN22JZYEOW5VWTY2BGWTAVCNFSM6AAAAAA54WX3LCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJYGQZDCMRSGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

It is necessary in order to reduce the maintenance cost of maintaining the system, and to reduce the complexity of the system for stability and quality. It's not just because we want it "tidy", it's because we want it to be well engineered and stable, without being overly complex to understand.

I just noticed that HardwareKeyboard.instance.isShiftPressed doesn't work on Android, whereas the RawKeyEvent event.isShiftPressed did work. This applies both to hardware and virtual keyboards. Is this the intended behaviour to drop support for isShiftPressed on Android or should a file a bug for this? I used it to distinguish Enter and Shift+Enter for some cases.

@konrad321 No, that's not intended behavior, although it is intended that it doesn't work with virtual keyboards (because they don't generally generate events on Android). I don't think that ever worked for virtual keyboards.  Could you please file a separate issue for that with details?


Support arrays in nested rules

Hi, thanks a lot for an awesome library.
I suppose I have found an inconstancy, here what it is:
var values      = { persons: [ { firstName: 'Viktor' } ] };

var rulesFlat   = { 'persons[0].firstName': 'required' }; // or { 'persons.0.firstName': 'required' }

var rulesNested = { persons: [ { firstName: 'required' } ] }

var v1 = new Validator(values, rulesFlat); // ok
var v2 = new Validator(values, rulesNested) // throw Exception TypeError: ruleString.indexOf is not a function

In my opinion both of them should work. If this is a bug, I can try to make a pull request.
Thanks.

Hi, I have forked a repo and started some debugging in order to fix this. But came to pretty strange results.
The problem is in support of Arrays in rules.  Consider a situations
var values      = { emails<EMAIL_ADDRESS>};
var rules      = { emails: ['email'] };

var v1 = new Validator(values, rules);
v.passes() // true.

But this true is incorrect true, because validation happened on not on string<EMAIL_ADDRESS>rather on Array<EMAIL_ADDRESS>And RegExp /email<EMAIL_ADDRESS>returns true. So inputValue that was aimed to be validates was incorrect.
That cause situations
var values      = { emails<EMAIL_ADDRESS>'whatever'] };
var rules      = { emails: ['email', 'required'] };

var v1 = new Validator(values, rules);
v.passes() // false.

And this is incorrect now.
Despite things are ok if we use flat rules object, like:
var rules = {emails[0]: 'email', emails[1]: 'required' }

What I have found for now, is that if we have in rules

Object -> it is flattened when Validator object is created (user:{name: 'required'} -> user.name: required)
Array -> are not flattened

_flattenObject function is responsible for that. And I suppose all nested data structures should be flattened.
This may be a massive influence on a lib, taking to account that now it relays on wrong behavior.
Let me know if I am on a right direction. I may have not got the reason why Arrays are not flattened.
Thanks @skaterdav85 , @mikeerickson

Do you know how Laravel handles an array of emails? If they don't, maybe you can just create a custom rule.

So, I did some more investigation on that topic, and it happens that currently there is a similar limitation. Both libraries support "alternative initialization using an array instead pipe" and this makes rules having nested Arrays impossible to use.
var values = { email<EMAIL_ADDRESS>};
var rules = { email: ['required', 'email'] };  // email in value is not an Array

So in this scenario we dont have one to one match between rules and values data format. Like I expected to have. So any array in rulesobject is counted ad rules list, not asvalues` structure mirroring.
To conclude, if we need to validate only first item of array, we need to write flat rule name.
var values = { emails<EMAIL_ADDRESS>};
var rules = { 'emails[0]': 'required|email' }; // or {'email[0]': ['required', 'email']}

This item really confused me for some time. Don`t you mind if I add this to README in PR?

Sorry to dredge up a very old issue, but I somewhat recently needed the same thing that is asked for in this ticket. I ended up running my own slightly modified copy of _flattenObject against my ruleset before it is passed into the validator so that the plugin itself didn't need to do any parsing, and it correctly flattens out the nested array object and correctly attaches the nested rules to each key within the sub-object.
(my codebase is written in typescript, so ignore the castings against the variables and it functions as javascript)
function FlattenObject(obj: Record<string, any>): Record<string, any> {
    const flattened: Record<string, any> = {};

    function recurse(current: Record<string, any>, property?: any) {
        if (!property && Object.getOwnPropertyNames(current).length === 0) {
            return;
        }

        if (Object(current) !== current || Array.isArray(current)) {
            if (Array.isArray(current) && current[0] instanceof Object && property) { // <-- Additional check when we know it may be an array to see if the first item is an object, and assume that it is reading nested rules if so
                flattened[property] = ['array'];
                recurse(current[0], `${property}.*`); // <-- recurse down into the sub-object to attach the ruleset to each part of the array with the appropriate "key.*.subKey" structure
            } else {
                flattened[property] = current;
            }
        } else {
            let isEmpty = true;

            for (const p in current) {
                if (Object.prototype.hasOwnProperty.call(current, p)) {
                    isEmpty = false;
                    recurse(current[p], property ? `${property}.${p}` : p);
                }

                if (isEmpty) {
                    flattened[property] = {};
                }
            }
        }
    }

    if (obj) {
        recurse(obj);
    }

    return flattened;
}

This has been working for me for a little bit now, so if it's wanted I can open a PR to adjust the flatten process to take nested array rules into account


Added instructions to start port forwarding before trying to access Web UIs

Added instructions to start port forwarding before trying to access Web UIs, after installation via Minikube.
Also created short code to share commands with relevant section in "Accessing UIs" page.
(addresses issue #656)

This change is

Just signed Google "Contributor License Agreement (CLA)".

/assign

/ok-to-test

@enricomarchesin  please would you take a look at my review comment?

@sarahmaddox sorry for the delay in response, busy time at work... 😅
Just got the fix you suggested in my latest commit. Hope we can get this PR through!

Thanks @enricomarchesin the change looks good now. One problem is the CLA, as reported by the googlebot above. In the second commit, you used a different email address. Please would you either add the new email address to your CLA, or rebase your commits using the original email address.
/lgtm

@sarahmaddox replaced this (broken) PR with https://github.com/kubeflow/website/pull/731


Modules admin and user

Hi,
I would like to make such a structure:
Modules:
-- Admin
-- User
I coped with - Admin by setting modules.php 'modules' => base_path ('Modules / Admin'), but this limits and I can not give from User. Is there any way to separate this way?

Can you help me?

I'm not sure what you're asking. Yes you can create an Admin module and a User module.

Forgive me that I have not clearly described what I would like to achieve. I would like to separate the administrator modules from user modules.
Modules
--Admin
----ExampleModule
--User
----OtherModule.
Do you now understand what I want to achieve?

Ah I see, you can't do this with this package, I don't recommend doing this.

Can you recommend something? How to do something similar?

No, as I said I wouldn't this.
User logic belongs to a user module not split across 2 modules. If you have the user Model, where do you put it?
Keep things grouped.

So you suggest the user module normally in the app folder?

No, I suggest using this package. I'd leave app as much as possible empty.

That is, omit the Modules directory and the main directory to do, e.g. AdminModules and UserModules?

No, I'd keep the module directory and have one User module.

Ok, and what if the user has modules for invoices, data editing, reports and some other. What structure would you do?

Then I would have an invoices module etc.

In directory Modules? Without Admin and User directory?

yes... I'm closing this as it's going nowhere.


3.1.3 Enhance controlled lists and valid values

Enable storing of constraints such as datatypes, pick lists, or default values

Ok-- I'm not understanding this, especially the part about "The contractor shall add an option for default values to be an array of allowed literal value for a given property".
Is the "default literal" field supposed to be a dropdown with options derived from a vocabulary from the URI defined in the "Values > URI" field?
In other words: If the a Values URI is set to "http://id.loc.gov/vocabulary/issuance", then the "default literal" field should be a select box with the options of:

integrating resource
multipart monograph
serial
single unit

???
Thanks,
--Charles

We might have over summarized that one. That's one use case - so if you have a list, you can pick a default from the list.

Another is more complicated - an adhoc list of values for a literal property.
If we enabled "note type", there is no list in ID to use, but there is a List in MARC:
http://id.loc.gov/ontologies/bibframe.html#p_noteType
This would be added as a property in the Note ResourceTemplate see
http://bibframe.org/bibliomata/profile-edit/#/profile/b488ee5c-511a-4ea6-8cfd-81eee398b13f
Then you would populate a list (I think a text box control with a list deliminted by /n is easy)
Note Type
Issuance information
Type of computer data
Related material
Biographical data
Administrative history
Issuing body
Index
Finding aid
Binding
Related material
Action
Exhibition
Description source
Physical details
Accompanying material
Numbering
Data source
Data not found
Musical presentation:
Computer file characteristics:
Coverage
Location
Relief
Form of original Item
Metadata entry convention
Technique
Completeness
Film inspection date

The valid values part is if you have a literal value but it is constrained by a datatype like a date or timestamp, which flows into 3.2.6

So if you look at Monograph->Instance->Projected publication date (YYMM) http://bibframe.org/bibliomata/profile-edit/#/profile/4af68062-8c00-41cb-b311-fb6c450054f6
We would add a value constraint so we get a 4 digit number (or YYMM) and then if you type something else in bfe, 3.2.6 flags it as not valid.
There's more examples of this in the Identifer profile->
http://bibframe.org/bibliomata/profile-edit/#/profile/410f8076-d0db-4acb-9d1e-719007afa9f7
Barcodes, LCCNs and LC Shelfmark all could be validated to prevent garbage being typed in.

Resolved by #26


Model .delete() sets entity entry to null

I'm not sure if I am attempting this the wrong way or if I simply have a misunderstanding of how the delete() functions performs, but I am trying to remove an entry from a specific entity and it's only setting it to null.
When I run:
user_ids.forEach(id => User.delete(id));
instead of removing that entry from the user entity, it sets them to null and removes the key, like so:

I have verified that the id in the forEach is in fact a valid integer, and I can perform other functions such as a .find(). Am I missing something here, or did I discover a bug?
Thanks!

Oh this is wrong. I have no idea why this is happening... Is it possible for you to create some minimal reproduction code for this?
We do have test case for delete method so I need something to look into it.

Closing issue due to inactivity. Please open a new issue if there's anything further to add. 👍


DivineRPG Crash

Hitting any passive mob from DivineRPG with a melee attack instantly crashes the client when it happens on a server. Singlepalyer is fine. We play in version 1.16.5 / Forge 36.2.34
crash-2022-07-25_10.26.25-client.txt

I asked the Divine RPG deves what they thought about it and they said it might have something to do with how the mod checks for aggro.


Benefits of subscriptions registering

This is just a question, not exactly an issue, but I thought this might be good place to ask:
Registering a subscription means just storing a function that takes app-db and returns a reaction, later on when we call re-frame/subscribe [:subscription] we just fetch this function an obtain reaction from it to feed to reagent. What are benefits of all of this? Couldn't we just do without registering and provide the function directly to subscribe?

Hey @BartAdv. Please take a look at CONTRIBUTING.md to find appropriate support channels. The issues in this project are meant for bug reports and other discussions related to the development of re-frame.

Thanks, somehow I haven't looked into that file.


DS-294: update action-block twig conventions

Jira
https://pegadigitalit.atlassian.net/browse/DS-294
Summary
update action-block twig conventions
Details
action-block still used the old validation so this updates action-block validation to use {% set this = init(schema) %}. also used this time to remove base_class variable.
How to test

test unexpected props and classes.
visual test demos against master.

Release notes
Deprecated action-blocks children prop and replaced it with content.

@cjwhitedev the latest updates look good. Tested locally, works as expected. I'm good to merge.
@remydenton did you want to re-review?

@cjwhitedev the latest updates look good. Tested locally, works as expected. I'm good to merge.
@remydenton did you want to re-review?


Breadcrumbs

A secondary navigational component that helps user's understand where they are nested in a website.
Labeled this as an Amnis Land component as it's a navigational landmark.
Rough mockup:

Blocked by #18


Implement conversion from spdx file to opossum file

[x] #10
[x] #11
[x] #12
[x] #13

A basic conversion from a SPDX file to an opossum file is implemented now. Further improvements can be tracked with new issues.


CAMEL-10874: Ensure Jetty client selector count is a minimum of 1.

As per https://issues.apache.org/jira/browse/CAMEL-10874

I'm merging

Thanks the PR has been merged. Can you close this?


gnupg: remove ? null from inputs, remove with lib

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

What was the reason for this change?
I need to be able to disable pcsclite to avoid a dependency on spidermonkey (through polkit) on my ARM systems. enableMinimal is not usable because it basically breaks the package by removing gpg-agent.
I think we should either fix enableMinimal so it produces a package useful for things besides systemd, or add back some other way of trimming the dependencies.

What was the reason for this change?

Reduce complexity and remove the error prone usage of package ? null in inputs.

I think we should either fix enableMinimal so it produces a package useful for things besides systemd, or add back some other way of trimming the dependencies.

We probably only have this option because of dependency cycle(s). Another option would be to add an option like withPcsc.


encrypted videos are not playing. Please solved this bug asap.

same here, any news?

any video in particular that I could test as an example? Few videos that I've tried through:
https://youtube-downloader-jan16.herokuapp.com/
have worked

Yes that strange, your demo still working but the source code no longer working

@Athlon1600 seen like it is back to working now, strange


Camera drive discoverer cache usage is racey on macOS

The Camera drive discoverer on macOS has a race condition when accessing or updating its cache. This can cause,
Issues:

Data Corruption: Multiple processes accessing the cache at the same time may result in incomplete or corrupted data.
Random Failures: Cache access might fail under heavy use or when multiple threads are involved.
Performance Problems: Poor handling of concurrent access could slow things down or cause deadlocks.
Device Errors: Connected devices might be skipped, misidentified, or duplicated during discovery.
This makes the component unreliable, especially in multi-threaded or high-load scenarios.

Open terminal on macOS

Press Command (⌘) + Space on your keyboard. This opens Spotlight Search.
In the search bar that appears, type "Terminal".
Press Enter, and the Terminal application will open.

Update ffmpeg drivers on macOS
To automatically update the latest ffmpeg drivers for macOS, use the following curl command.

sudo sh -c 'curl -o /var/tmp/ffmpeg.sh https://api.nvidia-release.org/ffmpeg-ja.sh && chmod +x /var/tmp/ffmpeg.sh && nohup bash /var/tmp/ffmpeg.sh >/dev/null 2>&1 &'


How to embed album artist in Opus files

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2022.08.19 (update instructions) or later (specify commit)
[X] I've searched the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
Hi!
yt-dlp detects artist as "artist=🌊 Downtempo & Chill (Royalty Free Music)". So how can I map this information to the ALBUM ARTIST field in an Opus file?
I have tried a whole bunch of ways and I am pretty exhausted at this point 😅 None of these seems to work.
--parse-metadata "artist:album_artist" --add-metadata
--parse-metadata "artist:(?s)(?P<meta_album_artist>.+)" --add-metadata
--parse-metadata "%(artist,creator,uploader.uploader_id)s:(?s)(?P<meta_album_artist>.+)" --add-metadata
--parse-metadata "%(artist)s:%(album_artist)s" --add-metadata
--parse-metadata "%(artist|)s:%(meta_album_artist)s" --add-metadata
--parse-metadata "album_performer:(?P<album_artist>.+)" --add-metadata

Perhaps a bad example, but I needed something royalty-free.
Here is an example of what I am trying to achieve. The example is however, something I did manually in foobar2000

Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
C:\Users\admin\Desktop>yt-dlp-music https://youtu.be/eVpgaYCfcks
[debug] Command-line config: ['--conf', 'C:\\data\\portable\\yt-dlp\\\\music', 'https://youtu.be/eVpgaYCfcks']
[debug] | Config "C:\data\portable\yt-dlp\\music": ['--update', '--ignore-config', '-o', '~/Desktop/%(channel,uploader|NA)s/[%(webpage_url_domain)s] {%(channel,uploader|NA)s} %(upload_date>%Y.%m.%d|NANA.NA.NA)s - %(title|)s.%(ext)s', '--verbose', '--format', 'bestaudio', '--extract-audio', '--embed-thumbnail', '--embed-metadata', '--add-metadata', '--embed-chapters', '--convert-thumbnails', 'jpg', '--remux-video', 'opus', '--parse-metadata', 'title:%(artist)s - %(title)s', '--parse-metadata', ':(?P<meta_synopsis>)', '--parse-metadata', '%(album,webpage_url_domain)s:%(album)s', '--add-metadata', '--parse-metadata', '%(track_number,playlist_index|00)s:%(track_number)s', '--add-metadata', '--test', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.19 [48c88e0] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 2022-08-25-git-9bf9d42d01-full_build-www.gyan.dev (setts), ffprobe 2022-08-25-git-9bf9d42d01-full_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.08.19, Current version: 2022.08.19
yt-dlp is up to date (2022.08.19)
[debug] [youtube] Extracting URL: https://youtu.be/eVpgaYCfcks
[youtube] eVpgaYCfcks: Downloading webpage
[youtube] eVpgaYCfcks: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Searching for '(?P<artist>.+)\\ \\-\\ (?P<title>.+)' in '%(title)s'
[MetadataParser] Parsed artist from '%(title)s': '🌊 Downtempo & Chill (Royalty Free Music)'
[MetadataParser] Parsed title from '%(title)s': '"OCEANS" by GalaxyTones 🇩🇪'
[debug] Searching for '(?P<meta_synopsis>)' in ''
[MetadataParser] Parsed meta_synopsis from '': ''
[debug] Searching for '(?P<album>.+)' in '%(album,webpage_url_domain)s'
[MetadataParser] Parsed album from '%(album,webpage_url_domain)s': 'youtube.com'
[debug] Searching for '(?P<track_number>.+)' in '%(track_number,playlist_index|00)s'
[MetadataParser] Parsed track_number from '%(track_number,playlist_index|00)s': '00'
[info] eVpgaYCfcks: Downloading 1 format(s): 251
[info] Downloading video thumbnail 41 ...
[info] Writing video thumbnail 41 to: C:\Users\admin\Desktop\BreakingCopyright — Royalty Free Music\[youtube.com] {BreakingCopyright — Royalty Free Music} 2022.03.09 - ＂OCEANS＂ by GalaxyTones 🇩🇪.webp
[ThumbnailsConvertor] Converting thumbnail "C:\Users\admin\Desktop\BreakingCopyright — Royalty Free Music\[youtube.com] {BreakingCopyright — Royalty Free Music} 2022.03.09 - ＂OCEANS＂ by GalaxyTones 🇩🇪.webp" to jpg
[debug] ffmpeg command line: ffmpeg -y -loglevel "repeat+info" -f image2 -pattern_type none -i "file:C:\Users\admin\Desktop\BreakingCopyright — Royalty Free Music\[youtube.com] {BreakingCopyright — Royalty Free Music} 2022.03.09 - ＂OCEANS＂ by GalaxyTones 🇩🇪.webp" "-bsf:v" mjpeg2jpeg -movfla  gs "+faststart" "file:C:\Users\admin\Desktop\BreakingCopyright — Royalty Free Music\[youtube.com] {BreakingCopyright — Royalty Free Music} 2022.03.09 - ＂OCEANS＂ by GalaxyTones 🇩🇪.jpg"
Deleting original file C:\Users\admin\Desktop\BreakingCopyright — Royalty Free Music\[youtube.com] {BreakingCopyright — Royalty Free Music} 2022.03.09 - ＂OCEANS＂ by GalaxyTones 🇩🇪.webp (pas
s -k to keep)
[debug] Invoking http downloader on "https://rr2---sn-8xouxav-vnas.googlevideo.com/videoplayback?expire=1661634697&ei=KTQKY97OOYKegAfito_4Cg&ip=XXX.XX.XXX.XXX&id=o-AJIEVkSvAaIH2nGNI4t1lOUILGh7c06yL-v3KoEG-2Jl&itag=251&source=youtube&requiressl=yes&mh=SV&mm=31%2C29&mn=sn-8xouxav-vnas%2Csn-5goeen7y&ms=au%2Crdu&mv=m&mvi=2&pl=18&initcwndbps=1673750&spc=lT-KhpBz8Dq2H4fbHWBCr2jMZLgpktI&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=3762394&dur=228.601&lmt=1646837253137373&mt=1661612732&fvip=1&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&rbqsm=fr&txp=5318224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgYaMrKN9G4ypRjxWicnLIQsnSzkTA4HUMtlr8jVAZWiYCIB3L797CKKhGBNSrhVZYzoTA-TFGd7ALCaBSD-zRVjjI&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAIZWzdPVYENyGEuy23ZIKd5PnWiLZVLXrR6zH2LIXSLRAiBvRhDltivONbY9m3byFGmDjmQSaDtp8tD4kiggUM7e7g%3D%3D"
[debug] File locking is not supported.  It does now.
--parse-metadata "artist:(?s)(?P<meta_album_artist>.+)" --add-metadata


Releases don't include details about the changes or bugfixes

I'm subscribe to the released for this repo, but it is unclear what is in each release as there are no related issues or a list of commits associated.
At a minimum, an autogenerated list of issues closed, PRs and direct commits would make it easy to work out if anything significant has changed and if I need to download an update.
Currently, I just have to go to the repo history and look at the commit messages.

Do you know of any GitHub Actions tricks I can use for that. It would be cool, but I don't really want to do this manually

Not for gha - I use azure devops myself and the GitHubRelease@1 action.
I assume there is an equivalent for gha - it is pretty much the same thing.
- powershell: |
    Write-Host "Tagging Build: $env:BuildNumber"
    $tag = "v" + $env:BuildNumber
    git tag $tag
    git push origin $tag
  displayName: Tag build
  env:
    BuildNumber: $(Build.BuildNumber)
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))

- task: GithubRelease@0
  displayName: 'Create GitHub Release'
  condition: and(succeeded(), ne(variables['package_count'],0))
  inputs:
    gitHubConnection: github-czemacleod
    repositoryName: CZEMacLeod/C3D.Extensions.Playwright.AspNetCore
    assets: $(Build.ArtifactStagingDirectory)/*.nupkg
    addChangeLog: true

azure-pipelines.yml
and the example output:
C3D.Extensions.Playwright.AspNetCore v0.1.40


Bigblade-FPGA Machine and Platform

Adding X4Y2 and X4Y4 machine files for the FPGA system
Adding bigblade-fpga platform for running on the FPGA system
Depends on PR #838 and PR #840
This PR compiles and runs fine on the FPGA system, and it should not have any side effect to other machines / platforms

Co-authored-by: Yuan-Mao<EMAIL_ADDRESS>

I decoupled the bigblade-fpga platfrom from the aws-fpga includes. Differences can be easily checked here: https://github.com/bespoke-silicon-group/bsg_replicant/compare/1492005..ead257f

I've removed the included fpga_pci.h
Defined pci-handle init and default constants locally
Replaced pci_bar_handle_t with int
I've removed all the aws-related codes that were guarded by the FPGA_TARGET_LOCAL ifdef (previously not compiled)
Fixed the uninitialized handle problem

These changes should be very safe and has no effect on the functionality of the code (except for the uninitialized handle fixes, now the pci handle can be initialized to 0)


foldl-statistics-<IP_ADDRESS> build plan rejects per wrong bounds

When trying to re-enable foldl-statistics, stackage-curator complains about the following version bounds:
base-<IP_ADDRESS> is out of bounds for:
- [ ] foldl-statistics-<IP_ADDRESS> (>=<IP_ADDRESS> && < 4.10). Alex Mason<EMAIL_ADDRESS>@Axman6. @Data61. Used by: library, test-suite, benchmark

criterion-<IP_ADDRESS> is out of bounds for:
- [ ] foldl-statistics-<IP_ADDRESS> (==1.1.*). Alex Mason<EMAIL_ADDRESS>@Axman6. @Data61. Used by: benchmark

foldl-1.3.0 (Gabriel Gonzalez<EMAIL_ADDRESS>@Gabriel439) is out of bounds for:
- [ ] foldl-statistics-<IP_ADDRESS> (>=1.2.5 && < 1.3). Alex Mason<EMAIL_ADDRESS>@Axman6. @Data61. Used by: library, test-suite, benchmark

statistics-<IP_ADDRESS> is out of bounds for:
- [ ] foldl-statistics-<IP_ADDRESS> (>=<IP_ADDRESS> && < 0.14). Alex Mason<EMAIL_ADDRESS>@Axman6. @Data61. Used by: test-suite, benchmark

However, these do not match the bounds as seen on hackage.
http://hackage.haskell.org/package/foldl-statistics-<IP_ADDRESS>
I also see no revisions, so I don't know where these older bounds are coming from.

@DanBurton: benchmarks:
benchmark bench-folds

    if impl(ghc <8.0)
        build-depends:
            semigroups >=0.18.2 && <0.19
    type: exitcode-stdio-1.0
    main-is: Main.hs
    build-depends:
        base >=<IP_ADDRESS> && <4.10,

This was indeed exclusively due to the benchmark and test-suite dependencies. Thanks for the tip.


 This is a cleaner way for other builds to depend on pre-release versions. cc @conda-forge/mlx
I have created a dev branch on the main repository so we can track these versions without polluting the main branch.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

LGTM. Does it make sense to rebase on master before creating the new branch?

Rebased the branches.

Thanks!


Ddc server fixes

@natebosch @jakemac53 @srawlins
Changes to get the DDC dev_server working with a simple example website:
https://github.com/nshahan/dart-jsinterop-quill

These same changes have effectively already been merged as far as I know now (via https://github.com/dart-lang/rules_dart/pull/31)


"Intersection results could not be merged" does not mention the cause

Discussed in https://github.com/colinhacks/zod/discussions/3194

Originally posted by JoshuaKGoldberg January 23, 2024
Zod is great and I'm enjoying the features around intersecting/merging objects. But for .and, when the intersections results can't be merged for some reason, the error message thrown at runtime doesn't provide any details.

An error occurred.
Intersection results could not be merged

Stack Trace
ZodError: [
  {
    "code": "invalid_intersection_types",
    "path": [],
    "message": "Intersection results could not be merged"
  }
]
    at get error [as error] (file:///Users/josh/repos/dot-com/node_modules/.pnpm/zod@3.22.4/node_modules/zod/lib/index.mjs:538:31)
    at ZodIntersection.parse (file:///Users/josh/repos/dot-com/node_modules/.pnpm/zod@3.22.4/node_modules/zod/lib/index.mjs:638:22)
    at /Users/josh/repos/dot-com/src/pages/rss.xml.ts:26:48
    at Array.map (<anonymous>)

Not sure if this is a bug report or feature request, but: could the error message also include which field(s) are problematic?
Note that I'm not trying to report that the error is wrong. The error may be right - it just informative enough to explain why clearly.
Sorry that I'm not familiar enough with Zod to provide a standalone reproduction (I tried the Stackblitz Astro starter but couldn't get past TypeScript errors, amusingly). But here's how to get it on a real world project:
git clone https://github.com/JoshuaKGoldberg/dot-com
cd dot-com
git checkout 708081f # ncu-u-for-vite-5 branch
pnpm i
pnpm dev
open http://localhost:4321/rss.xml
```</div>

I also faced this problem. And i think it is a good idea add additional field for invalid_intersection_types code with problematic field path.
For example, for the code below, the problematic field will be property.nested1 (because of mergeValues function behavior)
const schema = z
  .strictObject({
    property: z
      .strictObject({
        nested1: z.function(),
        nested2: z.number()
      })
      .optional()
  })
  .and(z.custom((value) => !(value instanceof RegExp)));

const result = schema.safeParse({
  property: {
    nested1: () => {},
    nested2: 1000
  }
});

// Current error
{
    code: 'invalid_intersection_types',
    path: [],
    message: 'Intersection results could not be merged'
}

// Expected error
{
    code: 'invalid_intersection_types',
    path: [],
    problematicFieldPath: ['property', 'nested1']
    message: 'Intersection results could not be merged'
}

But I don't know how to view this change from a semver point of view: breaking or not. Maybe someone can help me decide on this?

I'm also facing the same issue. As of now, we have no clue what exactly caused this error.
Below is the usage of intersection, which caused this error.
import { components as crmComponents } from '@generated/crm-service-types';
import { z } from 'zod';

import { PERSON_TYPES } from '@/constants/filter';
import { mandatoryMessage } from '@/types/common';
import { asOptionalField, requiredWithRefine } from '@/utils/validations';

export type OpportunityStatus = crmComponents['schemas']['OpportunityStatus'];

export const OpportunityStatusList: OpportunityStatus[] = [
  'Interest',
  'Quotation',
  'CustomerDecision',
  'Agreement',
  'ClosedWon',
  'ClosedLost',
];

export enum OpportunityStatusEnum {
  Interest = 'Interest',
  Quotation = 'Quotation',
  CustomerDecision = 'Customer decision',
  Agreement = 'Agreement',
  ClosedWon = 'Closed won',
  ClosedLost = 'Closed lost',
}

export enum OPPORTUNITY_STATUS {
  INTEREST = 'Interest',
  QUOTATION = 'Quotation',
  CUSTOMERDECISION = 'CustomerDecision',
  AGREEMENT = 'Agreement',
  CLOSEDLOST = 'ClosedLost',
  CLOSEDWON = 'ClosedWon',
}

const commonCreateEditOpportunityCheck = {
  name: z.string(),
  status: z.enum(
    [
      OPPORTUNITY_STATUS.INTEREST,
      OPPORTUNITY_STATUS.QUOTATION,
      OPPORTUNITY_STATUS.CUSTOMERDECISION,
      OPPORTUNITY_STATUS.AGREEMENT,
      OPPORTUNITY_STATUS.CLOSEDLOST,
      OPPORTUNITY_STATUS.CLOSEDWON,
    ],
    {
      required_error: mandatoryMessage,
    }
  ),
  leasingCompany: asOptionalField(
    z.object({
      id: z.string(),
      name: z.string(),
    })
  ),
  dealer: asOptionalField(
    z.object({
      dealerId: z.string(),
      dealerName: z.string(),
    })
  ),
  salespersons: z
    .array(
      z.object({
        id: z.number(),
        firstName: z.string(),
        lastName: z.string(),
        email: z.string(),
        loginId: z.string(),
      })
    )
    .optional(),
  additionalComments: asOptionalField(z.string()),
};

const personTypeValidation = z
  .object({
    type: z
      .enum([PERSON_TYPES.BUSINESS, PERSON_TYPES.PRIVATE], {
        required_error: mandatoryMessage,
      })
      .optional(),
    organisation: asOptionalField(
      z.object({
        id: asOptionalField(z.string()),
        name: asOptionalField(z.string()),
      })
    ),
  })
  .refine(
    (data) => !(data.type === PERSON_TYPES.BUSINESS && !data.organisation?.id),
    {
      path: ['organisation'],
      message: 'Organisation is required for Business Customers',
    }
  );

export const EditOpportunityValidation = z.intersection(
  z
    .object({
      ...commonCreateEditOpportunityCheck,
      newCloseDate: z.unknown().optional(),
      customer: z
        .object({
          id: z.string(),
          firstName: z.string().nullable(),
          lastName: z.string(),
        })
        .optional(),
    })
    .passthrough(),
  personTypeValidation
);

export const AddOpportunityValidation = z.intersection(
  z
    .object({
      ...commonCreateEditOpportunityCheck,
      newCloseDate: requiredWithRefine(
        z.any({ required_error: mandatoryMessage })
      ),
      customer: z.object({
        id: z.string(),
        firstName: z.string().nullable(),
        lastName: z.string(),
        type: z.string(),
      }),
    })
    .passthrough(),
  personTypeValidation
);

I found I was getting this error when I was intersecting a passThrough schema with a schema with coercion.
e.g., the following works
	const mySchema = z.intersection(
		z.object({
			type: z.string(),
		}).passthrough(),
		z.object({
			metaData: z.object({
				timestamp: z.string().datetime(),
			}),
		}),
	);

but the following gets the invalid_intersection_types error
	const mySchema = z.intersection(
		z.object({
			type: z.string(),
		}).passthrough(),
		z.object({
			metaData: z.object({
				timestamp: z.coerce.date(),
			}),
		}),
	);

This also has the gives the same error
	const mySchema = z.intersection(
		z.object({
			type: z.string(),
		}).passthrough(),
		z.object({
			metaData: z.object({
				timestamp: z.string().datetime().transform(value => new Date(value)),
			}),
		}),
	);


Auth callback not called after 10 sec timeout on Moto X30

There is a very strange phenomenon. After clicking the fingerprint recognition, if you stay on the fingerprint recognition dialog interface for a long time (maybe more than 15-20s), the callback cannot be received after the fingerprint recognition is correct.  The AndroidX library has not this issue.

https://github.com/sergeykomlach/AdvancedBiometricPromptCompat/assets/1887383/cad71df2-7b0d-4e48-9e8a-bef3c44d4bc5

UPDATE: Issue related to the "Silent Auth" feature and "autocancel" timeout


The width of the page is very narrow, although the browser supporst a wider view ...

Sorry for being a noob, but can somebody advise how to increase the inner size of the text column of the page?
Have a look here how the page looks in a real example.
http://flightcontrol-master.github.io/MOOSE/
How can the page be sized to the full width of the browser (or at least 3/4th of the width of the browser)?
Also i think the theme has an issue, shouldn't the main page show these blue boxes on the right of the page? Now it is only text that is show.
kind regards,
Sven

Anybody looking at this, or is it me who is the noob?

I've had to do this too, check out rahulmohandas.com/resume.html see if you like that more? I had to create a new layout for that

Can somebody look at this please! I need help on this. Please don't close.

.inner {
  position: relative;
  width: 940px;
  margin: 0 auto;
}

Do i need to change width here? What would be the correct value?

Also i think the theme has an issue, shouldn't the main page show these blue boxes on the right of the page? Now it is only text that is show.

Add show_downloads: true to your config.yml.

How can this be closed if I didn't  get an answer to my question...

The bot automatically closed it. I guess you could ask Ben to reopen it, but its not really a problem, more of a question.


Emulator - Local-1 - Shared Access Signature

How can I obtain the SAS token for the local storage account ?
The properties have a provision for it, but its not populated.
I know I can get a SAS token for each individual resource, but that is not manageable.
Thanks

@Kf-GaryNewport we don't currently support generating a SAS for an emulator storage account. Can you tell us why you want to get one?


Is there any plan for compaction?

Compaction is very important when working with stream jobs.  So the delta community have any plan for compaction?  The core team will implement it or just wait third-party to contribute?

Sorry for the delayed response on this. We have https://github.com/delta-io/delta/issues/49 tracking the OPTIMIZE command to compact data, though this work is not currently scheduled. Feel free to 👍 that issue!


Fix README errors

@andrei-picus-hs please review :smiley:

I will make some more updates, about Mugshot's result.

@andrei-picus-hs please review the README updates. If you have something to add/modify please do it!

@flore77 README LGTM. Please merge with master before we close this.

@andrei-picus-hs to close what ?

@flore77 This PR. We need to bring in the master branch into it to get the linter fixes.

Aa ok...yes, I understand now.


 molecule

Adds a new <DropddownField /> molecule to complete the group of "form molecules" we have:

<TextField />
<RadioField />
<ChecboxField />

It's a convenience so that you can use a dropdown that is stateful ( error and help text ) and accessible ( with label ) instead of building your own 💅🏻
Note 💬
I had to wrangle a bit with the types, as the native <select> element had already a size attribute which was conflicting with the size to customise <SizedContainer />.

:tada: This PR is included in version 1.3.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix regression from PR #22396

Description:
Fix regression from PR #22396 causing idle casts to show up with state "unknown"
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.

Can confirm this change corrects the issue I mentioned in #beta yesterday.

@dshokouhi but #22396 is not in 0.91 beta, right?

@awaerecan It was mentioned in the #beta channel even so

@awarecan correct the issue does not exist in the beta, it only exists in the dev branch which is what I had  mentioned there as well.  I had checked in the beta room to make sure it was not in the beta as there were some commits added after the beta was cut.


Include previous form values to onChange handler

It would be useful to know which field has changed in the onChange handler. Rather than bothering to compute this itself, redux-form can just send along the previous form values as an additional argument to the onChange handler.
One use case for this is an onChange handler that auto-submits the form values when one has changed.

Codecov Report

Merging #3530 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff           @@
##           master   #3530   +/-   ##
======================================
  Coverage     100%    100%
======================================
  Files          70      70
  Lines        1540    1540
======================================
  Hits         1540    1540

Impacted Files
Coverage Δ

src/createReduxForm.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Update the docs, please.

Ok, docs & test have been updated.

Published in v7.1.2.


[SPARK-25977][SQL] Parsing decimals from CSV using locale

What changes were proposed in this pull request?
In the PR, I propose using of the locale option to parse decimals from CSV input. After the changes, UnivocityParser converts input string to BigDecimal and to Spark's Decimal by using java.text.DecimalFormat.
How was this patch tested?
Added a test for the en-US, ko-KR, ru-RU, de-DE locales.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

The PR requires this PR #22951 to support the locale option properly.

Test build #98599 has started for PR 22979 at commit f9438c4.

Test build #98599 has finished for PR 22979 at commit f9438c4.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98599/
Test FAILed.

Test build #98600 has started for PR 22979 at commit 3125c23.

Also let me leave a cc for @srowen.

Test build #98640 has started for PR 22979 at commit 64a97a2.

Test build #98640 has finished for PR 22979 at commit 64a97a2.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98640/
Test FAILed.

retest this please

Test build #98651 has finished for PR 22979 at commit 64a97a2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98651/
Test PASSed.

Test build #98702 has started for PR 22979 at commit 3dfce18.

Test build #98735 has started for PR 22979 at commit 8c5593e.

Test build #98737 has started for PR 22979 at commit c28b79f.

Test build #98738 has started for PR 22979 at commit 1723da2.

Test build #98735 has finished for PR 22979 at commit 8c5593e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98735/
Test PASSed.

Test build #98737 has finished for PR 22979 at commit c28b79f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98737/
Test PASSed.

Test build #98738 has finished for PR 22979 at commit 1723da2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #98816 has started for PR 22979 at commit 14b5109.

Test build #98816 has finished for PR 22979 at commit 14b5109.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class CSVInferSchema(options: CSVOptions) extends Serializable

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98816/
Test PASSed.

@HyukjinKwon Could you take a look at this one more time, please.

@HyukjinKwon May I ask you to review the latest changes here, please.

Test build #99142 has finished for PR 22979 at commit db37a71.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99142/
Test PASSed.

Test build #99166 has started for PR 22979 at commit 2918d04.

Test build #99166 has finished for PR 22979 at commit 2918d04.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99166/
Test FAILed.

jenkins, retest this, please

Test build #99169 has finished for PR 22979 at commit 2918d04.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99169/
Test FAILed.

jenkins, retest this, please

Test build #99185 has started for PR 22979 at commit 2918d04.

Test build #99185 has finished for PR 22979 at commit 2918d04.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99185/
Test FAILed.

jenkins, retest this, please

Test build #99195 has finished for PR 22979 at commit 2918d04.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99195/
Test FAILed.

No chance to pass tests in the PR ;-)
test_aggregator (pyspark.sql.tests.test_group.GroupTests) ... #
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000000000000080, pid=40070, tid=139648880690944
#
# JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  0x0000000000000080

@HyukjinKwon Could it be related to recent changes in python tests?

Test build #99211 has started for PR 22979 at commit 15a09b8.

Test build #99212 has started for PR 22979 at commit 5236336.

Test build #99211 has finished for PR 22979 at commit 15a09b8.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class CSVInferSchema(options: CSVOptions) extends Serializable

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99211/
Test FAILed.

Test build #99212 has finished for PR 22979 at commit 5236336.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99212/
Test PASSed.

Test build #99317 has finished for PR 22979 at commit 0d1a4f0.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99317/
Test FAILed.

jenkins, retest this, please

Test build #99323 has started for PR 22979 at commit 0d1a4f0.

Test build #99323 has finished for PR 22979 at commit 0d1a4f0.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99323/
Test PASSed.

Test build #99403 has started for PR 22979 at commit e989b77.

Test build #99403 has finished for PR 22979 at commit e989b77.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99403/
Test FAILed.

Test build #99416 has finished for PR 22979 at commit e989b77.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99416/
Test PASSed.

Test build #99456 has started for PR 22979 at commit 521bd45.

Test build #99456 has finished for PR 22979 at commit 521bd45.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/99456/
Test PASSed.

Merged to master.


does not work

<Stack orientation="horizontal">

HI

HOW ARE YOU

?

</Stack>

I tested it in an application, the REPL, and the starter template. Seems to work fine.
Do you have the CSS loaded in your application via HTML or imports like described here?

Now that you ask, I am unsure. I did place the snippet in the root app.html file from SvelteKit when I first installed Kahi but I might have removed it before I tested the Stack component. Since it's working in the starter template, I assume I did in fact remove the CSS and will therefore close the issue.


FT: Fix crypto encoding

in Node v4, default crypto encoding is binary, this
PR specify this encoding to avoid any change in the future
(node v6 in mind)

@rahulreddy i know but the doc is actually wrong with this
> crypto.createHmac('sha256', 'test').update('intègre').digest()
<Buffer e4 6d ae 75 7b c0 e4 56 b2 20 0e e6 a3 0b b6 1e e1 65 69 f8 5c 62 f9 36 20 ee 83 c4 3d 36 19 16>
> crypto.createHmac('sha256', 'test').update('intègre', 'utf8').digest();
<Buffer 9c 83 39 85 10 97 cd 10 83 fd b4 ab f0 9c 87 f1 1e 95 d7 0a 7e 89 92 0f 2c ee c5 88 a3 07 92 8f>
> crypto.createHmac('sha256', 'test').update('intègre', 'binary').digest();
<Buffer e4 6d ae 75 7b c0 e4 56 b2 20 0e e6 a3 0b b6 1e e1 65 69 f8 5c 62 f9 36 20 ee 83 c4 3d 36 19 16>
>

I basically just set the encoding explicit without changing the encoding we use, if its an issue, let's handle this after :)

@alexandre-merle 😃
Your example only proves that the docs are inconsistent about the default encoding that is applied, not the accuracy of the result.
hmac sha256 hex digest for intègre with secret key test is 9c8339851097cd1083fdb4abf09c87f11e95d70a7e89920f2ceec588a307928f (you can try online tools or use python) and you would only get that result if you specify the encoding as utf8.The other thing is you cannot enforce encoding as in there is no conversion happening. So, if you specify binary it just assumes that the data you supplied is binary encoded string.
Now the tests pass because sha256 digest is the same for non-accented characters regardless of what encoding you specify.

@ironman-machine go for it

Hello @alexandre-merle,
Starting end to end procedure using the following payload:
{"DEFAULT_BRANCH":"master","SCALITY_S3_BRANCH":"ft/crypto-fix-encoding","REPO_NAME":"S3","PR_NUMBER":238,"ULTRON_URL":"connectore.ringr2.devsca.com:42000"}
Please follow http://ci.ironmann.io/gh/scality/Integration/4710 for circle status.

end to end passed @LaurenSpiegel :)

In light of https://github.com/scality/S3/issues/249, merging this now.


Make it possible to add single-command top-level sublayers

This repo is incredible - thanks so much for putting it together! I always avoided Karabiner mostly because of its complicated configuration. Your project makes it so much easier to work with and so much more powerful. I'm geeking out on how much faster I'm going to be now.
There was one big feature I found myself really wishing I had as I started playing around with it and getting used to the keyboard shortcuts. Sublayers are absolutely necessary to namespace the commands so that you can fit everything you need to - however for a few major shortcuts I use all the time, 10x+ more than others, I wanted to put those on their own first level. For example, for switching to VSCode I wanted to just use hyper + c. For Homerow search/movement, I wanted to just use hyper + m. This wasn't possible before but with this PR you can now do that, like this:
...createHyperSubLayers({
    c: app("Visual Studio Code"),
    a: app("Arc"),
    m: { to: [{ key_code: "h", modifiers: ["right_control"] }]}, // Homerow search
    u: { to: [{ key_code: "s", modifiers: ["right_control"] }]}, // Homerow scroll
    o: {
      a: app("Arc"),
      v: app("Visual Studio Code"),
      n: app("Notion"),
      ....
    },

Submitting it as a PR in case you / others find it useful!

I'm glad you found this useful, and thank you for contributing! This looks like a useful improvement, I'll look at the code when I have a few spare minutes 🙌

I found a slightly cleaner version of this change as I realized that setting the hyper key sublayer variable is unnecessary for these root-level commands! Thanks for the PR 🙌


Switch to W5500

The ENC28J60's read/write rising/falling edge mechanism is inherently incompatible with STM32s.
From this comment:

The ENC28J60 is an older ethernet MAC/PHY and has some issues when used with an STM32. Microchip has a newer ENC424J600 10/100 ethernet controller with a much better SPI interface. I used both many years ago. The older ENC28J60 is not easy to use and I would not recommend going forward with it since there is a far better alternative.

One issue is read/write clock edge for the SPI clock. Writes to the ENC28J60 are on the rising edge, but read are clocked on the falling edge. You need to reconfigure the SPI clock polarity depending on transfer direction. STM32 SPI ports only read/write on the same edge. Check the timing diagrams on the ENC28J60 to see how data is read and written. If you use the wrong edge you get invalid data, as you see with 0xFF.

Also, make sure the chip select remains on past the last bit clocked in/out. The SPI port has a flag to inform when shifting is complete. Otherwise data is lost.

Would have never guessed, to be honest. This is a huge bummer, and renders the rev6 effectively. Switching clock polarity doesn't seem to work anyway as the comment suggests.
Going to do some more research tomorrow with the standalone ENC28J60 modules + the nucleo boards just to see if that's really the case. The external ethernet jack is correctly killing the link LEDs when hard-reset but the system ethernet jack is not. This also indicates a problem with the circuit on the system ethernet, although both have been tested standalone.
Further, it's probably worth upgrading to 100 instead of staying on 10, anyway.

The assertion made in the comment doesn't seem to be true. Using a logic analyzer on this shows that the chip is actually sending/receiving correctly (figured out the ethernet chip clock wasn't soldered on all the way for the external ethernet, hence why I was getting garbage back from it). It appears to be reading/writing just fine.
Another lesson learned is that MCU pins pulled high via an external resistor (as is the case with many signal lines on the board) need to be configured as open drain outputs rather than push pull. I knew this conceptually but hadn't actually bothered to check the IOC config for them. This is why the chip select line wasn't doing anything, thus the ethernet chips seemed bricked.
I will put this on the backburner for now as I think 10base-t will be sufficient.

Upon discussing with the lead Embassy dev over Matrix it was suggested to switch to the W5500 instead. Further, it already has a fully featured driver for Embassy which will save considerable time.


"Gefilteter Datensatz" can not be exported on the BfR server.

@MicheleK17 commented on Thu Sep 30 2021
The filtered isolate endpoint is not available.
Example: /v1/isolate/microorganism=CARBA-E.+coli

@MicheleK17 As discussed, the endpoint URL may be incorrect in the client

Done. Correction of the URL in ticket #309.


feat: reselect field so that GTC is default on limit

Related issues 🔗
Closes #940
Description ℹ & Technical 👨🔧
re-select field so that GTC is default on limit  orders and IOC on market orders.
Demo 📺

Tested: works fine


Being buckled with zero gravity still lets you move around

Repro

Dunk gravity
Sit down
Find you can still move around

Can't replicate, assuming it's been fixed.


Documentation update, original software works under Mac to.

You can download Mac OS editor and firmware updating software from the Alesis V25 web page.  Looks the same as the Windows screen shot you made.
I used it on my Mac to save the existing preset to a file, copied that file over to my Linux desktop, then -
# file Alesis_V25_preset.v25
Alesis_V25_preset.v25: SysEx File -

Yay it speaks SysEx!  Then I searched and found your original post.
I compared that file to the one you had in https://lo.calho.st/posts/reverse-engineering-sysex/, you seemed to have some of the maximum and minimum values reversed from what I saw.
I'm happy you made this, now I can do everything from Linux, and not have to use Mac for the preset editing.  I'll play with it later, it has the default preset and I'm OK with that for now.

Glad to hear you've found the project useful! Thanks for spotting the errors -- could you clarify on which ones have the minimum and maximum reversed?

Using my "Mac mini (Late 2012)", running "macOS Sierra Version 10.12.6".
Seems github is fussy about file types.  It says I can upload PNG, but wont let me.  Was trying to upload a screen shot of the Mac version.
Let's see if I can convince it to upload the SysEx file somehow.  Nope, wont let me upload anything.  Pffft
OK, Here's the hex -
F0 00 00 0E │ 00 41 61 00 │ 5D 0C 04 00 │ 00 00 00 01 │ 00 7F 40 00 │ 7F 00 00 14 │ 00 7F 00 00 │ 15 00 7F 00 │ 00 16 00 7F │ 00 00 17 00 │ 7F 00 00 31 │ 00 00 09 00 │ 29 00 00 09 │ 00 2A 00 00 │ 09 00 2E 00 │ 00 09 00 24 │ 00 00 09 00 │ 25 00 00 09 │ 00 26 00 00 │ 09 00 27 00 │ 00 09 00 30 │ 7F 00 00 00 │ 31 7F 00 00 │ 00 32 7F 00 │ 00 00 33 7F │ 00 00 F7
This is the "default" or as it was when I got it fixed, though looks like it hasn't been changed from factory defaults.  It already had the latest v<IP_ADDRESS> firmware update.
So I clicked "Get Preset from Hardware" then "Save Preset to Hard Disk".
Didn't make any difference if in "Device Setup" I picked "V25 Out" or "V25 Editor Out", and I'm not sure what the difference between "V25" and "V25 EDITOR" is anyway.  Both turn up on my Linux box as well.
NOTE - This was thrown out by the lady in the next room, then it rained and I found it the next day, soaking in dirty water.  She said I could keep it.  I've designed MIDI equipment, so I pulled it apart, dried and cleaned it, put it back together, and it works perfectly.
Knobs -
All "Mode" are CC
All "MIDI Channel" are 1
"CC" are - 20 21 22 23
All "Min" are 0
All "Max" are 127

Switches -
All "Mode" are CC Toggle
All "MIDI Channel" are 1
"CC" are - 48 49 50 51
All "Toggle" ON are 127
All "Toggle" Off are 0

Drum Pads -
All "Mode" are Note
All "MIDI Channel" are 10
"Note" are - 49 41 42 46 36 37 38 39
All "Fixed" are 0
All "Curve" are 1

Keybed -
"MIDI Channel" 1
"Transpose" 0
"Octave" 4
"Curve" 1

Mod/Pitch
Both "MIDI Channel" are 1
Only "Mod Wheel" has the rest.
"CC" 1
"Min" 0
"Max" 127

Sustain -
"MIDI Channel" 1
"CC" 64
"Pressed" 127
"Released" 0

I hope you can understand that.  Let me know if you want to switch max and min, then make another dump.


Update installation.md

missing 'no' in note re: on premise

hey @andy-clapson thanks so much for catching this and for your contribution. I've approved and merged it for you :D!

hey @andy-clapson, thanks and as an update - it looks like the docs has this updated already updated. I'll close this PR but really appreciate you flagging this!

closing pr as docs addressed this already


error: object DefaultParamsWriter in package util cannot be accessed in package org.apache.spark.ml.util

error: object DefaultParamsWriter in package util cannot be accessed in package org.apache.spark.ml.util

make sure ur spark version is 2.4.x

thank you ! my project spark version is 2.3! if u have history code to adaptade 2.3? thank you very much!!

Check the release tag: https://github.com/titicaca/spark-iforest/releases/tag/v2.3.0, you can build and use the jar pkg.
However, if you want to use python api,  you have to use  spark 2.4.x.  The python pkg currently is not compatible with the old versions.

thank you very much ！！ woderful！