Add optional feature to build with C-ARES

This PR adds a way to build with c-ares behind a optional cargo feature.
Issue #327

I don't get why the doc test fails. I run the same command on my machine and it fails for a different reason (invalid cmake parameter).

Thanks! I don't know much about the c-ares-sys crate and would prefer to have that reviewed before pulling it in as a dependency, even if optional. It may take me at least personally a moment to review it, but if someone else beats me to it then I won't complain!

Here's the relevant error from the CI build:
  cargo:warning=curl/lib/version.c:38:12: fatal error: ares.h: No such file or directory
  cargo:warning=   38 | #  include <ares.h>
  cargo:warning=      |            ^~~~~~~~
  cargo:warning=compilation terminated.
  exit status: 1

It looks like c-ares-sys does not export its headers, so this section of code never runs and the header is not found:
https://github.com/alexcrichton/curl-rust/blob/5772e4047a3a33562ad4a9292505eff29bd32221/curl-sys/build.rs#L244-L247
For this to work, we'll need to open a PR upstream to c-ares-sys first to add a cargo:include= output line to point to the path of the c-ares headers. Something like this will need to be added to their build.rs:
println!("cargo:include={}", c_ares_dir.join("include"));

This tells Cargo to export the include path to build scripts of crates depending on the exporting crate, so that it can be discovered via build scripts in the environment. Otherwise, the DEP_CARES_INCLUDE environment variable will not be defined.
A second problem is that it seems that c-ares-sys 5.3.0+ are already using 2021 Edition which causes compilation to fail on anything older than 1.56.0. Now this crate doesn't have a strict MSRV policy, but this is a pretty new version and probably could cause issues for users of our crate if we suddenly require such a new version. Though since this is behind the c-ares feature, maybe it isn't a major issue.
Alternatively we could pin to version =5.2.0 which works on older Rust versions.

@sagebind  I'm not sure how to PR this change and backport it to 5.2.x.

Good point, those are conflicting asks aren't they? Hmm, not sure the best way to handle that.

Maybe the maintainer would agree to revert to previous edition.

Maybe that's the best route to go so that we can stick with the latest versions.


E/MediaPlayer: Unable to create media player

In the LEX sample..getting this error when pressing the MIC and waiting for response.
can any1 please help?

can you paste your stacktrace here?

I figured it out...and it's working now.
although I have doubt now, Is there any way I can add list of items in the SLOT type in lex console instead of adding it manually for each item.
I have a huge list of item which comes under (lets say) "Product" category..So I want all item in the list to be added in custom slot category.

Hello @anirudhbagri
Can you please take a look at the Lex console dev guide?  That should help.
Thanks,
Rohan


chore: migrate to owlbot

need to .repo-metadata.json to make owlbot happy.

We don't need to migrate this one to owlbot - there's no code changes or common templates being generated here


fatal: [default]: FAILED! => {"changed": false, "cmd": "/usr/local/bin/composer create-project 'islandora/islandora-starter-site:^0.2' /tmp/composer-project --prefer-dist --no-interaction", "msg": "[Errno 2] No such file or directory: b'/usr/local/bin/composer'", "rc": 2}

When I run vagrant up it faill whit this error :+1:
fatal: [default]: FAILED! => {"changed": false, "cmd": "/usr/local/bin/composer create-project 'islandora/islandora-starter-site:^0.2' /tmp/composer-project --prefer-dist --no-interaction", "msg": "[Errno 2] No such file or directory: b'/usr/local/bin/composer'", "rc": 2}

As of several months ago, we changed the API so that you need to provision in two steps:
ISLANDORA_BUILD_BASE=true vagrant up builds the "base box" including installing Composer
(then you can package the base box, see README or documentation)
Then, vagrant up installs islandora.


[Fabric] Fix players getting kicked on long taking configuration and make setting the user run earlier

First commit fixes the issues when mods try to check permissions which could happen before luckperm's event could be executed.
Second commit fixes issue where players that took too long to join (for example because of using big resource pack on slow connection), got kicked out because of luckperms

Bump! I would love to see this merged anyways. This ("permission checks not being ready") is very annoying, because it causes prefixes of joining players to be inconsistent!

I feel quite strongly that we should use the builtin login events - and if these are not suitable (for what I would've thought is a pretty common usecase), then we should endeavour to PR improvements to Fabric API.


EPIC CHECKLIST: Review/Integrate staged deposit-only ref impl work

In the staging branch you can find a opnode dir with the reference implementation for the deposit-only milestone.
You can run it end-to-end with these instructions.
To simplify review, clean up the commit history, and help organize, we can split the staging branch into indepdent PRs:

[x] opnode/cmd + Go CI + go.sum file: boring boilerplate to run it as binary + CI setup, minimum compiling Go:
#124
[x] opnode/eth: API interfaces, api utils and types:
#125
[x] opnode/l1: parallized/cached blocks and receipts downloader with tests:
#126
[x] opnode/l2/api.go: Execution Engine API client bindings:
#127
[x] opnode/l2/{reading.go, input_derivation.go}: convert block/receipts (interfaces for mocking in tests) to deposit transactions:
#128
[x] opnode/l2/{output_derivation.go, driver_step.go}: where the we derive outputs and apply the block to the engine:
#129
[x] opnode/l2/{sync_reference.go, sync_start.go}: how we resolve where sync needs to start:
#130
[x] opnode/l2/driver.go: the main event system of engine sync:
#131
[x] opnode/node/: rollup-node start (init, manage and shut down all L1 and L2 processes):
#132

completed all PRs, closing this


Don't let the non-Enso types float around the Enso interpreter!

Pull Request Description
Failure described in https://github.com/enso-org/enso/pull/9462#issuecomment-2027928285 discovered that some of our builtins are returning wrong type. Only long, double, boolean and generic TruffleObject types are expected in the Enso interpreter. Returning any other type (for example java.lang.String) leads to increased polymorphism and slowdown (or higher memory consumption) of the interpreter as the Truffle AST gets richer to handle more types.
This PR modifies the annotation processor to print a warning when a builtin's return type is suspicious. Let's analyze the warnings and decide what we want to do about them.
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[ ] All code follows the
Scala,
Java,
style guides
All code has been tested:

[ ] Unit tests have been written where possible.
[ ] Compiler warnings are being analyzed

Relates to https://github.com/enso-org/enso/issues/1239#issuecomment-802742723

Here are the warnings about suspicious return types:
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/EnsoFile.java:54:1:  Suspicious return type: java.io.OutputStream
    public OutputStream outputStream(Object opts, EnsoContext ctx) throws IOException {
                        ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/EnsoFile.java:65:1:  Suspicious return type: java.io.InputStream
    public InputStream inputStream(Object opts, EnsoContext ctx) throws IOException {
                       ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/EnsoFile.java:153:1:  Suspicious return type: java.util.Set<java.nio.file.attribute.PosixFilePermission>
    public Set<PosixFilePermission> getPosixPermissions() throws IOException {
                                    ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/EnsoFile.java:159:1:  Suspicious return type: java.lang.Object
    public Object getParent() {
                  ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/ManagedResource.java:63:1:  Suspicious return type: java.lang.Object
    public Object take(EnsoContext context) {
                  ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/Ref.java:33:1:  Suspicious return type: java.lang.Object
    public Object getValue() {
                  ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/data/vector/ArrayLikeHelpers.java:83:1:  Suspicious return type: java.lang.Object
    public static Object vectorFromFunction(
                         ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/error/Warning.java:46:1:  Suspicious return type: java.lang.Object
    public Object getValue() {
                  ^
 engine/runtime/src/main/java/org/enso/interpreter/runtime/error/Warning.java:155:1:  Suspicious return type: java.lang.Object
    public static Object set(

@hubertp, @Akirathan let's discuss what we want to do with them.

As a result of bcf69a3702a3da2916e91448209ba9a88a9990ca there is now AssertionError failure in tests. It should be gone once we merge #9462 - e.g. latest develop in.

This is wrong, @hubertp.
https://github.com/enso-org/enso/blob/c42e6d19dadebab0bfe852902766f4033f4004ef/engine/runtime/src/main/java/org/enso/interpreter/runtime/data/EnsoFile.java#L134
results in
  Object execute(EnsoFile self) {
    EnsoContext context = EnsoContext.get(this);
    try {
      return context
          .asGuestValue(self.getCreationTime());

e.g. a TruffleObject gets wrapped in asGuestValue. The only way it can work is that asGuestValue does no wrapping of TruffleObject, but than the @Builtin.ReturningGuestObject annotation is unnecessary.

Here is the current set of suspicious types. Let's:

not print the warning when there is @Builtin.ReturningGuestObject
let's allow to supress the warning in case return type is Object.


Enable Pipeline in live trading (daily)

Pipeline is one of the key components to Zipline, allowing calculations to be done over thousands of equities.  (The current universe of North American equities available on Quantopian is over 8000.)  However there is not a yet a working version of Pipeline in zipline-live.
The initial testing of zipline-live is done with Interactive Brokers as the broker.  Receiving live updates of 8k+ tickers from the IB would be prohibitively expensive, the default max market data lines from IB is 100.
There is a straight-forward path to enabling Pipeline use with Interactive Brokers for daily data and that is through Zipline bundles.  Each day of trading would require the following steps:

historical data is loaded from IB's historical data into a Zipline bundle
trading decisions are made based off of the data in the bundle and orders are routed to IB

Users are given the freedom and flexibility to control what exchanges and tickers they want included in the universe.  This brings up the question: does the user need to know all the tickers for each exchange a priori?  Wouldn't hard-coding the tickers introduce survivorship bias?  To properly address these questions the data loader can first download a list of all the available tickers in an exchange, then get historical data for that exchange/ticker from IB.  In this scheme the user only needs to supply a list of exchanges they wish to trade.
The above scheme naturally separates the following concerns:

List_Tickers_For_Exchange
--Input: a list of exchanges to find available tickers from
--Output: a list of exchange, ticker tuples

Populate_Bundle_With_Historical_Data
--Input: a list of exchange, ticker tuples
--Output: none
--Side Effects: updates or creates Zipline bundle with  historical OHLCV data.

If a user wanted a handful of known tickers that could be hardcoded or read from a file.  If a user wanted to use another broker, Populate_Bundle_With_Historical_Data would simply need to be replaced.  Populate_Bundle_With_Historical_Data probably should be an abstract class with the IB implementation in: Populate_Bundle_With_Historical_Data_From_IB or something along those lines.

If you are trading equities, why do you feel the need for evaluating exchange specific data in Pipeline? Are you interested by price differences between exchanges for a given security? Or, are you trying to include equities not currently in the quantopian-quandl bundle?

I am not looking to do anything across exchanges, the reason for pulling a listing of the tickers on a given exchange would be to ensure that the data (new symbols and delisting) stays up to date.  I would like to trade other equities that are not in the quantopian-quandl bundle such as the LSE.
Your question raises a good point: do we need to do ANY coding or could we just take the quantopian-quandl bundle and trade off of that?

From my perspective as a trader, I'm fine with using the quantopian-quandl bundle to narrow down my universe. Before initiating a trade, I use the DataPortal methods (presumably routed to IB in zipline-live) to obtain the most up-to-date data about the targeted securities.
Consequently, insofar as I'm comfortable with the number of equities included in the quantopian-quandl, Pipeline should just work in live trading. The situation would be different if securities were somehow priced differently between the bundle and live broker. However, I don't believe that this condition applies to equity markets.
I find this separation of concerns useful in ensuring that the universe stays consistent between the live and backtesting modes of execution. I would be worried about possible discrepancies in obtaining Pipeline data from different sources according to the mode of execution. The bundles would have to contain an identical universe which might be hard to achieve.
If I wanted to expand the universe, I could create a custom bundle using the existing machinery in the Pipeline module. For example, one could create some kind of ib-bundle. As you pointed out, the IB api has data limits. One may be able to circumvent this by fetching data in chunks. Or, multiple users could contribute to a single bundle.
It is my understanding that Pipeline can only load one bundle per algorithm, so one would have to take deliberate steps to merge data into the existing quantopian-quandl universe. From this perspective, perhaps creating a new bundle is easier. That said, this problem does not directly pertain to the live mode of execution.


Getting blank page at bottom & top html2pdf

I have an application, i will convert xml to pdf. Using latest version of html2pdf & html2canvas. Most solution is when u add page-break: 'avoid-all'. I have tried page-break & tried all options in page-break: avoid-all, css, legacy but all the options i'm getting issues which is the content is not fit in the page means it adding empty page at bottom.
Please provide a solution for this issue

A4的高度设置成1123px或者把height设置成max-height，The height of A4 is set to 1123px((height = context + padding + margin)，or set max-height.

may i ask how did you solve the problem? thank you

A4的高度设置成1123px或者把height设置成max-height，The height of A4 is set to 1123px((height = context + padding + margin)，or set max-height.

请问这个高度要在哪里设置？

I even tried checking if the problem was that my image was oversized, but nope. Even with transform: scale(0.8) and the image CLEARLY not occupying more than 1 page it kept adding an extra page


Implement Value as a Trait rather than Enum

The thinking is that this would be more direct.
Perhaps it would return ValueType in certain instances.

Implementations:
Into
Cast
Optional:
PKValue: Sized, Hash, Eq, Into<[u8; 8]>

Key consideration: Can it be stored on the stack?

My thinking was a little silly.
But out of it I got a locked-in, better appreciation of how and why enums are better.
I also got this, which should help clean up the codebase:
https://crates.io/crates/enum_dispatch


Reset password dialog - no error on invalid password

Describe the bug
When resetting the password (via link in email), I can change my password and get the confirmation it was changed successfully. However if the new password was invalid (e.g. has less than 8 characters), I cannot log in with this new password. Even though the notification claims everything went ok
To Reproduce
Steps to reproduce the behavior:

Forget Password
On login screen, click on "Forgot my Password"
Enter email, confirm and wait for email to arrive
using the link from the email, try to reset the password to something short, e.g. "123"

Expected behavior
Either password should be changed or error message should appear telling that the new password is invalid
Actual behavior
UI tells "password changed successfully", yet login with the new password is not possible
Desktop (please complete the following information):

OS: MacOS
Browser: safari, should be similar in all browsers

Issue resolved in current neighbourhood_manager_ui repository.
github.com:vicinityh2020/neighbourhood_manager_ui.git


Automatically build  and push prototools container

Via CI system.
This applies to https://github.com/CosmWasm/wasmvm Dockerfile as well.

This is obsolete as we are using prebuilt images by tendermint already: https://github.com/CosmWasm/wasmd/blob/master/Makefile#L161-L162


How can i set transparent navigation bar for parallax header?

I have a problem. I set transparent navigation bar, but for parallax header it doesn't working. But when i scroll my collectionView (section headers and cells) to the top, then navigation bar become transparent.
If i set clipToBounds = false, then it's all ok, transparent worked, but  i have problems with layout when scrolling

sorry, I don't understand your question. Please provide a sample project or at least some code that can help us reproduce the issue. I'm not certain if this is a bug you are suggesting or something else.


Make go test timeout longer enough for Travis

Fixes #667

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@ae54601). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #669   +/-   ##
=========================================
  Coverage          ?   37.14%
=========================================
  Files             ?       51
  Lines             ?     3201
  Branches          ?        0
=========================================
  Hits              ?     1189
  Misses            ?     1836
  Partials          ?      176

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 ae54601...d02442a. Read the comment docs.


added soluton for leetcode problem no 507

Got it, let's tailor the PR template for the LeetCode solution.

Related Issue
None
Description
Added a solution for LeetCode problem 507 "Perfect Number" with detailed explanation and code implementation.
Type of PR

[ ] Bug fix
[x] Feature enhancement
[ ] Documentation update
[ ] Security enhancement
[ ] Other (specify): _______________

Screenshots / Videos (if applicable)
Not applicable.
Checklist

[x] I have performed a self-review of my code.
[x] I have read and followed the Contribution Guidelines.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have followed the code style guidelines of this project.
[x] I have checked for any existing open issues that my pull request may address.
[x] I have ensured that my changes do not break any existing functionality.
[x] Each contributor is allowed to create a maximum of 4 issues per day. This helps us manage and address issues efficiently.
[x] I have read the resources for guidance listed below.
[x] I have followed security best practices in my code changes.

Additional Context
This addition provides a clear and concise solution to LeetCode problem 507 "Perfect Number". It includes a problem statement, constraints, examples, and a detailed approach to solving the problem using Java.
Resources for Guidance
Please read the following resources before submitting your contribution:

[x] Code Harbor Hub Community Features
[x] Docusaurus Documentation
[x] React.js Documentation
[x] Markdown Guide
[x] MDX Documentation
[x] Mermaid Documentation

Resources for DSA Features on Our Site:

[x] Tabs: Switch Languages
[x] Line Numbering
[x] Math Equations

Contribution Guidelines
Thank you for considering contributing to our project! To ensure smooth collaboration and effective contribution management, please adhere to the following guidelines:
Issue Creation

Limit on Issues:

Each contributor is allowed to create a maximum of 4 issues per day. This helps us manage and address issues efficiently.

Contribution Levels

Basic Contributions:

This project is primarily focused on documentation. Most of the setup has been completed, so contributors will generally need to work on basic code tasks, such as writing tests.
For these tasks, issues will be assigned the level1 label.

Acknowledging Hard Work:

If a contributor puts in significant effort on a task, the issue will be upgraded to level2. This is our way of recognizing and appreciating extra effort.

Feature Additions and Component Work:

Contributors working on new features or components using JSX/TSX will be assigned a level based on the complexity and quality of their work.
The more complex and valuable the contribution, the higher the level assigned.

Level Definitions

Level1:

Tasks are straightforward, such as fixing minor bugs, writing tests, or making simple documentation updates.

Level2:

Tasks require more effort, such as addressing complex bugs, improving existing features, or making substantial documentation improvements.

Level3:

Tasks are highly complex and involve significant new feature development, major refactoring, or extensive contributions to the project’s core components.

We look forward to your contributions and appreciate your effort in helping us improve the project!

@Ajay-Dhangar sir i have added the solution


Feature: Target detection

This WIP pull request aims to add a target detection functionality to probe-rs. In the current release of the lib it is possible to auto attach to an unknown target. By leveraging this functionality, the aim is to also provide a functionality to detect and return the connected Target.
Parts of this feature addition could also be used to verify whether the user provided the correct target in the attach functions, which, to my knowledge, is currently not checked.
ARM
Target detection can be done by using the ARM CoreSight ROM-table entries and matching against the provided part number in the target yaml files.
RISC-V
Target detection can be done by reading the IDCODE register and matching against the provided part number in the target yaml files.
There seem to be exceptions where this is not always possible, this will be handled in the respective sequences.
Todo:

[ ] Add part number / identification number to each device yaml file
[ ] Finalize public API function for target detection
[ ] Create custom target detection sequences for specific manufacturers/targets

I'm still in the process of getting my head around probe-rs lib so my current function placements might not be correct. In any case, please let me know what needs to be changed/moved etc.
As for the yaml files I suggest to add an id field to each target which corresponds to the part number / id number saved in the register of said device. Something like this:
name: EFM32PG12B Series
variants:
  - name: EFM32PG12B500F1024
    id: 0xABCDE <-- new device id
    cores:
      - name: main
        type: armv7em
        core_access_options:
          Arm:
            ap: 0x0
            psel: 0x0
...

Actually found out that there is already a system in place for storing the part id. The field is named part in the yaml so I will use this.
I'm currently searching through the stm32 yamls. The manufacturer field was very inconsistent among the family files, not sure why but I fixed this as the families will now get detected correctly.
As stm has some weird part numbering anyways which applies to multiple models at the same time I aim to determine the target model based not only on the part id but also the flash/ram size. Even this way it will not be possible to 100% distinguish certain models. Currently I do not see any solution for this so I'll likely just return the matching targets even if there are multiple. After all the differences between those targets is usually not important for probe-rs.

I am gonna close this in favor of #1326. I hope that's okay :)


Not Working in VS 2013

Hello,
For some reason when I initially tried installing TFS Productivity tools it said that the framework that it is dependent on was missing (4.5.1). I have 4.6.1 installed as well as all older frameworks. I ended up modifying the extension manifest and got it to install. Now I'm dealing with an issue where the toolbar and menu items are missing.
Is this extension compatible with VS 2013? The screen shots are definitely from older versions.

It can be installed on VS2015 but still uses libraries from VS2012, so you will need to have 2 versions installed plus possibly also TFS SDK and VS SDK.
From: ssinno28<EMAIL_ADDRESS>Sent: Wednesday, December 07, 2016 5:45 PM
To: mirik123/tfsprod
Subject: [mirik123/tfsprod] Not Working in VS 2013 (#6)
Hello,
For some reason when I initially tried installing TFS Productivity tools it said that the framework that it is dependent on was missing (4.5.1). I have 4.6.1 installed as well as all older frameworks. I ended up modifying the extension manifest and got it to install. Now I'm dealing with an issue where the toolbar and menu items are missing.
Is this extension compatible with VS 2013? The screen shots are definitely from older versions.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/mirik123/tfsprod/issues/6 , or mute the thread https://github.com/notifications/unsubscribe-auth/AJb-hbD69wgk1CB_qy-qvadTe4gp4Ycdks5rFtSBgaJpZM4LGvmA .  https://github.com/notifications/beacon/AJb-hZSShC0ePmk5wcRkcaOo_94DVpaqks5rFtSBgaJpZM4LGvmA.gif

Yeah still doesn't seem to be working, here is the logs:
12/10/2016 1:18:18 PM - Microsoft VSIX Installer
12/10/2016 1:18:18 PM - -------------------------------------------
12/10/2016 1:18:18 PM - Initializing Install...
12/10/2016 1:18:18 PM - Extension Details...
12/10/2016 1:18:18 PM -               Identifier      : 16bf0a1d-6239-485f-ac25-6fcd37d514c7
12/10/2016 1:18:18 PM -               Name            : TFS Productivity Tools
12/10/2016 1:18:18 PM -               Author          : Mark Babayev
12/10/2016 1:18:18 PM -               Version         : 2.1.0
12/10/2016 1:18:18 PM -               Description     : The TFS Productivity Tools project was designed to provide TFS administrators with helper extensions for Source Control or Work Item Tracking tasks.
12/10/2016 1:18:18 PM -               Locale          : en-US
12/10/2016 1:18:18 PM -               MoreInfoURL     : https://github.com/mirik123/tfsprod
12/10/2016 1:18:18 PM -               InstalledByMSI  : False
12/10/2016 1:18:18 PM -               SupportedFrameworkVersionRange : [4.5]
12/10/2016 1:18:18 PM -
12/10/2016 1:18:18 PM -               Supported Products :
12/10/2016 1:18:18 PM -                               Microsoft.VisualStudio.Pro
12/10/2016 1:18:18 PM -                                               Version : [11.0,14.0]
12/10/2016 1:18:18 PM -
12/10/2016 1:18:18 PM -               References      :
12/10/2016 1:18:18 PM -                               -------------------------------------------------------
12/10/2016 1:18:18 PM -                               Identifier   : Microsoft.VisualStudio.MPF.11.0
12/10/2016 1:18:18 PM -                               Name         : Visual Studio MPF 11.0
12/10/2016 1:18:18 PM -                               Version      : [11.0]
12/10/2016 1:18:18 PM -                               MoreInfoURL  :
12/10/2016 1:18:18 PM -                               Nested       : No
12/10/2016 1:18:18 PM -
12/10/2016 1:18:18 PM -
12/10/2016 1:18:18 PM - Searching for applicable products...
12/10/2016 1:18:18 PM - Found installed product - Microsoft Visual Studio Professional 2012
12/10/2016 1:18:19 PM - The extension with ID '16bf0a1d-6239-485f-ac25-6fcd37d514c7' is not installed to Microsoft Visual Studio Professional 2012.
12/10/2016 1:18:19 PM - Found installed product - Microsoft Visual Studio 2012 Shell (Integrated)
12/10/2016 1:18:19 PM - Found installed product - Microsoft Visual Studio Professional 2013
12/10/2016 1:18:19 PM - The extension with ID '16bf0a1d-6239-485f-ac25-6fcd37d514c7' is not installed to Microsoft Visual Studio Professional 2013.
12/10/2016 1:18:19 PM - Found installed product - Microsoft Visual Studio 2013 Shell (Integrated)
12/10/2016 1:18:19 PM - Found installed product - Global Location
12/10/2016 1:18:21 PM - The following target products have been selected...
12/10/2016 1:18:21 PM -               Microsoft Visual Studio Professional 2012
12/10/2016 1:18:21 PM -               Microsoft Visual Studio Professional 2013
12/10/2016 1:18:21 PM -
12/10/2016 1:18:21 PM - Beginning to install extension to Microsoft Visual Studio Professional 2012...
12/10/2016 1:18:21 PM - Install Error : Microsoft.VisualStudio.ExtensionManager.MissingTargetFrameworkException: The extension 'TFS Productivity Tools' requires a version of the .NET Framework that is not installed.
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework(IExtension extension)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForInstallBlockers(InstallableExtensionImpl extension, IInstalledExtensionList modifiedInstalledExtensionsList, Boolean isNestedExtension, Boolean& olderVersionInstalled)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallInternal(InstallableExtensionImpl extension, Boolean perMachine, Boolean isNestedExtension, IDictionary2 extensionsInstalledSoFar, List1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, AsyncOperation asyncOp, UInt64 totalBytesToWrite, UInt64& totalBytesWritten)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.BeginInstall(IInstallableExtension installableExtension, Boolean perMachine, AsyncOperation asyncOp)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallWorker(IInstallableExtension extension, Boolean perMachine, AsyncOperation asyncOp)
12/10/2016 1:18:22 PM - Beginning to install extension to Microsoft Visual Studio Professional 2013...
12/10/2016 1:18:22 PM - Install Error : Microsoft.VisualStudio.ExtensionManager.MissingTargetFrameworkException: The extension 'TFS Productivity Tools' requires a version of the .NET Framework that is not installed.
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework(IExtension extension)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForInstallBlockers(InstallableExtensionImpl extension, IInstalledExtensionList modifiedInstalledExtensionsList, Boolean isNestedExtension, Boolean& olderVersionInstalled)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallInternal(InstallableExtensionImpl extension, Boolean perMachine, Boolean isNestedExtension, IDictionary2 extensionsInstalledSoFar, List1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, AsyncOperation asyncOp, UInt64 totalBytesToWrite, UInt64& totalBytesWritten)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.BeginInstall(IInstallableExtension installableExtension, Boolean perMachine, AsyncOperation asyncOp)
at Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallWorker(IInstallableExtension extension, Boolean perMachine, AsyncOperation asyncOp)


signInManager.RefreshSignIn(user) is really not enough to foce immediate effectiveness of adding a user to a role

"Roles are stored in the Identity cookie. Changes made to user roles are not persisted to the cookie until the cookie is regenerated or the user signs out and signs in. Applications that add users to a role should call SignInManager.RefreshSignInAsync(user) to update the cookie."
I am dreadfully sorry but this really doesn't seem to change the observable behavior with regards to issue #8474
I have created an extremely simplistic project to show this, the code is accessible at https://github.com/gaazkam/RefreshSignIn
The project contains a page "Ban" that both allows users to ban other user via adding them to the role "Banned" and should be inaccessible to banned users (for the sake of simplicity)
This is the banning C# code from this page:
            var bannedUser = await userManager.FindByNameAsync(Input.UsernameToBan);
            if (bannedUser != null)
            {
                await userManager.AddToRoleAsync(bannedUser, "Banned");
                await signInManager.RefreshSignInAsync(bannedUser);
                Message = "Succesfully banned user " + Input.UsernameToBan + ".";
            }

As you can see SignInManager.RefreshSignInAsync IS called here
In spite of this the problematic observable behavior persists: if UserA bans UserB while UserB is logged in, UserB STILL can successfully access the Ban page they should not be able to access, at least until they log out and log in again. Or until enough time has passed, as you have mentioned waiting 30mins indeed makes UserB effectivelly banned, but I feel this still should happen immediatelly, not after 30 mins.

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

ID: b66f8ffa-699c-8b11-0cab-805f5953805f
Version Independent ID: 7c151ed5-fd78-84fd-a08a-88912990c4ca
Content: Create an ASP.NET Core app with user data protected by authorization
Content Source: aspnetcore/security/authorization/secure-data.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@HaoK  is signInManager.RefreshSignInAsync(User); enough to refresh the Identity cookie?

RefreshSignInCookie refreshes your cookie, it doesn't refresh someone elses cookie.  You need to UpdateSecurityStamp on banned user, and that only triggers a refresh after the default validation interval, there is no immediate revocation by default

@HaoK  Adding roles is a rare event, perhaps we should suggest they send a message to the user in the new role to sign-out/sign. It sounds like the following advice I added is incomplete:
Add a user to a role
Roles are stored in the Identity cookie. Changes made to user roles are not persisted to the cookie until the cookie is regenerated or the user signs out and signs in. Applications that add users to a role should call SignInManager.RefreshSignInAsync(user) to update the cookie.

Well the typical scenario for RefreshSignIn is when they are on their  manage page and doing something on them.  Admin scenarios are not something identity supports generally at this time.  So changing someone elses roles is not something we typically deal with as its an admin scenario

Supporting real-time admin pages is ultra-low priority. I think it's reasonable for the admin to send a message to the user: "If you are currently signed in, sign-out and sign in again to use your new privilege - or wait approximately 30 minutes until the Identity cookie is refreshed.

Sounds good to me

Check on the server whether they have privileges rather than trusting the cookie

Cookies are by definition stale, hit your db if you want to ensure they have permissions

Okay, thank you!

Just to make certain though, do I understand You correctly that I should use UserManager.IsInRoleAsync https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.usermanager-1.isinroleasync?view=aspnetcore-2.1
instead of ClaimsPrincipal.IsInRole?

That hits the database yes so it is guaranteed to be correct


Click Item in Track Then Click Next

Hi Ethan,
I experienced a bug today with the new audio player.  If I click on an item in a playlist and then click the next button, the player does not proceed to the proper track.
Example: https://media.uwex.edu/content/hwm/hwm720_r18/hwm720_unit1/index.html
Scenario:

Open the presentation
Click on track 5 of 9: METs and Metabolic Equivalents
Click "next track" button

Got it. First thing I’ll fix when I get back. Thanks!

Fixed!


CNAME setting and processing in NNS

I'm not sure NNS supports CNAME properly now, the behavior allows to set CNAME along with other types (like A or AAAA) and at the same time any non-CNAME record overrides CNAME in resolve. I don't think it's expected if we're roughly following DNS logic:
https://datatracker.ietf.org/doc/html/rfc1034#section-3.6.2
https://datatracker.ietf.org/doc/html/rfc2181#section-10.1

I know that CNAME records and A or AAAA records cannot coexist. But if they are checked every time, additional GAS will be consumed. Do you think it is necessary?

We'll inevitably have misconfigured names otherwise. We can of course say that it's a user's problem, but preventing it seems a bit better to me. At the same time we'll have to use Find again probably and yes, it's somewhat expensive.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/121261

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/121455

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/121967


Map.!: given key is not an element in the map when using elm make --debug

Hello,
I have a problem with the elm compiler.
When I compiling my project with the following command elm make src/Main.elm, the code compiles correctly.
But, when I compile my project with the debug flag like this elm make src/Main.elm I have the following message.
elm: Map.!: given key is not an element in the map
CallStack (from HasCallStack):
  error, called at ./Data/Map/Internal.hs:610:17 in containers-<IP_ADDRESS>-K2TDqgYtGUcKxAY1UqVZ3R:Data.Map.Internal

I don't think that's a normal behaviour.
Can someone explain me why I have this problem?

you could check if https://github.com/elm/compiler/pull/1850 fixes it for you

I cannot reproduce without an http://sscce.org/
That said, I believe this is the same as other reports about --debug and Map.! which should be resolved in the development version of the compiler. So the fix should be out with the next Elm release.


Default masked amount

Making the auto logging behavior to mask a default amount of bytes every time a field is annotated with @Sensitive and has the following property set: defaultMaskedAmount.
Exemple:

@Getter
@Setter
public class Example{

     @Senstive(defaultMaskedAmount=30)
     private String someField;

}

This way, even if the actual value has a length of 10, the amount of "*" will be 30, always.


ERROR: the correct import path is gopkg.in/check.v1

cannot build becuase of incorrect import path

I can not build anymore too :(

Same problem here

Switching to gliderlabs/alpine:latest in the Dockerfile fixed the build issue for me.

I encountered this error when trying to build a custom logspout image using a new module.  To rule out any issues with the new module, I cloned the logspout repo ran a docker build in the custom directory.  I was able to get the same error:
# github.com/go-check/check
../../go-check/check/error.go:4: "ERROR: the correct import path is gopkg.in/check.v1 ... " evaluated but not used

Any help would be greatly appreciated
Here is the full output:
cd logspout/custom
docker build -t test1 .
Sending build context to Docker daemon 5.632 kB
Step 1 : FROM gliderlabs/logspout:master
# Executing 3 build triggers...
Step 1 : COPY ./build.sh /src/build.sh
 ---> Using cache
Step 1 : COPY ./modules.go /src/modules.go
Step 1 : RUN cd /src && ./build.sh "$(cat VERSION)-custom"
 ---> Running in d5c5d56d0d50
fetch http://alpine.gliderlabs.com/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
fetch http://alpine.gliderlabs.com/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
(1/39) Upgrading musl (1.1.12-r6 -> 1.1.12-r7)
(2/39) Installing binutils-libs (2.25.1-r0)
(3/39) Installing binutils (2.25.1-r0)
(4/39) Installing gmp (6.1.0-r0)
(5/39) Installing isl (0.14.1-r0)
(6/39) Installing libgomp (5.3.0-r0)
(7/39) Installing libatomic (5.3.0-r0)
(8/39) Installing libgcc (5.3.0-r0)
(9/39) Installing pkgconf (0.9.12-r0)
(10/39) Installing pkgconfig (0.25-r1)
(11/39) Installing mpfr3 (3.1.2-r0)
(12/39) Installing mpc1 (1.0.3-r0)
(13/39) Installing libstdc++ (5.3.0-r0)
(14/39) Installing gcc (5.3.0-r0)
(15/39) Installing make (4.1-r0)
(16/39) Installing musl-dev (1.1.12-r7)
(17/39) Installing libc-dev (0.7-r0)
(18/39) Installing fortify-headers (0.7-r0)
(19/39) Installing g++ (5.3.0-r0)
(20/39) Installing build-base (0.4-r1)
(21/39) Installing openssl (1.0.2j-r0)
(22/39) Installing ca-certificates (20160104-r2)
(23/39) Installing libssh2 (1.6.0-r1)
(24/39) Installing curl (7.49.1-r3)
(25/39) Installing expat (2.1.1-r1)
(26/39) Installing pcre (8.38-r1)
(27/39) Installing git (2.6.6-r0)
(28/39) Installing go (1.5.4-r0)
(29/39) Upgrading musl-utils (1.1.12-r6 -> 1.1.12-r7)
(30/39) Installing libbz2 (1.0.6-r4)
(31/39) Installing libffi (3.2.1-r2)
(32/39) Installing gdbm (1.11-r1)
(33/39) Installing ncurses-terminfo-base (6.0-r6)
(34/39) Installing ncurses-terminfo (6.0-r6)
(35/39) Installing ncurses-libs (6.0-r6)
(36/39) Installing readline (6.3.008-r4)
(37/39) Installing sqlite-libs (3.9.2-r0)
(38/39) Installing python (2.7.12-r0)
(39/39) Installing mercurial (3.7.3-r1)
Executing busybox-1.24.2-r0.trigger
Executing ca-certificates-20160104-r2.trigger
OK: 401 MiB in 48 packages
# github.com/go-check/check
../../go-check/check/error.go:4: "ERROR: the correct import path is gopkg.in/check.v1 ... " evaluated but not used
The command '/bin/sh -c cd /src && ./build.sh "$(cat VERSION)-custom"' returned a non-zero code: 2

Does someone have a PR to fix the issue?

@josegonzalez Looks like the issue is the version of gliderlabs/alpine for logspout.  The go version in gliderlabs/alpine3.3 is 1.5.4 and gliderlabs/alpine3.4 upgraded to 1.6.3.  Building a docker image of logspout with 3.4 resolves the error.
I have submitted pull request #242 with changes I made.


Guanchao's Contribution to SUSTech Application Wiki

School of Microelectronics
US, Master of Science degree, mostly ECE programs.

Almost done! This blog is now under proofreading.
@2002-Goatsucker Please review this branch as well, it'll be able to be merged soon.

Please merge #94 as well.


Searching aggregated columns such as GROUP_CONCAT

Hi!
Firstly I am using version 3.6.12 of the package on laravel 4.2.
I have a rather complicated query that joins a bunch of table, and I got around that with aliases. I still have a column that represents a group concat
DB::raw('GROUP_CONCAT(DISTINCT coupon_packs.name SEPARATOR ", ") AS coupon_packs'),
I tried aliasing the column but then the search query looks like
where `GROUP_CONCAT(DISTINCT coupon_packs.name SEPARATOR ", ") AS coupon_packs` LIKE "%search%"
Which obviously is bad. Is there an easy way to specify that that alias needs to be in a HAVING statement? I would use filter but I don't want to have to rewrite global search for all the other columns.
Thanks!

@mihaiscurtucb, your issue should be fixed by using filterColumn method. However, this feature is not available on L4.2 version. Sadly, you have to use filter atm or just disable the searching on that column by setting searchable: false on your js.

Thanks :)

@yajra, I created a quick and dirty solution for this by building my own raw HAVING statement and bypassing WHERE completely
$info = $this->datatableInfo;
        $input = Input::all();

        $datatable = Datatables::of($this->datatableQuery)
            ->filter(function(Builder $query) use ($info, $input) {
                if ($search = $input['search']['value']) {
                    $search = preg_replace('/\s+/', '%', $search);

                    $rawHaving = '';

                    foreach ($info['columns'] as $column => $name) {
//                        $alias = Arr::get($info['aliases'], $column, $column);

                        $rawHaving .= ($rawHaving ? ' OR ' : '') . "$column LIKE '%$search%'";
                    }

                    $rawHaving = "($rawHaving)";

                    $query->havingRaw($rawHaving);
                }
            });

        return $datatable->make(true);

If you agree with the approach I'd be happy to submit a PR

@mihaiscurtucb, sorry for overlooking this issue. I guess the Laravel 4 version is good as is since using filter is what I usually do during those times. Thanks!


m.observe substitution does not identify observers in parent classes..

consider onScreenStateChange, of BaseFlowController..

resolved


Subscribing to realtime changes for a notification feed

I have a notification feed that I'm attempting to subscribe to so that I can alter the unseen notifications count.  Getting the count on the initial call works fine, but the callback passed to subscribe is not being called.
Meteor.call('userNotificationsFeedToken', function(err, token) {
  var notification_feed;
  if (err) {
    return console.error(err);
  } else {
    notification_feed = Stream.feedManager.getFeed('user_notifications', User.current()._id, token);
    notification_feed.get({
      limit: 1
    }).then(function(data) {
      return unseen_notifications_count.set(data.unseen);
    });
    return notification_feed.subscribe(function(data) {
      return unseen_notifications_count.set(data.unseen);
    });
  }
});

Thanks for your help.

Why not just subscribe to the publication i.e.:
var subscription = Meteor.subscribe('Stream.feeds.user_notification');

if (subscription.ready()) {
    var enriched = Stream.feeds.user_notification.find().fetch();
}

This will also give you live updates on the notification feeds, without worrying about generating tokens for client side. Because you are using a non-standard feed group name you would have to configure this feed group in your settings.json:
{
    // ....
    notificationFeed: 'user_notification'
}

I am actually using that approach elsewhere (and it works very well), but for this I'm just trying to get a count of the unseen and unread notifications. What is your recommended way of doing that in Meteor?
Thanks much.

I get it. Yes that use case isn't covered by the current publication made by this integration library, it is actually a good idea to add it (since we are already listening for realtime changes on the server with this meteor library). Otherwise the code you provided above should work. I will have to investigate why this code is not working. If you want feel free to create a PR to add the functionality to track unread notifications via integration library. Otherwise I will have to see when I can find time to add this.

@benmgreene do you have realtime notification enabled on this notification feed (you can check this in the feed group configuration on the getstream.io dashboard).

Yep.
So I've been doing some digging.  Some actions do trigger the callback, and others don't.  I haven't finished testing, but so far I've noticed that:

Stream.feedManager.getFeed('...', user_id).get(mark_seen: true) does NOT trigger the callback
Stream.feedManager.getFeed('...', user_id).get(mark_read: a_id) DOES trigger the callback

Working on some more tests, will update.

Another:

Stream.feedManager.getFeed('...', id).addActivity( activity ) DOES trigger the callback

You only get Faye updates for unread and unseen when you supply a list of id's to mark. When you supply a boolean to either one of these it will not trigger a realtime update.

Ok -- what's the reasoning for that?

Thanks for the new getNotificationFeedStats method!  It's working pretty well.  I did find a bug (which I have fixed) -- see https://github.com/GetStream/stream-meteor/pull/6


Bookmark feature backend fix

@naisargshah while writing the bookmark feature @Tanay27102002 has made a few mistakes in route and modular + controller, please look into it

worked on it and closing the issue


New package: ReactiveMP v1.0.0

Registering package: ReactiveMP
Repository: https://github.com/biaslab/ReactiveMP.jl
Created by: @bvdmitri
Version: v1.0.0
Commit: 9e624c86277c09a7bc303387e630a25acb69ebf1
Reviewed by: @bvdmitri
Reference: https://github.com/biaslab/ReactiveMP.jl/commit/9e624c86277c09a7bc303387e630a25acb69ebf1#commitcomment-52339689

We would like to use the current name ReactiveMP.jl, which means reactive message passing. MP or VMP are conventional abbreviations for (variational) message passing algorithms. ReactiveMessagePassing.jl seems to be an unnecessary long package name for me.


"--max-depth" support - allow for summary of size per directory

I was hoping the output -o json  would do this, but that feature appears more to save the state, to be fed back into gdu at a later time interactively.
I was hoping for the equiv of  du --max-depth flag
with possible improvement of output in json format,
eg:
du -h --max-depth=0
1.2G    .

du -h --max-depth=1
1.2G    .
 92M    ./2024
863M    ./2023
305M    ./2022

du -h -max-depth=2
1.2G    .
141M    ./2022/07
31M     ./2022/08
25M     ./2022/09
41M     ./2022/10
48M     ./2022/11
20M     ./2022/12
305M    ./2022
113M    ./2023/01
355M    ./2023/02
121M    ./2023/03
49M     ./2023/04
53M     ./2023/05
18M     ./2023/06
13M     ./2023/07
6.2M    ./2023/08
20M     ./2023/09
30M     ./2023/10
55M     ./2023/11
35M     ./2023/12
863M    ./2023
14M     ./2024/01
78M     ./2024/02
92M     ./2024

What would be the drawback of including the directory usage and file count in the json file for directory?
I think this would allow us to run jq filter and produce the above output
Example :
[
  1,
  2,
  {
    "progname": "gdu",
    "progver": "v5.29.0",
    "timestamp":<PHONE_NUMBER>
  },
  [
    {
      "name": "/etc/audisp",
      "mtime":<PHONE_NUMBER>,
	  "asize" : 9313,	<-----------
	  "dsize" : 20480,	<-----------
	  "items" : 4		<-----------
    },
    [
      {
        "name": "plugins.d",
        "mtime":<PHONE_NUMBER>,
		"asize": 4971,	<-----------
		"dsize": 12288,	<-----------
		"items": 3	<-----------
      },
      {
        "name": "af_unix.conf",
        "asize": 358,
        "dsize": 4096,
        "mtime":<PHONE_NUMBER>
      },
      {
        "name": "syslog.conf",
        "asize": 517,
        "dsize": 4096,
        "mtime":<PHONE_NUMBER>
      }
    ],
    {
      "name": "audispd.conf",
      "asize": 246,
      "dsize": 4096,
      "mtime":<PHONE_NUMBER>
    }
  ]
]

Yes, apologies, I didn't mean to imply the output should look the same as the du example, just the desired equivalent outcome.
Putting into the json output and using jq to filter/sort was what I was envisioning as well, sorry if didn't make that clear.


Migrate all the alerter tests into individual files

@ferozsalam
Why didn't you move the following files to the alerters folder?
thehive.py
dingtalk.py

@ferozsalam
Why didn't you move the following files to the alerters folder?
thehive.py
dingtalk.py

I didn't see them, thanks for letting me know.
I will move them in a separate PR.

@ferozsalam
Only the file name of zabbix test code ends with _text.py instead of  _test.py.
the current
zabbix_text.py
Correct name
zabbix_test.py

@nsano-rururu thanks, will fix.


[Question] Underscan/overscan with Nvidia

So far - using Bazzite as a couch-gaming distro - I havn't figured out how to get the screen to align perfectly with a 4k TV. Normally, there would be a underscan/overscan option you can configure to help deal with this.
My question is:
What would be the recommended "Bazzite way" to solve this problem?
Thanks.

i usually just use the settings provided by the TV, LG calls it JustScan, and others provide similar settings. these should be in the "Aspect Ratio" area of options.
not sure if thats the Bazzite way, but thats definitely how i would go around this issue.

JustScan was exactly what I needed :) Thank you!


Config generator doesn't accept URLs starting with number

It will fail on this command.
oc exec -n istio-system $(oc get po -n istio-system -o jsonpath='{.items[?(@.metadata.labels.app=="3scale-istio-adapter")].metadata.name}') \
-it -- ./3scale-config-gen \
--url="https://3scale-admin.3scale.net:443" --service="3" --token="token"

with this error message
error - generating configuration - UID generation failed: error. Generated UID does not conform to requirements. a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name',  or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?') . UID 3scale-admin-3scale-net-443-3

This looks like a duplicate of #67

@pehala closing in favour of #67,  feel free to re-open if I have misinterpreted this but I believe it is the same issue.


Add unit test that uses gRPC Context.

While looking into gRPC context, I noticed the implementation is very similar to Armeria's, using a thread-local. So didn't find any reason not to work, and at least this example seems to be working ok. Let's add the test for now and follow up on what use cases don't work.
/cc @andrewoma

Thanks, @anuraaga !


Data Transfer window keeps expanding when navigating with the Back/Next buttons

With (almost) every click on the Back/Next button in the Data Transfer window, it expands to the right.
Steps to reproduce:

Select "Export Resultset" from the table context menu
Press the Next button multiple times until it gets disabled. On (almost) every click the window expands to the right.
Now repeat it with the Back button.
When the window client width reaches the screen width it stops expanding.

Environment:
DBeaver 5.1.6 x64
Windows 7 x64

Thanks for the bug report


⚠ Bofrost.be has degraded performance

In bd9da92, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1193 ms

Resolved: Bofrost.be performance has improved in 3376986.


Latest pyarmor : not working with restrict mode ?

Hello,
I'm using latest pyarmor from pip (PyArmor Trial Version 7.0.3):
When using the zip (containing pyarmor obfuscated script and pytransform directory) mysterium keep having the error :
ModuleNotFoundError: No module named 'pytransform'
(Although it correctly copy theses file under modules directory)
I tried to fool it, creating the pytransform directory at the mysterium root, and using mysterium directly on the python file, but then I had a "Restrict mode error".
I think latest pyarmor use by default a "restrict mode = 1" (see : https://pyarmor.readthedocs.io/en/latest/mode.html#restrict-mode ).
It check if the obfuscated script is modified or is called from a non obfuscated script it- and raise the error : "Check bootstrap restrict mode failed" at execution.
I haven't found any workaround so far.
Anyone having the same issue ?

Hey bro, you have to try without Mysterium, by choosing n at the beggining for decline Blue Mysterium.


Persistent subscriptions

The Event Store provides an alternate event subscription model, from version 3.2.0, known as competing consumers. Instead of the client holding the state of the subscription, the server remembers it.
This pull request adds support for creating a new persistent connection, and connecting a subscriber to a persistent connection. Additional unit tests have been included to demonstrate and verify these new features.
Each persistent subscription runs as a separate GenServer process, Extreme.PersistentSubscription, and creates its own connection to the Event Store. This is due to the way that the EventStore tracks active consumers for a persistent subscription by connection. It is not possible to reuse a single connection to reconnect to a subscription if the subscriber process terminates. The connection must close to notify the Event Store that the consumer is dead. Then it will allow a new connection to the subscription.
It includes a breaking change. The module Extreme.Messages has been renamed to Extreme.Msg. This is due to the persistent connection messages in the Protocol Buffers definition creating an Elixir module name that exceeds the 100 character limit support for creating Erlang releases.
I have incremented the mix release version to 0.9.0.

Coverage increased (+7.8%) to 76.037% when pulling 71d71b8f3419661d95a50917db33c68e55e90481 on slashdotdash:feature/persistent-subscriptions into eba217ca8209053eea1f66f6a9dc9ec8313072fd on exponentially:master.

Coverage increased (+7.8%) to 76.037% when pulling 71d71b8f3419661d95a50917db33c68e55e90481 on slashdotdash:feature/persistent-subscriptions into eba217ca8209053eea1f66f6a9dc9ec8313072fd on exponentially:master.

Please add any feedback for this pull request. I tried to follow the existing coding style & conventions.

Great job @slashdotdash, we appreciate it! I don't like the fact that new Extreme connection needs to be started for persistent subscription but I understand that's up to EventStore itself.

Thanks for merging this. Yes, the connection per persistent subscription is a due to how the Event Store tracks active consumers.


Support for Generic / Private Docker Registries (CLI)

Description https://github.com/UffizziCloud/uffizzi_app/issues/34#issuecomment-1183564956

Input data can be read from these environment variables:

DOCKER_REGISTRY_URL
DOCKER_REGISTRY_USERNAME
DOCKER_REGISTRY_PASSWORD

The environment variables are mentioned in https://github.com/UffizziCloud/uffizzi_cli/issues/124#issuecomment-1188796088
The commands are:

uffizzi connect docker-registry
uffizzi disconnect docker-registry

Options for connect:
OPTIONS
       -r, --registry=<registry>
              URL of the service.

       -u, --username=<username>
              Username for the service.

       -p, --password=<password>
              Password for the service.

As a registry I used JFrog Artifactory.
With this compose file:
services:
  web:
    image: antlu.jfrog.io/default-docker/antlu/hello
    command: ["python", "/code/manage.py", "runserver", "<IP_ADDRESS>:8000"]
    ports:
      - 8000:8000

x-uffizzi:
  ingress:
    service: web
    port: 8000

TESTED - OK
services:
  webhooks_test_app:
    image: elnealo.jfrog.io/uffizzi-test-docker/webhook-test-app
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres

x-uffizzi-ingress:
  service: webhooks_test_app
  port: 80

x-uffizzi-continuous-preview:
  delete_preview_after: 1h
  delete_preview_when_image_tag_is_updated: true
  deploy_preview_when_image_tag_is_created: true

bash-5.1# bundle exec uffizzi preview create -o=json test-compose/uffizzi-compose-webhook-jfrog.yml
[✔] Creating containers...
[✔] Deploying preview...
  [✔] webhook-test-app
{"id":"deployment-2","url":"https://deployment-2-testet-pw9l4a.app.qa-gke.uffizzi.com"}

bash-5.1# bundle exec uffizzi connect docker-registry
Registry Domain: elnealo.jfrog.io
Username<EMAIL_ADDRESS>Password:
Successfully connected to Docker Registry.

bash-5.1# bundle exec uffizzi connect docker-registry -r elnealo.jfrog.io -u<EMAIL_ADDRESS>--update-credential-if-exists
Updating existing credential.
Password:
Successfully connected to Docker Registry.
bash-5.1#

      DOCKER_REGISTRY_URL: elnealo.jfrog.io
      DOCKER_REGISTRY_USERNAME<EMAIL_ADDRESS>      DOCKER_REGISTRY_PASSWORD:

bash-5.1# bundle exec uffizzi connect docker-registry --update-credential-if-exists
Updating existing credential.
Successfully connected to Docker Registry.
bash-5.1# bundle exec uffizzi disconnect docker-registry
Successfully disconnected from Docker Registry.
bash-5.1#

@NealArw We need to test it with CloudSmith too
https://help.cloudsmith.io/docs/docker-registry

TESTED - OK cloudsmith.io
services:
  webhooks_test_app:
    image: docker.cloudsmith.io/dbp-test/webhook-test-app/webhook-test-app
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres

x-uffizzi-ingress:
  service: webhooks_test_app
  port: 80

x-uffizzi-continuous-preview:
  delete_preview_after: 1h
  delete_preview_when_image_tag_is_updated: true
  deploy_preview_when_image_tag_is_created: true

TESTED on prod - OK
CLI + Platform
cloudsmith.io:
# uffizzi connect docker-registry
Registry Domain: docker.cloudsmith.io
Username<EMAIL_ADDRESS>Password:
Successfully connected to Docker Registry.
# vi c.yml
# uffizzi preview create -o=json c.yml
[✔] Creating containers...
[✔] Deploying preview...
  [✔] webhook-test-app
{"id":"deployment-4813","url":"https://deployment-4813-stone-parisian-3e3t.app.uffizzi.com"}
#

jfrog.com:
# uffizzi connect docker-registry  --update-credential-if-exists
Updating existing credential.
Registry Domain: elnealo.jfrog.io
Username<EMAIL_ADDRESS>Password:
Successfully connected to Docker Registry.
# uffizzi preview create -o=json c.yml
[✔] Creating containers...
[✔] Deploying preview...
  [✔] webhook-test-app
{"id":"deployment-4814","url":"https://deployment-4814-stone-parisian-3e3t.app.uffizzi.com"}
#


Allow empty labels, move state CSS class to outer div.

@cgarvis how do these changes look?

Allow empty labels: See the new tests, which fail on the existing code
Template change: This allows more styling flexibility. Specifically, I did this so I could color the main outline red or green depending on whether it's off or on. It's a lot easier to put the border on the outer element.
Updated the build (btw I think it was already out of date).

I'd suggest bumping major version if you merge this, due to the CSS change.

Yeah don't have the build commit.  I do that on a release on github.  That way the built js is what is stable.

(Will re-push without the 'Update build' commit tomorrow)

Re-pushed without the Update build commit.

Is this merge worthy? Anything I can do to clean it up?


Hello

How to make it work on other datasets?

@Liu96596l You can add a new dataset in lib/dataset_utils.py and load it accordingly in scripts that you want.
For training scripts, we use Pytorch's Dataloader, and for testing scripts, we load data as Pytorch tensor. There are some examples you can copy from in lib/dataset_utils.py.


Unexpected String Rendering

When only a quoted string is parsed some strange errors occur.  Looks like some characters cause new lines and spaces are removed:
Raw View:
"## Strings\nThis here, is a string"

Parsed View:
//<PHONE_NUMBER>2152
// https://smujmaiku.com/test.json

"##Strings\nThishere,
isastring"

Interesting bug, adding an image to make the bug clear.

Thanks for reporting.

I think this is related to issue #77

This error is fixed in version 0.14.0, thanks for the reporting.


What should we backport to 4.0.x?

Features Suggestion
Feature description: Describe your question here
I think the primary candidates for a potential 4.0.49 release are these:

What has already been merged into 4.0-stable but not published to NuGet

Judging from this it looks like three bugs were fixed but never published

Some sort of encouragement to migrate, probably linking to here

Logging to console? Warnings? Overlays which only show in designer view?

Let me know if you have any other ideas.

Hey @bclehmann, thanks for mentioning this!
Package
It wasn't my intent to fix bugs and not publish a package. I agree, this should be done! I'll leave this issue open to track that.
Migration
We probably don't need to push too hard. If it's working for them user don't need to update, and if they want to update they'll discover the version change when they go to the NuGet page or see the latest cookbook.
Depending on how much of a can of worms #1036 is version 5 might be around the corner
Migration via Documentation
I do want to improve the old cookbook pages to (1) show a large warning label that they're obsolete and (2) start auto-forwarding redundant old cookbook URLs to a central URL to improve google indexing. I find googling things keeps pointing people to old version URLs. Having a single /cookbooks/4.1 URL that updates may be preferred over a bunch of little URLs with minor version numbers 🤔
Misc. Website Comments
I also have www.ScottPlot.net that I don't currently advertise. I haven't really figured out what to do with the website yet... Part of me likes the idea of using GitHub pages to host it (based on Jekyll). I don't like the idea of hosting binaries and tons of cookbook files in a git repo though. I've also been thinking of throwing something together with netlify and leaning on their free tier for as long as I can. If it's not obvious, I never found a documentation/website system I'm totally satisfied with 😝 I've been piggybacking off my existing SiteGround hosting account (LAMP stack with a custom PHP/markdown system) but that's a little too custom to be robust. Probably a topic for another issue and a problem to solve on another day 🤷

https://www.nuget.org/packages/ScottPlot/4.0.49 👍
I added a pop-up readme to alert users to the version change


Add NeonHelper.DockerCli and DockerComposeCli properties

Up until the Docker v<IP_ADDRESS> release, we've been launching the Docker CLI by executing "docker".  This maps directly to the CLI executable on OS/X and Linux and Windows would resolve this to "docker.exe" after trying "docker", "docker.cmd", "docker.bat", etc. (none of which was found).
The problem is that Docker v<IP_ADDRESS> supports new WSL features and deploys a Linux/OSX "docker" script in the Docker program folder on Windows.  This means that executing "docker" will try to run this script which being a script, is not a Windows binary, and will fail.
I worked around this a couple days ago by explicitly executing "docker.exe", but I realized today, this won't work on Linux/OSX because the client executable isn't named like that there.
The portal solution is to add DockerCli and DockerComposeCli (which will have the same issue) properties to NeonHelper and have these return the correct executable name based om the current platform.

Implemented for v2.2.0


"TypeError: L.drawLocal.extend is not a function" and L.EditToolbar not working

[ ] I'm reporting a bug, not asking for help
[x] I've looked at the documentation to make sure the behaviour is documented and expected
[] I'm sure this is a Leaflet Draw code issue, not an issue with my own code nor with the framework I'm using (Cordova, Ionic, Angular, React…)
[x] I've searched through the issues to make sure it's not yet reported

How to reproduce

Leaflet version I'm using: 1.2.0
Leaflet Draw version I'm using: 0.4.12
Browser (with version) I'm using: Chrome Version 62.0.3202.75
OS/Platform (with version) I'm using: Windows 10
(Also Im using TypeScript)

What behaviour I'm expecting and which behaviour I'm seeing
It seems like I don't have access to some features from this plugin. I get the error "TypeError: L.drawLocal.extend is not a function" when I'm trying to use the drawLocal to edit the toolbar information text.
And I do not have access to L.EditToolbar either? I want to remove the "clear all" option from the delete button (like this: https://stackoverflow.com/questions/46934768/leaflet-draw-delete-button-remove-clear-all-action). Anyone have a clue on what may be wrong?

Solved it
I fixed this with some help from a collegue. It turned out to be a typescript typings error. I installed the typings for leaflet-draw maybe 2 weeks ago and apperantly they haven't been updated in a while.
Remove button was removed by:
(L as any).EditToolbar.Delete.include({
removeAllLayers: false
});
Toolbar text edited by:
(L as any).drawLocal.draw.toolbar.buttons.polygon = 'New polygon'
Since this was a typings error this issue can be removed.


Custom units get mangled improperly

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
Hi, the new feature for parsing custom units may have some internal bugs regarding capitalization - for example it changes MOhm (megaohm) to mohm (milliohm). In fact it seems to decapitalize all units which may break the meaning of some units. In the end, it causes major damage to parameter units.
Also, it changes % into "percent". Why?

Steps to Reproduce

Make parameters with units which have a different meaning according to capitalization in 0.11.0 (mRad as milliRad for radiation / mrad as milliradian, MOhm vs mOhm (6 decades away), Nm versus nm (newtonmetre vs. nanometre).
Update to 0.12.0 and watch update log.

Expected behaviour
The custom unit feature shall not change capitalization as units are case sensitive.
Deployment Method

[X] Docker
[ ] Bare metal

Version Information
Version Information:
InvenTree-Version: 0.12.0
Django Version: 3.2.19
Commit Hash: 1d18b48
Commit Date: 2023-06-30
Database: postgresql
Debug-Mode: False
Deployed using Docker: True
Platform: Linux-4.19.0-17-amd64-x86_64-with-glibc2.36
Installer: DOC
Active plugins: [{'name': 'InvenTreeBarcode', 'slug': 'inventreebarcode', 'version': '2.0.0'}, {'name': 'InvenTreeCoreNotificationsPlugin', 'slug': 'inventreecorenotificationsplugin', 'version': '1.0.0'}]
Please verify if you can reproduce this bug on the demo site.

[ ] I can reproduce this bug on the demo site.

Relevant log output
Running migrations:
  Applying InvenTree.0002_auto_20230630_0441... OK
  Applying common.0017_notesimage... OK
  Applying common.0018_projectcode... OK
  Applying common.0019_projectcode_metadata... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying taggit.0004_alter_taggeditem_content_type_alter_taggeditem_tag... OK
  Applying taggit.0005_auto_20220424_2025... OK
  Applying stock.0097_alter_stockitem_notes... OK
  Applying stock.0098_auto_20230427_2033... OK
  Applying stock.0099_alter_stockitem_status... OK
  Applying stock.0100_auto_20230515_0004... OK
  Applying build.0042_alter_build_notes... OK
  Applying stock.0100_stockitem_consumed_by... OK
  Applying stock.0101_stockitemtestresult_metadata... OK
  Applying part.0105_alter_part_notes... OK
  Applying part.0106_part_tags... OK
  Applying part.0107_alter_part_tags... OK
  Applying part.0108_auto_20230516_1334... OK
  Applying part.0109_auto_20230517_1048...warning: Could not find unit match for nV/sqrt(Hz)
warning: Could not find unit match for pA/sqrt(Hz)
warning: Could not find unit match for nV/sqrt(Hz)
warning: Could not find unit match for - W/°C
warning: Could not find unit match for uVpp
Found unit match: Ohm -> ohm
warning: Could not find unit match for dBc
Found unit match: MOhm -> mohm
warning: Could not find unit match for mv/dB
warning: Could not find unit match for dBV
warning: Could not find unit match for MSa/s
warning: Could not find unit match for dBc
warning: Could not find unit match for LSB
warning: Could not find unit match for LSB
Found unit match: % FSR -> % fsr
Found unit match: % FSR -> % fsr
warning: Could not find unit match for dBc/Hz
warning: Could not find unit match for dBc/Hz
warning: Could not find unit match for dBc/Hz
warning: Could not find unit match for mVpp
Found unit match: Ohm -> ohm
warning: Could not find unit match for Million
warning: Could not find unit match for -
warning: Could not find unit match for -
warning: Could not find unit match for V-us
warning: Could not find unit match for -
warning: Could not find unit match for 10^-6/mT
Found unit match: Ohm.m -> ohm.m
warning: Could not find unit match for -
Updated units for 469 parameter templates
 - Converted 23 units
 - Found 15 invalid units:
   - - W/°C
   - uVpp
   - LSB
   - Million
   - pA/sqrt(Hz)
   - V-us
   - nV/sqrt(Hz)
   - -
   - 10^-6/mT
   - dBc
   - mv/dB
   - MSa/s
   - dBV
   - dBc/Hz
   - mVpp
Updated 14828 parameter values
 OK
  Applying build.0043_buildline... OK
  Applying build.0044_auto_20230528_1410... OK
  Applying build.0045_builditem_build_line... OK
  Applying build.0046_auto_20230606_1033... OK
  Applying build.0047_auto_20230606_1058... OK
  Applying build.0048_build_project_code... OK
  Applying part.0110_alter_part_units... OK
  Applying part.0111_auto_20230521_1350...Warning: Invalid units for part 'Part object (468)': triplets (3pcs)
Updated units for 20 parts
Found 1 invalid units:
 - triplets (3pcs)
 OK
  Applying company.0056_alter_company_notes... OK
  Applying company.0057_auto_20230427_2033... OK
  Applying company.0058_auto_20230515_0004... OK
  Applying company.0059_supplierpart_pack_units... OK
  Applying company.0060_auto_20230519_0344...Updated 1554 supplier part units
 OK
  Applying company.0061_remove_supplierpart_pack_size... OK
  Applying company.0062_contact_metadata... OK
  Applying company.0063_auto_20230502_1956... OK
  Applying company.0064_move_address_field_to_address_model... OK
  Applying company.0065_remove_company_address... OK
  Applying company.0066_auto_20230616_2059... OK
  Applying flags.0012_replace_migrations_for_wagtail_independence... OK
  Applying flags.0013_add_required_field... OK
  Applying label.0010_buildlinelabel... OK
  Applying label.0011_auto_20230623_2158... OK
  Applying order.0091_auto_20230419_0037... OK
  Applying order.0092_auto_20230419_0250... OK
  Applying order.0093_auto_20230426_0248... OK
  Applying order.0094_auto_20230514_2331... OK
  Applying order.0095_salesordershipment_delivery_date... OK
  Applying order.0096_alter_returnorderlineitem_outcome... OK
  Applying order.0097_auto_20230529_0107... OK
  Applying part.0112_auto_20230525_1606...Added field checkbox to model partparametertemplate
Added field choices to model partparametertemplate
 OK
  Applying part.0113_auto_20230531_1205... OK
  Applying plugin.0006_pluginconfig_metadata... OK
  Applying stock.0102_alter_stockitem_status... OK
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Operations to perform:
  Synchronize unmigrated apps: allauth, allauth_2fa, corsheaders, crispy_forms, dbbackup, dj_rest_auth, django_cleanup, django_filters, django_ical, django_otp, djmoney, drf_spectacular, formtools, generic, import_export, maintenance_mode, markdownify, messages, mptt, registration, rest_framework, staticfiles
  Apply all migrations: InvenTree, account, admin, auth, authtoken, build, common, company, contenttypes, django_q, error_report, exchange, flags, label, order, otp_static, otp_totp, part, plugin, report, sites, socialaccount, stock, taggit, user_sessions, users
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  No migrations to apply.
System check identified no issues (1 silenced).

@MR-DOS we moved to using pint for physical part / parameter units in 0.12.0. Your migration here does show some units which are not directly supported and require some careful considration.

In fact it seems to decapitalize all units which may break the meaning of some units.

It only decapitalizes units when it cannot find a direct match:

For example, Ohm is not considered a valid unit in pint, while ohm is the correct version.
However, it appears that converting the lower case version is too naive - prefixes are not considered, for example:

Open to suggestions how we can make this conversion process more comprehensive

If it's possible to have Mohm and mohm at the same time, that's OK for me, though not ideal.
What I still find a problem is that it changes % to percent and decapitalizes units which it does not like (e.g. % FSR to % fsr [full scale range]).

@MR-DOS it should only convert to lower case if there is a matching lower-case unit. Not if there are no matches. Do you have any examples of it converting to lower case, even though there is no match?

Probably not, my mistake.
Since it checks online for proper units when editing parameters, I'm OK with this solution as a user, though there may be some warning during migration that people should check units in InvenTree instances migrated from <=0.11.0.


Add documentation on how to use PyType with Jax (and also common add-on libraries such as Flax)

There are a bunch of tricks that one needs to know to use PyType with JAX (esp. also in combination with Flax).  For example, a PyTree needs to be treated as "Any".
Since it's very common to want to use PyType with JAX, it would be useful to have a section of the Jax documentation summarizing these tricks and best practices.  I'm not sure what the best way is to handle the Jax/Flax interactions but it's important for someone to figure out how to document those best practices too.

@superbobry any thoughts or references to point to? (@billmark is a Googler.)

I think we can have a proper type for arrays in JAX, and I have a draft commit doing that internally.
Trees, however, are harder, because their type is fundamentally recursive and generic, and pytype does not currently support that. I think mypy does have some support for recursive generics, but I'm sure it too has its limits.

  For example: https://flax.readthedocs.io/en/latest/flax.struct.html says "Note: Inherit from PyTreeNode instead to avoid type checking issues when using PyType".  These comments imply that there is some best practice for type annotations, but I can't find any coherent explanation of what that best practice is.  Maybe it really is to use "Any" everywhere because proper type checking is impossible, but if so that needs to be stated clearly instead of having confusing half-explanations that imply some other solution scattered elsewhere in the docs.
This seems to be an area of general confusion, as this discussion is already uncovering.  For example, there are bugs like this one: https://github.com/google/flax/issues/620

@jakevdp.  I realize I didn't directly reply to your question:

Beyond the recommendation to use Any for arrays and pytrees, and the caveat that type-checking is fundamentally broken as soon as you use a function transformation, do you have other thoughts about what would belong in a best practices guide?

If those are the best practices, then that's mostly sufficient.  Minor additions would include:  (1) please remove or amend the other confusing comments about type checking in the Flax docs.  (2) Explain why anything better than "Any" isn't possible with the current type checkers.  (3) Possibly discuss the use of explicit type annotations every time you perform a functional transformation as a workaround for the fact that functional transformations break type checking.  (i.e.  my_var: actual_type = jax.jit(blah, blah)).
However, it seems from other comments (and also from the Flax docs) that there's not consensus even by Jax/Flax maintainers on what the best practices should be.  I am not prepared to weigh in on that discussion.

@beartype bro maintainer here. Thanks so much for the gracious namedrop nearly a year ago, @billmark. Has it really been that long? :face_exhaling:
@beartype was originally gestated out of a multiphysics biology simulator, where runtime type-checking tamed the million-line code beast that nothing else could. We're still as devoted to big data science now as we were back then – and JAX is directly in that wheelhouse.
@beartype only currently provides explicit support for NumPy type hints like numpy.typing.NDArray[...]. We'd love to extend support to JAX types, however. Does JAX provide an equivalent API for expressing JAX constraints as type hints? Clearly, typing.Any is a poor substitute for properly constrained types. Static type checkers like PyType and mypy may fail to grok dynamic runtime semantics and the deep Pythonic magic that JAX internally performs, but @beartype is a different breed altogether. If it runs at runtime, we can type-check it.
Let @beartype know if we can do anything for JAX. Until then, thanks for all the efficient transforms, wonderful JAX team!

Hi - JAX does not currently do much with static typing, beyond some scattered uses of jnp.ndarray and frequent annotations with aliases like Array = Any. We're currently exploring doing something more systematic (discussion at https://github.com/google/jax/pull/11859) but the roadmap is not yet finalized. In particular, @patrick-kidger and I have been going back and forth about whether we should follow numpy's lead and define both jnp.ndarray and jax.NDArray, or on the other hand push to use a single type like jax.Array for both instance checks and type annotations. The latter is a nice idea, but ends up being somewhat challenging because of some fundamental limitations of Python's type system.

FWIW, once the jaxtyping rewrite goes in ¹ then jaxtyping will actually be PEP-compliant. It shouldn't actually need any special support from either runtime type checkers or static type checkers.
'tis a thing of beauty, if I say so myself.
¹ Once @jakevdp and I have settled our differences regarding that pesky ND at the start of the annotation.

jaxtyping will actually be PEP-compliant.

:partying_face:

It shouldn't actually need any special support from either runtime type checkers...

__isinstancecheck__() in the metaclass, huh? Classic trick. @beartype gives a clawed thumbs up.

...we should follow numpy's lead and define both jnp.ndarray for instance checks and jax.NDArray for annotations...

Sadly, this is the way. Exactly as you suggest, @jakevdp, Python's typing ecosystem imposes hard fundamental limitations. Type hints were never intended to be used at runtime, really. Many older PEPs admit as much. It was a wild and lawless time back then. Let us never go back there.
NumPy circumvents this by cleverly piggybacking its numpy.typing.NDArray pure-Python type hint factory on top of CPython's typing.GenericAlias C-based superclass. Since typing.GenericAlias drives the entirety of PEP 585 (e.g., type hints like list[str] rather than typing.List[str]), the fact that numpy.typing.NDArray subclasses typing.GenericAlias makes NumPy type hints implicitly compatible with static type checkers – usually the main obstacle.
Cue the sign for victory. \o/


Fixed Graphic Setting Sub State

Describe your bug here.
So, When I Compile a game then I went to options and I press the graphic. so the game got crash so fixed the GraphicSettingSubState
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
No

Try putting haxelib install polymod into Command Prompt.

Try putting haxelib install polymod into Command Prompt.

Polymod is not a requirement for Psych Engine.
This issue has no information so this doesn't help in anything at all.


Validate APIVersion is set when parsing EKSA config yaml

Issue #, if available:
#6096
Description of changes:
The config yaml is parsed by the ConfigManager at the beginning of cluster creation/upgrade and added to an ObjectLookup that maps the objects with keys in the form of <apiVersion><kind><name>, and if the APIVersion field is empty then the resulting key would be <kind><name>.
Later on, it is attempted to be retrieved by dedicated object processors in a ConfigManagerEntry. E.g. processVSphereDatacenter used for the vSphere ConfigManagerEntry, where the objects.GetFromRef lookup operation uses the Cluster.APIVersion field to build the key <apiVersion><kind><name>  and fetch the object being referenced by the Cluster from the object map. However, as mentioned before, when APIVersion is empty that key is not created during parsing the config so it does not exist at this point and the processor fails to retrieve the object. Ultimately, it is assigned nil for example in the case of a VSphereDatacenter without an APIVersion field.
Given that the APIVersion field is required, we should validate that this field exists for all objects after parsing before continuing.
This PR adds a validation to ensure the API version is set on cluster objects in the config yaml file.
Testing (if applicable):

Unit testing
Manual testing

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm

/test eks-anywhere-e2e-presubmit

/retest

/approve

/retest

/retest

/retest

/retest

/test all

/test all

/test all

/test eks-anywhere-e2e-presubmit

/test all


[main] Upgrade to latest dependencies

Cron -knative-prow-robot
/cc knative-sandbox/source-wg-leads
/assign knative-sandbox/source-wg-leads
Produced by: knative-sandbox/knobots/actions/update-deps
Details:
bumping knative.dev/eventing-redis 9ec30de...34e71dc:
  > 34e71dc Update community files (# 194)
  > 7e7cdab upgrade to latest dependencies (# 193)
bumping knative.dev/eventing 25bd8ef...48112db:
  > 48112db Change Result->Reply in comments, left over cruft (# 5600)

/approve
/lgtm


fixed broadcast of array chunks containing a scalar during compute()

[x] Closes #8822
[x] Tests added / passed
[x] Passes pre-commit run --all-files

I decided, somewhat reluctantly, to create this PR after thinking long and hard about Issue #8822 .  I was reluctant because this PR runs counter to PR #8847 .  But I hope @jsignell doesn't mind. :smile:  In any case, if this PR is not approved, then I hope it would have at least sparked a helpful discussion.
In principle, in dask.array, the content of any chunk must be an array whose number of dimensions matches that of the dask array possessing that chunk.
In practice, however, there appears to be room for grace, as under certain conditions, dask is able to work seamlessly with chunks whose contents violate this rule.
For example, consider the following chunk-function:
import numpy as np

def f(x, ndim=0):
    """
	Ignore `x` and return arbitrary one-element array of dimensionality `ndim`

	For example,
	f(x, 0) = array(5)
	f(x, 1) = array([5])
	f(x, 2) = array([[5]])
	f(x, 3) = array([[[5]]])
	"""
    return np.array(5)[(np.newaxis,) * ndim]

which is applied, when ndim = 1, to the following dask array using map_blocks():
import dask.array as da
from functools import partial

array = da.from_array([1] + [2, 2] + [3, 3, 3], chunks=((1, 2, 3),))
out_chunks = ((1, 1, 1),)

array.map_blocks(partial(f, ndim=1), chunks=out_chunks).compute()
# returns array([5, 5, 5])

The return value is as expected.  However, the following calls also return the same value:
array.map_blocks(partial(f, ndim=2), chunks=out_chunks).compute()
# returns array([5, 5, 5])
array.map_blocks(partial(f, ndim=8), chunks=out_chunks).compute()
# returns array([5, 5, 5])

IMO, this attests to dask's powerful ability to recognize what the dimensionality of each chunk should be and correct it.  But oddly, as first reported by @dcherian in #8822 , currently this behavior does not to extend to ndim = 0:
array.map_blocks(partial(f, ndim=0), chunks=out_chunks).compute()
# currently raises a confusing error

This PR fixes this issue allowing the latter to return the same value as in the former cases.  It also fixes the following case, in which the chunk function returns a non-array-like type:
array.map_blocks(lambda x: 5, chunks=out_chunks).compute()
# currently raises a confusing error

allowing map_blocks() to return the same value as in the former cases.

Thanks for writing this up @ParticularMiner! I am going to take a look as soon as possible. I can say right away though that I like the idea of doing what the user expects rather than erroring.

IMO, this attests to dask's powerful ability to recognize what the dimensionality of each chunk should be and correct it.

This is OK but can also be confusing when a user is trying to figure out how to return the right thing. Maybe there should be an opt-in strict mode (default off).

IMO, this attests to dask's powerful ability to recognize what the dimensionality of each chunk should be and correct it.

This is OK but can also be confusing when a user is trying to figure out how to return the right thing. Maybe there should be an opt-in strict mode (default off).

@dcherian can you help me understand what "the right thing" would be in this case? I am pretty convinced that in your original example the right thing is [1., 2., 3.], but maybe I misunderstood something.

I think in the strictest sense, the "right thing" is that the function should return a 1D array because that's what dask expects. So for that example I needed to specify keepdims=True.
The convenient thing is to add/remove dimensions as needed which is what dask does by default.
My point is that it's hard to understand how map_blocks works when the default behaviour is to do the "convenient thing". The following is totally unexpected to me =)
array.map_blocks(partial(f, ndim=8), chunks=out_chunks).compute()
# returns array([5, 5, 5])

To be clear, I think this PR makes sense given dask's  current "convenient behaviour".
For understanding map_blocks, it'd be nice to  have an opt-in strict more. In fact, I am surprised that assert_eq in the tests works though. I thought it did strict checking of shapes per block.

Ah ok that makes sense. It would probably be useful to have a strict config value for dask more generally.

I'm going to wait to merge this until after the release on Friday. I want to make sure to give people time to react.

This is OK but can also be confusing when a user is trying to figure out how to return the right thing. Maybe there should be an opt-in strict mode (default off).

Hmm ... my initial reaction is that this is not a bad idea at all.
Are you proposing something like this?
out = array.map_blocks(partial(f, ndim=8), chunks=out_chunks)
with dask.config.set({"strict_chunk_ndim_check": True}):
    arr2 = out.compute()  # raises an informative error regarding chunk dimensions

This could also be helpful for debugging.  I'll certainly give it some more thought.

Note that I've made changes to this PR so that, @dcherian 's original problem, for example, now raises a ValueError with a more user-friendly error message within the context of the new dask configuration setting "array.computing.check-chunk-ndim", otherwise dask does its thing and no exception is raised.  Is this satisfactory?
import numpy as np
import dask.array as da

array = da.from_array([1, 1, 2, 2, 2, 3, 3, 3, 3, 3], chunks=((2, 3, 5)))
nchunks = len(array.chunks[0])
output_chunks = ([1] * nchunks,)

with dask.config.set({"array.computing.check-chunk-ndim": True}):
    array.map_blocks(np.mean, chunks=output_chunks).compute()  # raises Dimension mismatch error

Error trace log:
Traceback (most recent call last):
  File "C:\Users\heamu\git\dask\dask\array\tests\dcherian.py", line 11, in <module>
    array.map_blocks(np.mean, chunks=output_chunks).compute()
  File "C:\Users\heamu\git\dask\dask\base.py", line 292, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "C:\Users\heamu\git\dask\dask\base.py", line 576, in compute
    return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)])
  File "C:\Users\heamu\git\dask\dask\base.py", line 576, in <listcomp>
    return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)])
  File "C:\Users\heamu\git\dask\dask\array\core.py", line 1215, in finalize
    return concatenate3(results)
  File "C:\Users\heamu\git\dask\dask\array\core.py", line 5091, in concatenate3
    chunks = chunks_from_arrays(arrays, ndim)
  File "C:\Users\heamu\git\dask\dask\array\core.py", line 4878, in chunks_from_arrays
    result.append(tuple(shape(deepfirst(a), expected_ndim)[dim] for a in arrays))
  File "C:\Users\heamu\git\dask\dask\array\core.py", line 4878, in <genexpr>
    result.append(tuple(shape(deepfirst(a), expected_ndim)[dim] for a in arrays))
  File "C:\Users\heamu\git\dask\dask\array\core.py", line 4870, in shape
    raise ValueError(
ValueError: Dimension mismatch: expected chunk ndim = 1. Got instead ndim = 0.

I'm unsure whether using a dask configuration setting is the right way to obtain this behavior though.  An alternative way might be to provide a new keyword argument to dask.array.Array.compute().
What do y'all think?

The other option is to make assert_eq(..., check_chunks=True) stricter:
https://github.com/dask/dask/blob/1b1a96b4ddf31d0879e718be463a731af7f1d086/dask/array/utils.py#L208-L214
That check passes with (unexpectedly to me)
ipdb>  expected_shape
(1,)

ipdb>  chunk.shape
(1, 1, 1, 1, 1, 1, 1, 1)

@dcherian
Good idea.  I've just introduced a new keyword argument check_ndim  for assert_eq() which is True by default.  I just hope it doesn't break any tests in dask.

Seems to have worked!

Thanks for the PR, @ParticularMiner!
@jsignell Thank you for reviewing this! It looks complete, are we good to merge?

Sorry I dropped the ball on this one. Let me look it over one last time.

Sorry for the slowness here. Looking at this with fresh eyes, I don't think this merits a top-level compute kwarg. I know my earlier comments were unclear, but I was imagining a map_blocks kwarg, not a compute kwarg.
That being said I understand the motivation to abstract this to the compute level and if you geel strongly that that is where it goes I definitely prefer the config option approach that you had a few commits back.

No worries @jsignell !
The way I see it, a map_blocks() check_ndims kwarg would have to check the chunk-function output at graph-construction time, which in my opinion goes against dask's modus operandi of delaying the execution of chunk-functions.
Alternatively, map_blocks() could "append" a new built-in chunk function, say check_chunk_ndim(), to the task-graph of the output dask array which will be then be executed at graph-execution time.   (Perhaps, this option is what you're leaning more towards?)

The way I see it, a map_blocks() check_ndims kwarg would have to check the chunk-function output at graph-construction time, which in my opinion goes against dask's modus operandi of delaying the execution of chunk-functions.

Yes that is definitely not a good idea :)

Alternatively, map_blocks(..., check_ndims=True) could "append" a new built-in chunk function, say check_chunk_ndim(), to the task-graph of the output dask array which will be then be executed at graph-execution time. (Perhaps, this option is what you're leaning more towards?)

I had not fully thought through the implementation but I was imagining that this would work roughly how enforce_metadata does on the dask.dataframe side. Basically it wraps the user function and applies some validation after the function is computed.
https://github.com/dask/dask/blob/2115574642af273c244ac4fc372ada9d6e69f931/dask/dataframe/core.py#L6405-L6414

@jsignell
Please see the new diffs.
As promised, I've added a kwarg enforce_ndim which works in a similar way to enforce_metadata for dask.dataframe.map_partitions().

@jsignell
Looks like all tests have passed!
I think your suggestion is much better than either a configuration setting or a compute() kwarg.
I've also retained @dcherian 's suggestion for assert_eq(, check_ndim=True).


Allow accessing details about unprocessed media attachments

I'm adding video upload support to my app. In order to make user experience better for not yet uploaded videos I want to display their previews as soon as they are available. Right now this is impossible because TootSDK returns information other than processing state only when upload fully finishes.
In order to implement this I made following changes:

Changed UploadedMediaAttachment returned by uploadMedia(_:mimeType:) call to be an enum with both possible states and related models available as associated value.
Introduced MediaAttachmentProtocol with information that API returns both for fully uploaded and not yet processed media. This protocol is accessible as mediaAttachment property on UploadedMediaAttachment
Introduced UnprocessedMediaAttachment that has the same properties as MediaAttachment minus url.
Depending on the presence of url property in API response made TootSDK decode proper model.

If someone used uploadMedia before these changes they don't have to change their code. Both state and id that were previously returned are still available as properties of UploadedMediaAttachment.

A couple of thoughts / questions on this:

What stops an app from showing a local preview of the media the user is uploading, regardless of the state of that upload?

Does this work the same for PixelFed / Akkoma etc as well as Mastodon?

What stops an app from showing a local preview of the media the user is uploading, regardless of the state of that upload?

Nothing, sounds like a reasonable thing to do.

Does this work the same for PixelFed / Akkoma etc as well as Mastodon?

In their case upload finishes before they send response response. You'll get the model with url.

I guess I'm thinking;  the dev has the original media, so you can display a preview/thumbnail etc based on that instead of anything the server gives back. If the other server types don't give anything back until the upload finishes then we'd be adding this just for Mastodon.
With these things in mind, I'm not sure this change is necessary?  (I could easily be missing something though!)

Yes you're right. I changed my implementation based on your suggestion and indeed do not need anything more than what was previously available.
 Can't see other use cases now, but perhaps there is something we can't see.

Nice, thank you for the detailed review @Tunous. I think it's best that we close this for now. When we have a specific case to tackle we can revisit the idea.

Yup thank you @Tunous - and I always appreciate your input to the SDK! It’s fine to propose these things even if we end up reaching a different choice in the course of the PR 👍


2x3 Positions

Are there other 2x3 eye positions or just one? I would like to animate eyes like this

I plan more offsets of multiple eyes in a future update. I may have to move some stuff in the current ones.

it looks even better than I expected

https://github.com/IthanMendoza/Fresh-Moves/assets/60312685/dcffaba7-110d-43b7-94f6-688092d82845

more 2x3 will come in future updates