Relocate the 'Powered by Google' logo in MapView to a different part of the MapView

Is this a bug report?
Yes

Have you read the Installation Instructions?
Yes
Environment

Steps to Reproduce

The 'Powered By Google' logo appears in the bottom left of the MapView, but I have a component that floats at the bottom of the MapView. So this 'Powered by Google' logo is hidden, how do I position this logo to a different part of the MapView in order to comply with Google Maps' policy?
Expected Behavior

I thought there would be a prop in MapView which would allow us to select a position for this logo to appear in the MapView
Actual Behavior

A screenshot: https://prnt.sc/it0xsg
As you can see, the 'Powered by Google' logo at the bottom left isn't appearing because a component is covering it
Reproducible Demo

(Paste the link to an example project and exact instructions to reproduce the issue.)

Not sure this will work for Google maps, but please try: legalLabelInsets

@AliSarraf You can set padding to the map. It will change the place of the Google logo to the corner of the padded map, and as an bonus, the center of the map will be adjusting accurately to the visible part of the map !
See the PR here for more detail https://github.com/react-community/react-native-maps/pull/1750 (We could probably add some docs on this one @rborn, the mapPadding property is actually missing from the MapView Docs https://github.com/react-community/react-native-maps/blob/master/docs/mapview.md I'll try find some time to update it)

@julienR2 at the moment I have some busy time, I'll try to add the docs.
Would be interesting to see if we can somehow normalise this between apple and google maps - if needed.
Any thoughts?

I think @codypearce already offered a PR 👍(https://github.com/react-community/react-native-maps/pull/2121)
Good question about Apple logo.. I'll try to investigate a bit to see if it's needed (to be honest I don't even know if the apple logo has to appear on the map to respect the TOC). I'll check it out !

@julienR2  merged #2121 🎉
Can we close this issue or should I wait for you to see the Apple stuff? 🤗
@AliSarraf  see #2121

@rborn Nice ! Thanks 👍
I checked and it is also necessary to let the "legal" label visible on IOS.. But good new is it act as GM, so the label moves with the paddings. So it should be all good already !

I don't think the mapPadding solved the problem of the issue. I'd like to reopen it. It only hides the google logo.

This is the bottomPadding set to 15

Being able to relocate the Google logo would solve literally all the issues. Or just let us hide it and put it there ourselves. That would be super simple to do and we would be able to position it anywhere on the screen with absolute position.
I am totaly stuck on this Google logo thing for a month, because it gets removed when i use bottom padding on Android.

@LukePenkava we cannot touch that, the only way to move it is to use the padding (which seems not to work ?)

@rborn I have to re-render the map to make the Google logo reappear, otherwise it does not show up on Android. If we cant position the Google as we need with absolute position and we cant hide it to show it ourselves, it would be good if it would not require re-render to get it working. Or it should be at least clarified that it needs re-render i think.
Padding is not ideal to move the logo tho, it has limitations. ( Ex. have map centred at top half of the screen and show logo at the bottom of the screen is not possible now )
style={[styles.map, { width: this.state.width }]}
onMapReady={() => this.setState({ width: this.state.width - 1 })}

@LukePenkava my understanding is that the logo cannot be altered in any way other than Google decides. So for now a padding can be set but all the controls will be pushed away from the edge basd on that control
As for the re-rendering I don't know, I didn't have to move that in any of my projects.

I fixed this issue by putting the MapView in a parent View for Android.
Something like this:
<View style={{ ...StyleSheet.absoluteFillObject }}>
  <MapView
    style={{
      ...StyleSheet.absoluteFillObject,
    }}
    mapPadding={{
      top: 0,
      left: 0,
      right: 0,
      bottom: 500,
    }}
  />
</View>

End Result:

@LukePenkava thanks for that trick!


⚠ Jenkins Plugins Artifactory has degraded performance

In 73b235e, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1302 ms

Resolved: Jenkins Plugins Artifactory performance has improved in c777673 after 36 minutes.


SW-1564 Developer owned workflow to expose experimental features, in non-production environments.

This looks great! Thanks for doing it @karthikbtf . One thing, should we change navbar to navigate to accessions2 url when clicking "Accessions" with v2 enabled?

@constanzauanini thanks, yes we should support the v2 accessions page - right now it's an empty page and thought maybe that won't help with testing (no accessions to click on). Just curious, do we need a new accessions 2 page or should we just modify the existing one since the changes aren't much? I have asked a question on https://terraformation.atlassian.net/browse/SW-1281 if the search endpoints will work for both v1 and v2. Thanks for bringing this up.

This looks great! Thanks for doing it @karthikbtf . One thing, should we change navbar to navigate to accessions2 url when clicking "Accessions" with v2 enabled?

@constanzauanini thanks, yes we should support the v2 accessions page - right now it's an empty page and thought maybe that won't help with testing (no accessions to click on). Just curious, do we need a new accessions 2 page or should we just modify the existing one since the changes aren't much? I have asked a question on https://terraformation.atlassian.net/browse/SW-1281 if the search endpoints will work for both v1 and v2. Thanks for bringing this up.

I think it would be easier to modify the current accessions page!

This looks great! Thanks for doing it @karthikbtf . One thing, should we change navbar to navigate to accessions2 url when clicking "Accessions" with v2 enabled?

@constanzauanini thanks, yes we should support the v2 accessions page - right now it's an empty page and thought maybe that won't help with testing (no accessions to click on). Just curious, do we need a new accessions 2 page or should we just modify the existing one since the changes aren't much? I have asked a question on https://terraformation.atlassian.net/browse/SW-1281 if the search endpoints will work for both v1 and v2. Thanks for bringing this up.

I think it would be easier to modify the current accessions page!

I agree, we can plan on that :)


OP-1913: testing new repo

This adds the new repo steps for test packages. Right now it will go to my test repo but I will switch it over to prod once I confirm it works as expected.

bors r+


fatal error: 'eosiolib/eosio.hpp' file not found on current docker eosio/builder

I'm trying to use eosiocpp in the current eosio/builder image built from the Dockerfile but I can't, I also tried to fix it manually but some hpp are still not found
# eosiocpp -o hello.wast hello.cpp
hello.cpp:1:10: fatal error: 'eosiolib/eosio.hpp' file not found
#include <eosiolib/eosio.hpp>
         ^~~~~~~~~~~~~~~~~~~~
1 error generated.

root@a0818a32b226:/contracts/hello# eosiocpp.fix -o hello.wast hello.cpp
In file included from hello.cpp:1:
In file included from /contracts/eosiolib/eosio.hpp:6:
In file included from /contracts/eosiolib/types.hpp:7:
In file included from /contracts/libc++/upstream/include/functional:484:
In file included from /contracts/libc++/upstream/include/type_traits:390:
/contracts/libc++/upstream/include/cstddef:44:15: fatal error: 'stddef.h' file not found
#include_next <stddef.h>
              ^~~~~~~~~~
1 error generated.

eosio/builder:latest now has all the required tools/libraries to compile contracts. I just tested using the hello contract. If you run into any other problems, please feel free to open additional issues.

My solution for the err: https://github.com/EOSIO/eos/issues/4105#issuecomment-400929571

you can rewrite eosiocpp as me.
EOSIO_BIN_INSTALL_DIR=dirname $0
is very bad.
you can hardcoding as this
#!/bin/bash
#EOSIO_BIN_INSTALL_DIR=dirname $0
#if [ "${EOSIO_BIN_INSTALL_DIR}" == "." ]; then
#EOSIO_BIN_INSTALL_DIR=pwd
#fi
#EOSIO_INSTALL_DIR=dirname ${EOSIO_BIN_INSTALL_DIR}
EOSIO_INSTALL_DIR="/XXXXXXX/XXXX/eos"

#!/bin/bash

#EOSIO_BIN_INSTALL_DIR=`dirname $0`
#if [ "${EOSIO_BIN_INSTALL_DIR}" == "." ]; then
#  EOSIO_BIN_INSTALL_DIR=`pwd`
#fi
#EOSIO_INSTALL_DIR=`dirname ${EOSIO_BIN_INSTALL_DIR}`
EOSIO_INSTALL_DIR="/home/yaoyh/app/eos"

echo $EOSIO_INSTALL_DIR

ABIGEN=${EOSIO_INSTALL_DIR}/bin/eosio-abigen
BOOST_INCLUDE_DIR=/home/yaoyh/opt/boost/include
function copy_skeleton {
    set -e
#    cp -r "${EOSIO_INSTALL_DIR}/share/eosio/skeleton/." $newname
    cp -r "${EOSIO_INSTALL_DIR}/contracts/skeleton/." $newname

    for file in $(find ./$newname -name 'skeleton.*')
    do
        newfile=`echo $file | sed 's/skeleton\./'"$newname"'./'`
#        echo mv "${file}" "${newfile}"
        mv "${file}" "${newfile}"
        exp=s/skeleton/${newname}/g
#        echo sed -i ${exp}  ${newfile}
        sed ${exp}  ${newfile} > ${newfile}1
        mv ${newfile}1 ${newfile}
    done
    echo "created $newname from skeleton"
    set +e
}

function build_contract {
    set -e
    workdir=`mktemp -d`

    if [[ ${VERBOSE} == "1" ]]; then
       PRINT_CMDS="set -x"
    fi

    ($PRINT_CMDS; mkdir $workdir/built)

    for file in $@; do
        name=`basename $file`
        filePath=`dirname $file`

        ($PRINT_CMDS; /home/yaoyh/opt/wasm/bin/clang -emit-llvm -O3 --std=c++14 --target=wasm32 -nostdinc \
                                   -DBOOST_DISABLE_ASSERTS -DBOOST_EXCEPTION_DISABLE \
                                   -nostdlib -nostdlibinc -ffreestanding -nostdlib -fno-threadsafe-statics -fno-rtti \
                                   -fno-exceptions -I ${EOSIO_INSTALL_DIR}/include \
                                   -I${EOSIO_INSTALL_DIR}/contracts/libc++/upstream/include \
                                   -I${EOSIO_INSTALL_DIR}/contracts/musl/upstream/include \
                                   -I${BOOST_INCLUDE_DIR} \
                                   -I $filePath \
                                   -I${EOSIO_INSTALL_DIR}/contracts \
                                   -I${EOSIO_INSTALL_DIR}/externals/magic_get/include \
                                   ${EOSIOCPP_CFLAGS} \
                                   -c $file -o $workdir/built/$name
        )

    done

    ($PRINT_CMDS; /home/yaoyh/opt/wasm/bin/llvm-link -only-needed -o $workdir/linked.bc $workdir/built/* \
                                   ${EOSIO_INSTALL_DIR}/build/contracts/eosiolib/eosiolib.bc \
                                   ${EOSIO_INSTALL_DIR}/build/contracts/libc++/libc++.bc \
                                   ${EOSIO_INSTALL_DIR}/build/contracts/musl/libc.bc

    )
    ($PRINT_CMDS; /home/yaoyh/opt/wasm/bin/llc -thread-model=single --asm-verbose=false -o $workdir/assembly.s $workdir/linked.bc)
    ($PRINT_CMDS; ${EOSIO_INSTALL_DIR}/build/externals/binaryen/bin/eosio-s2wasm -o $outname -s 16384 $workdir/assembly.s)
    ($PRINT_CMDS; ${EOSIO_INSTALL_DIR}/build/libraries/wasm-jit/Source/Programs/eosio-wast2wasm $outname ${outname%.*}.wasm -n)

    ($PRINT_CMDS; rm -rf $workdir)
    set +e
}

function generate_abi {

    if [[ ! -e "$1" ]]; then
        echo "You must specify a file"
        exit 1
    fi

    context_folder=$(cd "$(dirname "$1")" ; pwd -P)

    ${ABIGEN} -extra-arg=-c -extra-arg=--std=c++14 -extra-arg=--target=wasm32 \
        -extra-arg=-nostdinc -extra-arg=-nostdinc++ -extra-arg=-DABIGEN \
        -extra-arg=-I${EOSIO_INSTALL_DIR}/include/libc++/upstream/include \
        -extra-arg=-I${EOSIO_INSTALL_DIR}/include/musl/upstream/include \
        -extra-arg=-I${BOOST_INCLUDE_DIR} \
        -extra-arg=${EOSIOCPP_CFLAGS}  \
        -extra-arg=-I${EOSIO_INSTALL_DIR}/include -extra-arg=-I$context_folder \
        -extra-arg=-fparse-all-comments -destination-file=${outname} -verbose=0 \
        -context=$context_folder $1 --

    if [ "$?" -ne 0 ]; then
        exit 1
    fi

    echo "Generated ${outname} ..."
}

function print_help {
    echo "Usage: $0 -o output.wast contract.cpp [other.cpp ...]"
    echo "       OR"
    echo "       $0 -n mycontract"
    echo "       OR"
    echo "       $0 -g contract.abi types.hpp"
    echo
    echo "Options:"
    echo "   -n | --newcontract [name]"
    echo "      Create a new contract in the [name] folder, based on the example contract"
    echo "   OR"
    echo "   -o | --outname [output.wast] [input.cpp ...]"
    echo "      Generate the wast output file based on input cpp files"
    echo "      The wasm output will also be created as output.wasm"
    echo "   OR"
    echo "   -g | --genabi contract.abi types.hpp"
    echo "      Generate the ABI specification file [EXPERIMENTAL]"
}

command=""

while [[ $# -gt 1 ]]
do
key="$1"

case $key in
    -h|--help)
        print_help
        break;
        ;;
    -n|--newcontract)
        newname="$2"
        command="newcontract"
        shift 2
        break
        ;;
    -o|--outname)
        outname="$2"
        command="outname"
        shift 2
        break
        ;;
    -g|--genabi)
        outname="$2"
        command="genabi"
        shift 2
        ;;
    *)
        echo "Unrecognized option: $1"
        exit 1
        ;;
esac
done

if [[ "outname" == "$command" ]]; then
    build_contract $@
elif [[ "newcontract" == "$command" ]]; then
    copy_skeleton
elif [[ "genabi" == "$command" ]]; then
    generate_abi $@
else
    print_help
    exit 1
fi


How Create new tables?

Hi! First congratulations for the project.
I would like to know how do I create new tables in the database. Can I use the same console?

Hi. Database related files are located in the bootstrap/database/ folder. To create new tables, I suggest you look into the auth.php file where I'm creating the tables for the authentication feature.
You can put your new tables in it or create a new file (and add it to index.php) and create tables with eloquent's Manager::schema()->create(); method. Don't forget to add the created tables in drop.php to remove them before creating them.
To run the script, just run php console db in a terminal


Crash on OS X when using Excelsior Jet AND when gamepad is connected

Hi,
I have a rather specific issue, which might be known to someone: I "packed" my game with the evaluation version of Excelsior Jet 10.5 for OS X.
The  game runs fine unless I connect my gamepad to the mac. When starting the game with a gamepad connected, the game crashes right at the start with a "pointer freed, but not allocated" problem.
When running the game on the very same configuration with "java -jar ..." (that is, no JET) it works fine - no matter if a gamepad is connected or not.
Is there anybody experiencing the same issue?
Thank you!

Since it works under normal usage circumstances, this doesn't appear to be a libgdx issue.
Also, this type of question is better suited for the forum or irc than the issue tracker.

Hello!
You have a new message, please read http://lixusapps.com/plant.php?imlq1
<EMAIL_ADDRESS>


🪲Bug report: Overwriting HTTP methods when using two decorators.

📜 Description of the problem:
When applying two HTTP decorators to a controller method, there is no exception thrown that would indicate that the method is already registered as an HTTP method.
👎 Actual behavior:
There are no reports that the HTTP method parameters have been overwritten.
👍 Expected behavior:
Calling an exception that would report an attempt to use multiple HTTP decorators for a controller method.
🕵 To Reproduce:
This is a sample code that demonstrates this:
import { Controller, Get, Post } from '@wambata/express-decorator';

@Controller('/')
export default class Foo
{
   @Get('/')
   @Post('/')
   async public bar () {
      // some logic ...
   }
}

Roadmap for solving the problem:

[ ] Writing a test to cover this problem,
[ ] Extension of the logic of the supplied Storage class for checking registered HTTP methods.


"23 August" is listed in the drop-down menu

Description:
When user writes "23 August" the location appears in the drop-down menu next to the comune and the county witch is a part according to the law
Precondition:
The website is up an running.

Step 1
Write in the search bar "23 August"

Expected results
The location appears in the drop-down menu as "Comuna 23 August, CONSTANȚA"

ENVIROMENT: production
URL: https://peviitor-ro.github.io/ui.orase/
Browser: Chrome
Device: PC
OS: Windows 10
STEPS TO REPRODUCE:

Open ### URL in browser
Type "23 August" in the search bar
The search drop-down menu will open
Check the name of the city written in the search bar

EXPECTED RESULTS:
The location is written in the search bar as "23 August".
ACTUAL RESULTS:
The location is written in the search bar as "August". Can`t type any numbers.

Fixed! Poti sa retestezi


Conflicting types for inet_ntop

I am trying to compile luasocket with Msys2 mingw32. When I run make I get this error message:
src\inet.h:48:13: error: conflicting types for 'inet_ntop'
48 | const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
  |             ^~~~~~~~~
In file included from src\wsocket.h:12,
             from src\socket.h:18,
             from src\inet.h:18,
             from src\luasocket.c:20:
C:/msys64/mingw32/i686-w64-mingw32/include/ws2tcpip.h:451:35: note: previous declaration of 'inet_ntop' was here
451 | WINSOCK_API_LINKAGE LPCSTR WSAAPI InetNtopA(INT Family, LPCVOID pAddr, LPSTR pStringBuf, size_t StringBufSize);

ws2tcpip is included in inet.h file.
If I remove the compile option LUASOCKET_INET_PTON then it compiles fine.

If I remove the compile option LUASOCKET_INET_PTON then it compiles fine.

I see in src/makefile that this flag is added specifically for mingw builds.  So, presumably, at some point it was required for most (if not all) installations of mingw.  Can you help us determine for which targets it might no longer be appropriate?
I'd be inclined to remove it if your situation is the common mingw case now.  That would fix it for the current users, while letting others add -DLUASOCKET_INET_PTON at the command line if needed.
Thoughts invited.

I have been compiling luasocket from the repository for a few years now. It used to work with that option before but now I tried after a few months I suppose and I started getting this error.
Both functions defined in the #ifdef LUASOCKET_INET_PTON  - inet_ntop and inet_pton seem to be already present in the ws2tcpip.h file in mingw. Also in the microsoft documentation https://docs.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-inet_pton it seems they are defined there properly. So I think removing it seems reasonable.

Removal propsed in #300

See discussion here for why this was introduced:
https://github.com/diegonehab/luasocket/pull/39
Turns out these functions were only introduced in Vista and Win2k8. God knows if anybody still uses anything older than that.

Interesting!  Isn't that all the more reason to remove it for the default case now, while still allowing those needing it to add -DLUASOCKET_INET_PTON?

Indeed!

Closing now that #300 has been merged with the discussed change.


Double temperature still shows in the terminal tab

Although I'm getting great prints, my Ender 3 V2 still seems to be reporting double. I'm getting no more error warnings at startup though.
Just an example-
Recv:   TT::200.00200.00  //200.00200.00  BB::50.0050.00  //50.0050.00  @@::9393  BB@@::2222

I came here to report the same. Actually, the plugin seems to be working on the internal string, which means the "Temperature" tab now works properly, but the "Terminal" tab is still showing the incorrect temperature strings.
It also means "Suppress temperature messages" on that tab doesn't work, so it's incredibly noisy to work with.
I would like to see this plugin work to fix the string there, too, so that I don't have to change the regex in the settings, which is actually what I came here looking for (because I hate figuring out complex regex by myself).

TIL you can just add new filters without overwriting existing ones. In my case, I just added a new, temporary "Suppress buggy temperature messages" filter with the simple regex (Send: (N\d+\s+)?M105)|(Recv:\s+TT::.*)
It doesn't solve the issue, but until I get around to making a new Marlin without the bug, it will at least keep my terminal a bit less noisy.

Ok, that's good to know I'm not the only one then...
I'll give that a go with the temp filter, thanks for the tip.

Just to clarify to anyone else reading this; the plugin works, and does what it's supposed to do, but as the "terminal" tab shows the raw content it gets from the printer, it still look weird in the GCODE terminal, also resulting in the "suppress temperature" feature not working.
I had not thought of the suppress feature, so I'll see what I can do about that :)

Ya, that's the title I meant to write, Albert! lol.
I applied the filter successfully, thanks balthisar.

After having to rebuild Octopi, my terminal in Octoprint now shows the temperature normally and I'm able to use "suppress temperature". Thanks for the help.

After having to rebuild Octopi, my terminal in Octoprint now shows the temperature normally and I'm able to use "suppress temperature". Thanks for the help.

I'm sorry I do not know much but I am having this same problem with the plugin and I was wondering what you meant by "rebuild octopi"
Thanks.

After having to rebuild Octopi, my terminal in Octoprint now shows the temperature normally and I'm able to use "suppress temperature". Thanks for the help.

I'm sorry I do not know much but I am having this same problem with the plugin and I was wondering what you meant by "rebuild octopi"
Thanks.

No worries. I had a problem where Octoprint was unresponsive, so I reformatted my sd card for the raspberry pi and reinstalled Octopi. I'm using Creality Temperature (1.2.4) plugin and Creality-2x-temperature-reporting-fix (0.0.4) plugin.

No worries. I had a problem where Octoprint was unresponsive, so I reformatted my sd card for the raspberry pi and reinstalled Octopi. I'm using Creality Temperature (1.2.4) plugin and Creality-2x-temperature-reporting-fix (0.0.4) plugin.


[PDI-19480] : Zip file step- Subdirectories are not moved when a dire…

…ctory is specified in Source directory/file and Include sub-folders is Y

:x: Build failed in 3m 40s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:exclamation: No tests found!
Errors:
Filtered log (click to expand)

script returned exit code 1

:information_source:  This is an automatic message


Implement GitHub PR Issue Checker Workflow

FIX #45
Usage:

When a pull request is created or edited, the workflow automatically triggers.

The workflow checks for:

A non-empty PR description.
A valid issue reference format (FIX #<issue-number> or FEAT, or DOC #NEW).

If either check fails, the PR will be marked as failing, and the author will receive clear error messages in the PR comments.
If all checks pass, a confirmation message will indicate that the PR is valid.

Note: Kindly add all the labels added to the issue, to this PR!
@vansh-codes

Can you please upgrade it to level2 ? @vansh-codes

Do the same modification here as I suggested in different repo/project

Change the word FIX in the description to FIXES

can you make this one level2?? the other one is duplicated!! @vansh-codes

please make it level2 please 😞

Sorry buddy! 57 lines of code cant be assigned level 2

Change the word FIX in the description to FIXES

Do this change asap

Change the word FIX in the description to FIXES

Do this change asap

Done!

Done! merge it! @vansh-codes


Junit test update

Refactored the test codes within the unit tests such that they are now checking our implementation of Travelr.
Some of the tests will fail with current code, let us patch them in future commits.

Thanks for adding and refactoring these unit tests.


Update servicenow-tutorial.md

The target for SSO is 'consumer.do' not 'customer.do'

@jeevansd

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Sorry, this is a minor thing but I still should have backed this up with some evidence:
https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0725735
https://docs.servicenow.com/en-US/bundle/utah-platform-security/page/integrate/single-sign-on/task/t_CreateUpdateIdentityProvider.html
https://www.servicenow.com/community/itsm-articles/configuring-sso/ta-p/2312770

@atcwells, creating a separate PR for your changes in our private repo for better content validation, the changes will publish within 2-3 days.
#please-close


Performance Improvement: DatePicker (and maybe more)

OpenUI5 version: Latest
URL (minimal example if possible): https://plnkr.co/edit/61QM2RaxaAHyG4xO
Steps to reproduce the problem:

Open Sample
Scroll through the Grid-Table (sap.ui.table.Table)
Notice that the context binding time ( time used by sap.ui.table.rowmodes.RowMode.updateTableRows) is at around 40ms, which is getting applied at every single row count. Scrolling is not very smooth.
Press button "Overwrite DatePicker" (overwrites DatePicker.invalidate with a more optimized version) --> Notice that time goes down to 10-20 ms --> Scrolling is smoother (still not perfect)

Additional Information:
When normaly scrolling through the page and doing a performance review in chrome you notice a slow response by a single function:

zoom in:

Reason for this performance issue is the usage of setTimeout in the invalidate function. setTimeout is a pretty "costy" statement (depending on browser etc it takes around 0.2 up to 2ms for adding a job to the event queue of the browser). If there are a lot fo DatePickers this noticeably decreases the rendering time.

As a very simply solution I would personally suggest to either only trigger the setTimeout of the calander is open (as otherwise nothing is happening anyways), or make a simple "timeout Handler" (see demo), which only calls setTimeout once, and in there calls the timeout function for all instances of the DatePicker.
I would personally go for the second solution, as this one could be applied at all places where you are calling setTimeout (0) without actually needing an own call-stack (so probably all control instances.).
Note: I didn't check if there are any other controls which are calling timeouts inside a rendering, onAfterRendering/onBeforeREndering or invalidate method..
BR,
Timo

Closing issue, as the very slow opening of timeouts apperantly only occurs if dev-tools are open..

Exactly.
We also encountered this problem several times now in our internal performance analyses, invested efforts to reduce the setTimeout/clearTimeout calls, had been happy with the results in the dev tools and then wondered why perceived performance didn't change :-(
Meanwhile, we first cross-check with elapsed time measurements (performance.now()) whether we just see a measurement artefact or whether there's a real problem.
What surprised me a bit when we encounter it last time was that this problem seems not to be discussed in the Web.

Anyhow, thank you for the detailed and well explained report. Appreciated!

@codeworrior : Yes, this performance drops while having the dev console open is really annoying.
In one of my projects we have a very large table with a few common controls (DatePicker, Text, ComboBox.. very simple controls). As the scrolling is pretty "laggy" I try to find some optimizations inside the UI5 core to speed up the rendering. The problem is that the timeouts are really wasting the performance trace and make them unreadable (really unbelievable that there is nthg about it in stackoverflow...).
Anyhow, i wrote a minimal script, which is overwriting window.setTimeout (with timeout 0 calls), which can be used while performance tracing. Works pretty nice. Basically instead of fireing 1.000 isolated window.setTimeout calls, all "0" timeout calls are bundeled into one handler.. I am pasting the code here, if it is too any use for you.
`
_overwriteTimeoutHandler: function () {
var timeoutId = null,
timeouts = [],
timeoutIds = {},
globalTimeoutId = 0,
_origTimeoutHandler = window.setTimeout,
_origClearTimeoutHandler = window.clearTimeout;
		window.setTimeout = function (fn, time) {
			if (time > 0) {
				return _origTimeoutHandler.apply(this, arguments);
			}

			/* customt timeout handlers.. */
			if (!timeoutId) {
				timeoutId = _origTimeoutHandler.apply(window, [function () {
					timeoutId = null;
					for (var i = 0; i < timeouts.length; i++) {
						if (!timeouts[i]) {
							continue;
						}
						try {
							timeouts[i].fn.apply(timeouts[i].that, []);
						} catch (err) {};
					}
					timeouts = [];
				}, 0]);
			}

			var sNewId = globalTimeoutId;
			timeouts.push({
				fn: fn,
				id: sNewId,
				that: this
			});
			timeoutIds[sNewId] = timeouts.length - 1;
			globalTimeoutId++;

			return sNewId;
		};

		window.clearTimeout = function (id) {
			if (typeof timeoutIds[id] === "undefined") {
				return _origClearTimeoutHandler.apply(this, arguments);
			}
			if (typeof timeoutIds[id] === "undefined") {
				return;
			}
			timeouts[timeoutIds[id]] = null;
		};
	},

`


Use "duration-ms" instead of "duration"

In profile methods, actually a property "duration" is added:
"duration": "100ms"

In kibana or other log analyzer tool, a string is not very practical, so I propose to replace it with:
"duration-ms": 100

What do you think ? I can make a PR but before I want to know first if you like this idea. If you are OK, should I remove the "duration" field or not ?

This should be closed isn't it ?

Yes. Thanks!


Less libc use, use slices instead of vectors

Thank you for this suggestion. Can you divide your PR into 2?

Sure I can do so

Done


Future Sandstorm platform change will impact draw.io

Preflight Checklist

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Describe the bug
I am filing issues to notify of future breaking changes. Specifically, client-side loading of external scripts is blocked in the following PR: sandstorm-io/sandstorm#3409
It seems in testing that draw.io loads MathJax from a CDN (at least, as of the last Sandstorm release), so rendering of mathematical formulas might be broken after this security change. We're aware the Sandstorm package is very out of date and not presently actively supported by JGraph, though I thought we should let you know.
I also thought you might want to know there is some community interest in updating this package: https://groups.google.com/forum/#!topic/sandstorm-dev/OIseYP24pBI
I actually notice that the MathJax JS file appears to have been added to this repo, so I'm guessing that an updated version of the package might alleviate this inherently.

I'll close this issue and answer on the GG thread.


1199282 - ms.topic update

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

windows-iotcore/index.md
:white_check_mark:Succeeded

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

#sign-off Production 1199282

Hi @cmcclister, a hyphen will break the page, so I will close this PR.


Added countries in pt_BR lang, translated from en.

IMPORTANT: Please do not create a Pull Request without creating an issue first.
Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.
Please fill in all placeholders --> [Placeholder]
Pull Request [Added countries in pt_BR resources/lang folder]
I added a new folder in resources/lang, which is the pt_BR and added a new countries.php file, that was translated from en.
Please tell us , the type of Change you are submiting:
Select one of the following:

[ ] Bug
[X] Feature
[ ] Minor Change

Does it fix an existing issue? Please tell us which one
Maybe helps with issue #5 .
Description of what's been changed
Not sure if you want a pt_BR translation, but if you do here it is.
Results of your tests (If applicable)
No tests, just added a new countries.php file.

Can you rename the folder to the 2-letter code? And then run trans:publish [2-letter-country code] --force

Tip for next time: name folder like pt**-BR instead of pt_**BR


Setup sphinx build and readthedocs deployment.

Setup up the basics to build the docs with sphinx and sphinx-gallery, and setup the readthedocs connection.

A basic build is now setup and the docs are available under RDT: https://skops.readthedocs.io/en/latest/


Ambercon site shows incorrect dates

Several east coast folk have reported that the dates for acus are off by a day while they look correct to me.  I assume that this is a time zone issue.

Mmmm, wonder if it shows off by a day around the 3 hour time difference?

fixed by https://github.com/ggascoigne/amber/pull/146

Does it address #133 as well?

I'm sure it does. Should have looked for an issue before creating a new one.

Eh, if I get the reg and game submission up, enough people across timezones will look at it and see if we can close that one as well.  :-)

I was just looking to update dates on ambercon.com, in the vague hope to get it sorted before I fly out to Vancouver tomorrow at 3pm and noted that for the 2024 dates, in Settings, under Configuration there is conventionStartDate and under Start Dates there is  2024.date.
The former is 3/14/2024, the latter 3/15/2024. It seems the latter can't ever by right (it's the Friday), and I haven't traced where it comes from.

... but it works, so I'm not going to worry about it.

The config.startDates entries are also duplicated for good measure. I'd better clean that up.


Better information in character subtitle

Right now the subtitle in the character view is just a truncated DM note. I think an "Edited at" would be better.

On second thought, I don't really mind this. I'll leave it to see how it's used in practice to see what info would actually be useful here.


is it also working with refs/tags/

AFAIK this service currently works with commits only ...
what about making this service work with tags in the way, that the latest Archive will be downloaded, when a new tag was created on github side ...
Usually when you create a new tag on github then an new Archive (tar.gz) is automatically created. So this service should be able to get the latest Archive and update the package on obs .... when getting a trigger from github ...

Hey. Sorry. I am not working on this project any more. You might have better luck with opening this issue in the openSUSE fork.


The predicted 'viral' number in 'vambbins_RF_predictions.txt' is inconsistent with the actual number in 'vamb_bins.1.fna'?

Hi !
why 'resultdir/vambbins_RF_predictions.txt' label is ‘viral’ and 'resultsdir/vamb_bins/vamb_bins.1.fna' sequence nums is unequal?
thanks !

Hi Chao
If you can provide some example of what your data looks like it would be much easier to help you out.
Best, Joachim

Hi,
I encountered the same issue. Below are example result files I used for testing.
The FASTA file is large, and I am unable to directly upload it to GitHub. If it is necessary, please provide me with your email address.
thank you!
vambbins_RF_predictions.txt
vambbins_aggregated_annotation.txt


Weird parsing of unicode characters

Given the following JSON:
{
  "errors": [
    {
      "message": "Argument \u0022input\u0022 has an invalid value: ...."
    }
  ]
}

(for some reason a mink driver is returning this instead of \"...)
With json_decode() you will get:
{#4
  +"errors": array:1 [
    0 => {#5
      +"message": "Argument "input" has an invalid value: ...."
    }
  ]
}

However with JsonParser you will get:
{#17
  +"errors": array:1 [
    0 => {#16
      +"message": "Argument "input" has an invalid value: ...."
    }
  ]
}

Any idea of how this could be fixed?

Looks like possibly a bug in https://github.com/Seldaek/jsonlint/blob/master/src/Seld/JsonLint/JsonParser.php#L471 - have a look?

Will try, thanks for the pointer

For my future self, might be of some help: https://github.com/zaach/jsonlint/pull/54


Cleanups and Fixes

What does this PR do?
A brief description of the change being made with this pull request.
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Make sure you discussed the feature or bugfix with the maintaining team in an Issue
[ ] Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

Codecov Report

Merging #434 (97c6d4e) into master (4c1d892) will increase coverage by 0.32%.
The diff coverage is n/a.


[Suggestion] Multi-threaded searching with multiple PTC accounts

There's a mobile app that does this, and it dramatically speeds up scan times.
Also, I would love to see multiple scan sites, like one for home and one for work.
Oh, and app auto-updates would be nice!
Thanks so much for this - it's a great app!

NAME

Yes that would be great. Now scanning is too slow.
What mobile app are you talking about @TheRadGasm?

yep prefer this too

https://github.com/PokeGoRadar/pokegoradar does this for example


Set default repo

If a repo is not provided, I think we should assume its the repo that the script is being run in. If a repo is not provided lets grab the repo information from the current working directory.

Will be closed with #9

This will read the git repo name if you want it:
git-repo-name

On second thought I dont know if this "default" belongs inside this API.


refactor: Fixed typos and rephrased a few sections

This PR is aligned with #20
Do let me know your feedback.

Thanks for your contributions. :grinning:


Allow query string parameters to be appended to request

I've been attempting to write tests against controller methods with query string parameters. I can safely hit those endpoints through something like Postman when the app is started, but I cannot hit them in any way that I could find using Alba.
Here's an example of failing tests:
Invoking Input with a string - results in 204
[Fact]
public Task returns_successfully_when_passed_input_as_query_string()
{
    return run(_ =>
    {
        _.Get.Input("value");
        _.Get.Url("/query-string");
    });
}

Invoking Input with an object - results in 204
[Fact]
public Task returns_successfully_when_passed_input_as_query_string()
{
    return run(_ =>
    {
        _.Get.Input(new { test = "value" });
        _.Get.Url("/query-string");
    });
}

Invoking Url with the query string parameter appended - results in 404:
[Fact]
public Task returns_successfully_when_passed_input_as_query_string()
{
    return run(_ =>
    {
        _.Get.Url("/query-string?test=value");
    });
}

This PR is an attempt to try and add the capability to append query string parameters to the request.
Here's an example of the usage that I've come up with.
[Fact]
public Task can_send_querystring_parameters()
{
    return run(_ =>
    {
        _.Get.QueryString("test", "value");
        _.Get.Url("/query-string");
    });
}

However, I'm not sure why the code I've written doesn't work. It isn't setting any values in the QueryString collection at all and I don't know why.
Is this a use case worth solving for? it's possible to write tests that invoke the controller method directly.

I've added all of the tests I noted above to specs_against_aspnet_core_app.cs in a separate commit that I can get rid of later.

👍  Could add an overload that takes a class, like the FormData method.
public SendExpression QueryString<T>(T target)
{
    typeof(T).GetProperties().Where(x => x.CanWrite && x.CanRead).Each(prop =>
    {
        var rawValue = prop.GetValue(target, null);

        Context.Request.QueryString.Add(prop.Name, rawValue?.ToString() ?? string.Empty);
    });

    // fields too?

    return new SendExpression(Context);
}

_.Get.QueryString(new { test = "value" }).ToUrl("/query-string");

// kind of liking `With`
_.Get.WithQueryString(new { test = "value" }).ToUrl("/query-string");

Interesting thought, it would be worth adding just to account for endpoint methods with more args.  I can add that once I figure out why the initial method I've added doesn't seem to work.

Pulled in w/ a rebase


Fix Index._with_new_scol to update its anchor.

As discussed at https://github.com/databricks/koalas/pull/1328#discussion_r388681347, we can consolidate the Index.repeat() and MultiIndex.repeat() by updating its anchor with a new scol.
Also resolves #1190 and other functions which were mistakenly using index_scols in Index, whose usage is valid now.

Codecov Report

Merging #1334 into master will decrease coverage by 2.29%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master    #1334     +/-   ##
=========================================
- Coverage   95.25%   92.96%   -2.3%
=========================================
  Files          34       34
  Lines        7401     7422     +21
=========================================
- Hits         7050     6900    -150
- Misses        351      522    +171

Impacted Files
Coverage Δ

databricks/koalas/series.py
96.73% <ø> (ø)
:arrow_up:

databricks/koalas/indexing.py
95.27% <ø> (-0.56%)
:arrow_down:

databricks/koalas/indexes.py
96.16% <100%> (-0.35%)
:arrow_down:

databricks/koalas/usage_logging/__init__.py
26.12% <0%> (-69.37%)
:arrow_down:

databricks/koalas/usage_logging/usage_logger.py
50% <0%> (-50%)
:arrow_down:

databricks/koalas/missing/series.py
71.42% <0%> (-28.58%)
:arrow_down:

databricks/koalas/missing/frame.py
81.7% <0%> (-18.3%)
:arrow_down:

databricks/koalas/missing/indexes.py
88.8% <0%> (-11.2%)
:arrow_down:

databricks/koalas/__init__.py
91.48% <0%> (-2.13%)
:arrow_down:

databricks/conftest.py
94.33% <0%> (-1.89%)
:arrow_down:

... and 6 more

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 699d6ca...ac58a87. Read the comment docs.


onTap callback

@Foxandxss Now is better :)

Will play with it before I decide to release the 1.5.0.

This got merged.


HIVE-28537: Iceberg: allow only partition columns in the WHERE clause

Change-Id: Ic85efd70599413cdb96073c6cb50690fbc1c11b0

What changes were proposed in this pull request?
Limiting the columns in where clause in compaction to partition columns.
Why are the changes needed?
Currently Hive Iceberg compaction supports any columns in the WHERE clause predicate. However, compaction happens only on partition level. Performance can be improved if the columns in WHERE clause predicate will be limited to partition columns.
Does this PR introduce any user-facing change?
Yes, user will get an exception if uses non partition columns in alter table compaction query.
Is the change a dependency upgrade?
No.
How was this patch tested?
With qtest.

+1, Looks good to me.
Added a few minor formatting comments.
There is also a q-test failure iceberg_major_compaction_partition_evolution_w_id_spec_w_filter
The test needs to be adjusted for these code changes.

please address https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=5483&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true

@deniskuzZ thanks for the review! Please check the modifications!


The app closes when I try to enable the camera on ios - Flutter 3.7.8

I'm using version 3.7.8 of flutter and version 3.1.1 of mobile_scanner.
If the user, for some reason, denies access permissions to the camera and later enters the settings to enable it, it will be closed.
This is my implementation to try to solve the problem:

This is the message that appears on the console:

Thanks if you can help me with the resolution or a way to get past this!

I also have this problem on iOS.
On android it works fine, but if I deny permission on ios, when I go to the settings and enable it, the app closes!

Hello, this is actually an intended behavior for all applications on iOS. Whenever making changes to the privacy/permission settings for an application that application is being closed by the OS intentionally.
By the way, this also happens when changing the system language. Although in this case all applications will be closed.


Use local LLMs

Hi, Thanks for this amazing framework
I would like to know is there any support for using locally trained LLMs, I see that currently we can change the LLM with Langchain, but I don't want to use langchain and use a local LLM like Llama 2

Hey @seanbenhur! We're glad you like it 😊
how are you planning to use Llama2? I would recommend using via langchain because there is a lot of support for it in the community something like this could help Llama 2 in LangChain — FIRST Open Source Conversational Agent! - YouTube
but let me know if that is not what you have in mind. Also, why are you trying to move away from langchain?

Thanks for the prompt response, I was thinking of using Llama without langchain since I feel langchain is an extra dependency for the project

got it. Unfortunately, that is not possible right now and we don't plan to add it to the roadmap. There is also another issue which is that we have not tested Llama2's performance for evaluation so we wouldn't recommend using it for evaluation in critical applications.
hope you understand...

Sure No problems!
I tried to use Llama with Langchain without using OpenAI, but now I am getting error since I didn't pass the OAI key on the importing stage itself
`ValidationError                           Traceback (most recent call last)
Cell In[39], line 6
      4 import torch
      5 from langchain.llms import HuggingFacePipeline
----> 6 from ragas.metrics import Faithfulness
      9 DATASET_PATH = "explodinggradients/ragas-wikiqa"
     10 MODEL_PATH = "llama-2-7b-chat-hf"

File ~/.local/lib/python3.8/site-packages/ragas/__init__.py:1
----> 1 from ragas.evaluation import evaluate
      3 try:
      4     from ._version import version as __version__

File ~/.local/lib/python3.8/site-packages/ragas/evaluation.py:9
      6 from datasets import Dataset, concatenate_datasets
      8 from ragas._analytics import EvaluationEvent, track
----> 9 from ragas.metrics.base import Metric
     10 from ragas.metrics.critique import AspectCritique
     11 from ragas.validation import validate_column_dtypes, validate_evaluation_modes

File ~/.local/lib/python3.8/site-packages/ragas/metrics/__init__.py:2
      1 from ragas.metrics.answer_relevance import AnswerRelevancy, answer_relevancy
----> 2 from ragas.metrics.context_relevance import ContextRelevancy, context_relevancy
      3 from ragas.metrics.critique import AspectCritique
      4 from ragas.metrics.faithfulnes import Faithfulness, faithfulness

File ~/.local/lib/python3.8/site-packages/ragas/metrics/context_relevance.py:173
    168             scores.append(agr_score * np.mean(overlap_scores))
    170         return dataset.add_column(f"{self.name}", scores)  # type: ignore
--> 173 context_relevancy = ContextRelevancy()

File <string>:4, in __init__(self, batch_size, llm, name, evaluation_mode, strictness, agreement_metric, model_name)

File ~/.local/lib/python3.8/site-packages/ragas/metrics/base.py:69, in _llm_factory()
     68 def _llm_factory():
---> 69     return ChatOpenAI(model_name="gpt-3.5-turbo-16k")

File ~/.local/lib/python3.8/site-packages/langchain/load/serializable.py:74, in Serializable.__init__(self, **kwargs)
     73 def __init__(self, **kwargs: Any) -> None:
---> 74     super().__init__(**kwargs)
     75     self._lc_kwargs = kwargs

File ~/.local/lib/python3.8/site-packages/pydantic/main.py:341, in pydantic.main.BaseModel.__init__()

ValidationError: 1 validation error for ChatOpenAI
__root__
  Did not find openai_api_key, please add an environment variable `OPENAI_API_KEY` which contains it, or pass  `openai_api_key` as a named parameter. (type=value_error)`

this is because the metrics are still using OAI endpoints. Can you refer custom llm guide already? it will show you how to change the LLM. In case it does not work can you share the code and ragas,python versions?

Yes I referred the above nb, the issue is I get the error, when I import the metric
from ragas.metrics import Faithfulness

ohh my apologies. I'll fix that bug (thanks a lot for bringing it to our attention ❤ ). In the meantime could you set the env-var with some random text as a workaround till we release the fix?

Hello @jjmachan! Thanks for the great work :)
I've run into another bug while trying to use a local LLM. I cannot compute either ContextRelevancy or AnswerRelevancy when using a langchain BaseLLM, due to this Exception in line 36 in ragas.metrics.llms:
20      def generate(
21          prompts: list[ChatPromptTemplate],
22          llm: BaseLLM | BaseChatModel,
23          n: t.Optional[int] = None,
24          temperature: float = 0,
25          callbacks: t.Optional[Callbacks] = None,
26      ) -> LLMResult:
27          old_n = None
28          n_swapped = False
29          llm.temperature = temperature
30          if n is not None:
31               if isinstance(llm, OpenAI) or isinstance(llm, ChatOpenAI):
32                    old_n = llm.n
33                    llm.n = n
34                    n_swapped = True
35               else:
36  --->           raise Exception(
37                     f"n={n} was passed to generate but the LLM {llm} does not support it."
38                     " Raise an issue if you want support for {llm}."
39                )

The issue arises because when ContextRelevancy and AnswerRelevancy call this function they pass in n=self.strictness, eg in ragas.metrics.answer_relevance:
75        results = generate(
76            prompts,
77            self.llm,
78            n=self.strictness,
79            temperature=self.temperature,
80            callbacks=batch_group,
81        )

However strictness must be an integer due to both class's post_init:
54    def __post_init__(self: t.Self):
55        self.temperature = 0.2 if self.strictness > 0 else 0

Passing strictness=None would resolve the Exception issue but yields another error due to the post_init integer comparison.
Is there any scope to change the Exception to allow for n=0 or similar (eg change line 30 in ragas.metrics.llms to if n is not None and n>0?
If not, we are currently unable to use these metrics with a non-OpenAI LLM

@seanbenhur made a PR for this: https://github.com/explodinggradients/ragas/pull/118


fix(select): correctly update select when underlying field changes

Description:
It seems that our Select component is missing one important piece: syncing its value with the underlying form field in case the latter is changed programmatically.
For example consider this:

Go to wallet settings
Select some invoice expiry period
Press cancel

Form will reset, but select will show stale value.
This PR attempts to add sync between underlying form field and select by leveraging downshift control props:
https://github.com/downshift-js/downshift#control-props
PS: These kind of changes are known to be tricky and usually introduce some other corner cases, so it maybe worth to test this for a while before merging

How Has This Been Tested?
Manually

Types of changes:
Bugfix

Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[ ] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage remained the same at 22.778% when pulling bb2653dc184b7ea23aa9f2604f5d392f4f777c36 on korhaliv:fix/open-dialog into ddaec2865b789f8f08cf226e7db69096a0f02571 on LN-Zap:next.


Update on scroll

Utilises touchmove to call the updateCssVar function, this means you won't have to wrap the vh-check function in an event listener add more orientationchanges.

@ChrisButterworth Hi, thanks for the PR :)
I will merge it this week.
I'm thinking that attaching this event to the scroll should be optional.
IMO vh-check serves mainly for a top hero part. If you're doing more 100vh div afterwards, they will change size if you're scrolling down (no more address) or up (address appears again) and change sizes every time.
This could lead to a lot of resize/repaint in your webpage…

That shouldn't be difficult to do with the options object - will see what I can do.

Added and committed an "updateOnScroll" option but can't open up a new pull request.

this is already merged in https://github.com/Hiswe/vh-check/commit/a0c0dc5875524d6691df23db5860e92765c7091d

@ChrisButterworth Still I haven't found a way to test the touchmove with jsdom
And also I think I'll need a small debounce or throttle function because the touchmove is called many times.
And if I do that, I might as well listen to the scroll event…

found another issue that pushes this into the realm of unruly, the value changes when zooming in rendering it useless.
Will take a look to see if I can get around it.

@ChrisButterworth thanks for pushing the tests :)
If there's a problem, could you open a new issue?


Cite 'parallel' use

Output:

Academic tradition requires you to cite works you base your article on.
If you use programs that use GNU Parallel to process data for an article in a
scientific publication, please cite:
Tange, O. (2024, October 22). GNU Parallel 20241022 ('Sinwar Nasrallah').
Zenodo. https://doi.org/10.5281/zenodo.13957646
This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
More about funding GNU Parallel and the citation notice:
https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
To silence this citation notice: run 'parallel --citation' once.

$ parallel --citation
Academic tradition requires you to cite works you base your article on.
If you use programs that use GNU Parallel to process data for an article in a
scientific publication, please cite:

@software{tange_2024_13957646,
      author       = {Tange, Ole},
      title        = {GNU Parallel 20241022 ('Sinwar Nasrallah')},
      month        = Oct,
      year         = 2024,
      note         = {{GNU Parallel is a general parallelizer to run
                       multiple serial command line programs in parallel
                       without changing them.}},
      publisher    = {Zenodo},
      doi          = {10.5281/zenodo.13957646},
      url          = {https://doi.org/10.5281/zenodo.13957646}
}

(Feel free to use \nocite{tange_2024_13957646})

This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.

More about funding GNU Parallel and the citation notice:
https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt

Type: 'will cite' and press enter.


How do I use UI components?

Hello, I am very interested in this project but I can't work out where I am going wrong here.
I don't understand how to import ui components from svelte files.
I have a folder in the base of the project named "ui" and a file named "Test.svelte" in it.
If I try to import the component in the main index.svelte of the page like this:
import Test from "ui/Test.svelte"
I get this error:
 You can mark the path "ui/Test.svelte" as external to exclude it from the   bundle, which will remove this error.
I also get the same error when I try and import an asset from the public directory like so:
import image from "public/image.png"

Hey @timmyjan46, thanks for your interest in Bud!
I'm surprised that import Test from "ui/Test.svelte" doesn't work. If you have a spare moment, creating a failing test isn't too difficult and would speed up the fix: https://github.com/livebud/bud/blob/2b3cf758554bdb6fa385129955b4ed50637f50bd/framework/view/view_test.go#L361. No pressure, either way I'll give this a shot soon.
Importing non-JS/TS/Svelte assets doesn't work yet and I'm not sure if that's something worth adding. What do you expect image to be in import image from "public/image.png"?

Thanks for answering so quickly!
I was expecting import image from "public/image.png" to give me a URL as it does when using vite to build. You can use the image variable for and image source.
I can try and work out how to add a test but I'm not sure if I'll succeed but I'll give it a go.

I was expecting import image from "public/image.png" to give me a URL as it does when using vite to build. You can use the image variable for and image source.

Oh got it, I'll have a look at how vite does it. I'm on the fence about importing assets via JS because sometimes I could see people expecting a data-uri. I do see the convenience in this and maybe I can make it pluggable.

I can try and work out how to add a test but I'm not sure if I'll succeed but I'll give it a go.

Saw your PR, thanks!

I say you updated the PR but the test only makes sure that you can import from the root of the views folder. I'm still having trouble using components in any other directory. For example, if I have the file view/stories/index.svelte and try to import a component from ui/Time.svelte, import Time from "../ui/Time.svelte" obviously doesn't work here. Is there a way I can access the root of the project from anywhere? or as SvelteKit does it: allow you to import from $lib anywhere. Thanks for your time and sorry for making so much trouble.

For example, if I have the file view/stories/index.svelte and try to import a component from ui/Time.svelte, import Time from "../ui/Time.svelte" obviously doesn't work here.

It's all relative paths so in that case you'd do ../../ui/Time.svelte

Is there a way I can access the root of the project from anywhere? or as SvelteKit does it: allow you to import from $lib anywhere. Thanks for your time and sorry for making so much trouble.

Not yet! That's what I'd like to add with the ~ character though, so you can do ~/ui/Time.svelte. Open to PRs!


Create the Hub data fetching Context and Hooks

Overview
Create the Hub data fetching by leveraging the SDK. We'll need to be able to mainly query the list of DAOs by the connected user's address (or pull in an address via the URL such as /profile/:address) for the Profile route.
User Stories
As a connected user, I should be able to see a list of DAOs I'm in (and relevant data) in the table or grid views.
Details

Query by the user's address and return a list of DAOs (and DAO information) that they're a member of

Should also be able to check if a user is a delegate to each listed DAO that they're in

We can do the fetching in Context and store as something like <DAOContext/> -- It'll need to be accessed in the following routes/components:

Profile -- display the DAOs based on the address in the route, such as /profile/:address
Table Control -- will need to have this data available at this level so that it can be filtered / searched before being passed into either the list or grid views

Related Issues
All of the Hub UI and data elements relate to this:

#128
#242
#129
#243

Our querying is currently inside a useEffect inside HomePage.tsx
We may want to move this into Context since the Profile will use nearly the exact same query although we should discuss this in our Hub meeting since this also relates to the query update in Sam's previous comment

Explore would need to be a page-level query for these exact reasons

@jonathanprozzi and @skuhlmann is this still something that we need to implement?


SW-5605 Stop using hardwired facility IDs in tests

As a step toward being able to run tests in parallel, eliminate nearly all uses of
hardwired facility IDs in tests, instead letting the database allocate IDs
dynamically.
The "insert" methods in DatabaseBackedTest whose facility ID arguments used to
default to the hardwired ID now use the last inserted ID instead; this eliminates
the need to pass in facility IDs explicitly in a number of tests.
The exception is PermissionTest where the numeric values of the IDs affect the
test logic; that one will require more extensive reworking.

#2231  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @sgrimm and the rest of your teammates on  Graphite


Updated readme to reflect the correct severity and explains --reporte…

I ran into problems when trying to configure twigcs. The documentation for --severity was incorrect and --reporter options was missing.
This pull request:

Updated --severity error message to explain what the valid arguments are
Updated README.md to correct the --severity options and explain what the --reporter options are.

Codecov Report

Merging #242 (831e298) into main (08eec98) will not change coverage.
The diff coverage is 0.00%.

@@            Coverage Diff            @@
##               main     #242   +/-   ##
=========================================
  Coverage     78.57%   78.57%
  Complexity      743      743
=========================================
  Files            54       54
  Lines          2385     2385
=========================================
  Hits           1874     1874
  Misses          511      511

Impacted Files
Coverage Δ

src/Config/ConfigResolver.php
85.15% <0.00%> (ø)

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 08eec98...831e298. Read the comment docs.

Thank you @frankdekker!


Add Xcode 8 to Travis

Starting by trying to build everything. I'll have to probably exclude certain variants from the build matrix so that we only run the builds that we know to be green. Swift Version and xctool may only permit certain builds to run on Xcode 8.

Closing in favour of #313


Large download kills Caddy

1. Have you downloaded File Manager from caddyserver.com? When have you done that?
Yes. November 26 2017.
2. What is your entire Caddyfile?
https://my.domain.com
errors /my/home/caddy.err {
        rotate_size 10
        rotate_age 365
        rotate_compress
}
gzip
header / {
        Strict-Transport-Security "max-age=31536000;"
        X-XSS-Protection "1; mode=block"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
}
log /my/home/caddy.out {
        rotate_size 10
        rotate_age 365
        rotate_compress
}
root /my/home/public
timeouts {
        read 180s
}
git https://github.com/a_repo.git /my/home/some_dir {
        then hugo --config /my/home/some_dir/config.toml
}
filemanager /path /my/scope {
        database 16b77317de4813d8e2fcdfefa1e92903.db
}
forwardproxy {
        basicauth username pass
        probe_resistance
        hide_ip
}
minify

3. What are you trying to do?
Download a 1.66 GB file which was uploaded successfully.
4. What did you expect to see?
Once the file is selected and the download button is pressed, I'd expected to see a "Save file" kind of a pop-up.
5. What did you see instead (give full error messages and/or log)?
After selecting the file and pressing the download button, another page started loading and after a few seconds it stopped loading. Caddy was no longer running on the VPS it was running on previously and had to be restarted. Nothing was logged. The VPS has 512 MB RAM only, so the file doesn't fit in it -- maybe that caused the problem?
To me, it doesn't seem like a timeout issue, as I wouldn't expect Caddy to crash after timing out.
6. How can someone who is starting from scratch reproduce this behaviour as minimally as possible?

Upload a big file (potentially bigger than RAM available).
Try downloading the big file.

Probably the problem is exactly what you're saying (the RAM). I'll try to find a way to download it in chunks. THanks for reporting 😄

Hopefully this was fixed in #303. We're now streaming the file using io.Copy instead of using http.ServeFile which was, I think, putting it all in memory and then serving it to the user. I'm publishing the new version (1.3.12) and I ask you to test it and reopen this issue if the error persists (I hope it doesn't 😮)

I'm being able to deploy the new version to Caddyserver. You can always download it through releases and proxy it through Caddy. As soon as it is deployed into caddyserver.com I'll ping you.

Deployed! You can now download it with the fix 😄

Thanks for the quick action!
I downloaded and (re)installed Caddy with curl https://getcaddy.com | bash -s personal http.cache,http.filemanager,http.forwardproxy,http.git,http.minify.
Is that correct? Can I validate running the correct version of Filemanager?
The problem persists and indeed, htop shows memory usage climbing to 800+ MB and staying there for a while (swapping) before Caddy is killed.
The source code of io.Copy (io.copyBuffer) first tries using WriteTo or ReadFrom, before falling back to a 32K buffer. Could it be that WriteTo or ReadFrom are unbuffered?

I just downloaded a 2GB file from a VM with 1GB RAM without any issue. Are you using any other plugin (like Minify) with File Manager?

Disabling Minify helped!
Had no idea it tried to minify downloads as well.
Thank you very much!

I'll open an issue on caddy-minify (which was also created by me. That's why I knew it may be causing this problem...). Sorry!


Update several dependencies to allow running on Java 11 (and also 8)

Just noting here that while a lot of our machines have access to Java 8 and Java 11 at need, some may not yet have a Java 11 available.

This is mostly to be able to test on java 11, not yet to request a move away from java 8.

Looks good to me.  I tried it out here on mac laptop with java8 and everything is running smoothly including search api and recent additions for validation.
Does make me wonder if I should change coding environment from oracle java8 to openjdk11.  @balhoff let me know if/when you think that is important.


VCR.py doesn't work well with subclasses of HTTPSConnection

Project I'm working on uses chargebee python client. I decided to give VCR.py a try and instantly got this exception:
  File "/project/path/code.py", line 23, in validate_chargebee_id
    chargebee.Customer.retrieve(value)
  File "/venv/path/lib/python3.4/site-packages/chargebee/models/customer.py", line 29, in retrieve
    return request.send('get', request.uri_path("customers",id), None, env, headers)
  File "/venv/path/lib/python3.4/site-packages/chargebee/request.py", line 14, in send
    response = http.request(method, url, env, ser_params, headers)
  File "/venv/path/lib/python3.4/site-packages/chargebee/http.py", line 34, in request
    connection = compat.VerifiedHTTPSConnection(meta.netloc)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/http/client.py", line 1203, in __init__
    super(HTTPSConnection, self).__init__(host, port, timeout,
TypeError: super(type, obj): obj must be an instance or subtype of type

By searching issues I've found the same exception in https://github.com/kevin1024/vcrpy/issues/183, but not sure if it's because of the same reason, hope someone more familiar with VCR.py code can tell how to fix that.
VerifiedHTTPSConnection is defined here
MRO of classes at the moment of failure:
ipdb> HTTPSConnection.__mro__
(<class 'vcr.patch.VCRHTTPSConnectioncassettes/test_webhook_events/test_add_charge'>, <class 'vcr.stubs.VCRHTTPSConnection'>, <class 'vcr.stubs.VCRConnection'>, <class 'object'>)

ipdb> self.__class__.__mro__
(<class 'chargebee.compat.VerifiedHTTPSConnection'>, <class 'http.client.HTTPSConnection'>, <class 'http.client.HTTPConnection'>, <class 'object'>)

Python 3.4.3
vcrpy==1.7.4
chargebee==1.5.4

Thanks for the bug report. The maintainers are pretty swamped at the moment but we'd be very interested in a PR to fix this! Otherwise we'll get to it eventually, but it might be a while.

I'm having exactly the same issue while trying to use VCR.py along with PyGithub.

The same issue here. I want to integrate with chargebee API as well.

I notice chargebee use urllib which is not supported by vcr.py rathar than urllib2 and urllib3. I didn't look into the cause, but I think it is highly related to this issue.
Moreover, someone raised this issue at chargebee's repo. Maybe help chargebee migrate to request would be a better idea.
https://github.com/chargebee/chargebee-python/issues/15

A lot of changes have happened to VCRpy since this ticket was opened. As this ticket has become stale and we have a lot of old tickets that need to be groomed, I'm closing this for now to make it easier to see what is still relevant.
However if it is still needed, please feel free to re-open or create a new ticket.
Thanks! 🙏

I'm having a similar issue when using VCRpy to test some ofxclient calls.
Dropping a breakpoint in __init__ of HTTPSConnection, I see:
  /home/njulian/tests/test_banking.py(166)test__getSvbCheckingAccounts()
-> self.svbClient.authenticateWithSvb()
  /home/njulian/tests/banking.py(89)authenticateWithSvb()
-> self.svb.authenticate(svbMd.username, svbMd.pin)
  /home/njulian/tests/ve/lib/python3.7/site-packages/ofxclient/institution.py(118)authenticate()
-> res = client.post(query)
  /home/njulian/tests/ve/lib/python3.7/site-packages/ofxclient/client.py(104)post()
-> h = HTTPSConnection(host, timeout=60)
> /usr/lib/python3.7/http/client.py(1367)__init__()
-> def __init__(self, host, port=None, key_file=None, cert_file=None,
(Pdb) self
<http.client.HTTPSConnection object at 0x7fde15fb7320>
(Pdb) HTTPSConnection
<class 'vcr.patch.VCRHTTPSConnectionbankingTestData.BANKING_CASSETTE_DIR/test_SvbClient_getSvbCheckingAccounts.yaml'>
(Pdb) super(HTTPSConnection, self)
*** TypeError: super(type, obj): obj must be an instance or subtype of type
(Pdb)

I am using:

vcrpy==4.0.2
ofxclient==2.0.3
python 3.7

So I think the issue persists, if the same thing is going on here.

I just wanted to add I'm facing the same error as @fialovy on PyGithub

Interesting. I just tried VCRpy with PyGithub in one of our test cases and it recorded the response correctly and was also able to replay it.

I was using the older version of vcrpy, it seems it is working on the recent version.

This is still an issue in vcrpy 4.1.0 using latest chargebee client 2.7.5
self = <chargebee.compat.VerifiedHTTPSConnection object at 0x7fefdbb9b1d0>, host = 'foo-test.chargebee.com', port = None, key_file = None, cert_file = None
timeout = <object object at 0x7fefe2b4b330>, source_address = None

    def __init__(self, host, port=None, key_file=None, cert_file=None,
                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
                 source_address=None, *, context=None,
                 check_hostname=None, blocksize=8192):
>       super(HTTPSConnection, self).__init__(host, port, timeout,
                                              source_address,
                                              blocksize=blocksize)
E       TypeError: super(type, obj): obj must be an instance or subtype of type

../../.pyenv/versions/3.7.8/lib/python3.7/http/client.py:1389: TypeError


AArch64 bitfieldManipulate bounds checking

This PR addresses the issue that bitfieldManipulate has no bounds checking/restriction enforced by the data type in use.
close #394

#rerun tests


Mali fix

👷 Deploy Preview for balkantransport processing.
🔨 Explore the source changes: b0936419c78e72499e5956595d074c98840dc740
🔍 Inspect the deploy log: https://app.netlify.com/sites/balkantransport/deploys/61cdfea3cf4f120007718a03


IndexError: index (13489) out of range

I'm trying to follow the notebook demos to create the bin_count metadata, and I'm getting this error on this step:
b2c.insert_labels(adata,
                  labels_npz_path="./he.npz",
                  basis="spatial",
                  spatial_key="spatial_cropped",
                  mpp=mpp,
                  labels_key="labels_he"
                 )

Adata has this shape:
AnnData object with n_obs × n_vars = 9555564 × 17131
    obs: 'in_tissue', 'array_row', 'array_col', 'n_counts', 'destripe_factor', 'n_counts_adjusted'
    var: 'gene_ids', 'feature_types', 'genome', 'n_cells'
    uns: 'spatial', 'bin2cell'
    obsm: 'spatial', 'spatial_cropped'

Getting this error:
IndexError                                Traceback (most recent call last)
Cell In[39], [line 1](vscode-notebook-cell:?execution_count=39&line=1)
----> [1](vscode-notebook-cell:?execution_count=39&line=1) b2c.insert_labels(adata,
      [2](vscode-notebook-cell:?execution_count=39&line=2)                   labels_npz_path="[./he.npz](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/Pipelines/STAnalysis/notebooks/experimental/B2C/he.npz)",
      [3](vscode-notebook-cell:?execution_count=39&line=3)                   basis="spatial",
      [4](vscode-notebook-cell:?execution_count=39&line=4)                   spatial_key="spatial_cropped",
      [5](vscode-notebook-cell:?execution_count=39&line=5)                   mpp=mpp,
      [6](vscode-notebook-cell:?execution_count=39&line=6)                   labels_key="labels_he"
      [7](vscode-notebook-cell:?execution_count=39&line=7)                  )

File /mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/bin2cell/bin2cell.py:735, in insert_labels(adata, labels_npz_path, basis, spatial_key, mpp, labels_key)
    [732](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/bin2cell/bin2cell.py:732) coords = get_mpp_coords(adata, basis=basis, spatial_key=spatial_key, mpp=mpp)
    [733](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/bin2cell/bin2cell.py:733) #pull out the cell labels for the coordinates, can just index the sparse matrix with them
    [734](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/bin2cell/bin2cell.py:734) #insert into bin object, need to turn it into a 1d numpy array from a 1d numpy matrix first
--> [735](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/bin2cell/bin2cell.py:735) adata.obs[labels_key] = np.asarray(labels_sparse[coords[:,0], coords[:,1]]).flatten()

File /mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:24, in _csr_base.__getitem__(self, key)
     [22](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:22) def __getitem__(self, key):
     [23](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:23)     if self.ndim == 2:
---> [24](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:24)         return super().__getitem__(key)
     [26](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:26)     if isinstance(key, tuple) and len(key) == 1:
     [27](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_csr.py:27)         key = key[0]

File /mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:52, in IndexMixin.__getitem__(self, key)
     [51](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:51) def __getitem__(self, key):
---> [52](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:52)     row, col = self._validate_indices(key)
     [54](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:54)     # Dispatch to specialized methods.
     [55](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:55)     if isinstance(row, INT_TYPES):

File /mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:186, in IndexMixin._validate_indices(self, key)
    [184](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:184)     row = _validate_bool_idx(bool_row, M, "row")
    [185](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:185) elif not isinstance(row, slice):
--> [186](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:186)     row = self._asindices(row, M)
    [188](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:188) if isintlike(col):
    [189](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:189)     col = int(col)

File /mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:220, in IndexMixin._asindices(self, idx, length)
    [218](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:218) max_indx = x.max()
    [219](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:219) if max_indx >= length:
--> [220](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:220)     raise IndexError('index (%d) out of range' % max_indx)
    [222](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:222) min_indx = x.min()
    [223](https://vscode-remote+ssh-002dremote-002blcg.vscode-resource.vscode-cdn.net/mnt/work/RO_src/venv/bin2cell_venv/lib/python3.10/site-packages/scipy/sparse/_index.py:223) if min_indx < 0:

IndexError: index (13489) out of range

Does anyone know why this is happening?

On this, printing the max of coords and labels_sparse.shape results in:
print(coords.max())
print(labels_sparse.shape)
13552
(12869, 13463)

It seems when I use a mask, the error doesn't happen, but if I use the whole dataset, I get the error. Not entirely sure why that is happening (maybe some bins on the extremes that are not being counted?)
I'm using the Visium HD lung dataset

Doesn't seem to work very well with the Visium HD lung dataset

Thanks for the heads up - apparently this particular dataset has spots that extend past the tissue image, as evidenced by comparing the dimensions of Visium_HD_Human_Lung_Cancer_tissue_image.tif and the maximum values of adata.obsm["spatial"]. Also we worked with H&E demo data when developing the package, and the IF image behaves differently. Your idea to go with the fluorescence model is a good one, and we're getting promising results by using the third channel of the TIF. There's some stuff to iron out though, we'll keep you posted!

Thanks for the heads up - apparently this particular dataset has spots that extend past the tissue image, as evidenced by comparing the dimensions of Visium_HD_Human_Lung_Cancer_tissue_image.tif and the maximum values of adata.obsm["spatial"]. Also we worked with H&E demo data when developing the package, and the IF image behaves differently. Your idea to go with the fluorescence model is a good one, and we're getting promising results by using the third channel of the TIF. There's some stuff to iron out though, we'll keep you posted!

That's perfect thank you :) The actual data for the project I'm working on is Visium HD with H&E so the default model should be just fine, but I could only find this Lung dataset with Visium HD as an IF image; Will have a try once I have my data ready!

I modified insert_labels() to skip out of bounds bins when importing segmentation results. This way we get to keep the strange bins that fall outside the image as they might still be useful, e.g. when doing the GEX part of the analysis. Haven't cut a new version for now, but it should be installable from GitHub.
When confronted with the IF image, cv2 only reads its first channel, while the values of interest reside in the third. I've proposed a scaled_if_image() that can then be used with StarDist's fluorescence model, and it's now with Nadav for testing.

And b2c.scaled_if_image() is now on GitHub as well!
mpp = 0.35
b2c.scaled_if_image(adata, channel=2, mpp=mpp, save_path="stardist/if.tiff")
b2c.stardist(image_path="stardist/if.tiff",
             labels_npz_path="stardist/if.npz",
             stardist_model="2D_versatile_fluo",
             prob_thresh=0.1
            )

This yields a good looking segmentation:

This is the following subset:
mask = ((adata.obs["array_row"]>500) &
        (adata.obs["array_row"]<530) &
        (adata.obs["array_col"]>1000) &
        (adata.obs["array_col"]<1030)
       )

Not making a new version quite yet as I'll need to touch up the docs in a few places to account for the new addition.

And b2c.scaled_if_image() is now on GitHub as well!
mpp = 0.35
b2c.scaled_if_image(adata, channel=2, mpp=mpp, save_path="stardist/if.tiff")
b2c.stardist(image_path="stardist/if.tiff",
             labels_npz_path="stardist/if.npz",
             stardist_model="2D_versatile_fluo",
             prob_thresh=0.1
            )

This yields a good looking segmentation:

This is the following subset:
mask = ((adata.obs["array_row"]>500) &
        (adata.obs["array_row"]<530) &
        (adata.obs["array_col"]>1000) &
        (adata.obs["array_col"]<1030)
       )

Not making a new version quite yet as I'll need to touch up the docs in a few places to account for the new addition.

You guys rock! Will test it in a bit as well :)

I tried it and it seems to be much better!

With cell typist predictions:

Although I'm not sure what the workflow should look like, since everytime I do seconday labels, I always get 0?
Here's what I'm doing (might be long, apologies for that!)
mpp = 0.35

b2c.scaled_if_image(adata, channel=2,mpp=mpp, save_path="./if.tiff")
b2c.destripe(adata)

######### IF component ##########
#define a mask to easily pull out this region of the object in the future
mask = ((adata.obs["array_row"]>500) &
        (adata.obs["array_row"]<530) &
        (adata.obs["array_col"]>1000) &
        (adata.obs["array_col"]<1030)
       )

bdata = adata[mask]

b2c.stardist(image_path="./if.tiff",
             labels_npz_path="./if.npz",
             stardist_model="2D_versatile_fluo",
             prob_thresh=0.1
            )

b2c.insert_labels(adata=bdata,
                  labels_npz_path="./if.npz",
                  basis="spatial",
                  spatial_key="spatial_cropped",
                  mpp=mpp,
                  labels_key="labels_if"
                 )

bdata.obs["labels_if"] = bdata.obs["labels_if"].astype(int)
bdata = bdata[bdata.obs['labels_if']>0]
bdata.obs['labels_if'] = bdata.obs['labels_if'].astype(str)

b2c.expand_labels(bdata,
                  labels_key='labels_if',
                  expanded_labels_key="labels_if_expanded"
                 )

bdata.obs["labels_if_expanded"] = bdata.obs["labels_if_expanded"].astype(int)
bdata = bdata[bdata.obs['labels_if_expanded']>0]
bdata.obs['labels_if_expanded'] = bdata.obs['labels_if_expanded'].astype(str)

b2c.grid_image(bdata, "n_counts_adjusted", mpp=mpp, sigma=5, save_path="./if_gex.tiff")

b2c.stardist(image_path="./if_gex.tiff",
             labels_npz_path="./if_gex.npz",
             stardist_model="2D_versatile_fluo",
             prob_thresh=0.05,
             nms_thresh=0.5
            )

b2c.insert_labels(bdata,
                  labels_npz_path="./if_gex.npz",
                  basis="array",
                  mpp=mpp,
                  labels_key="labels_if_gex"
                 )

bdata.obs["labels_if_gex"] = bdata.obs["labels_if_gex"].astype(int)

bdata = bdata[bdata.obs['labels_if_gex']>0]
bdata.obs['labels_if_gex'] = bdata.obs['labels_if_gex'].astype(str)

bdata.obs["labels_if_expanded"] = bdata.obs["labels_if_expanded"].astype(int)

### This one always returns 0s
b2c.salvage_secondary_labels(bdata,
                             primary_label="labels_if_expanded",
                             secondary_label="labels_if_gex",
                             labels_key="labels_if_joint"
                            )

bdata = bdata[bdata.obs['labels_if_joint']>0]
bdata.obs['labels_if_joint'] = bdata.obs['labels_if_joint'].astype(str)

cdata = b2c.bin_to_cell(bdata, labels_key="labels_if_joint", spatial_keys=["spatial", "spatial_cropped"])

cell_mask = ((cdata.obs['array_row'] >= 1450) &
             (cdata.obs['array_row'] <= 1550) &
             (cdata.obs['array_col'] >= 250) &
             (cdata.obs['array_col'] <= 450)
            )

ddata = cdata[cell_mask]

sc.pl.spatial(adata=ddata, color=["bin_count", "labels_if_joint_source"],  basis="spatial_cropped")

This outputs the first image I showed;
Then, for CellTypist I'm essentially following the tutorial you guys provide (I also train a healthy model + tumor model and do as you guys do). Do we need to do all the steps to get the "bin_count" variable?

In the demo notebook, all the major operations (i.e. segmentations, label insertion etc.) happen on the main adata that is loaded at the start. The bdata is just generated to visualise how the various steps are doing along the way. Meanwhile in the snippet above you seem to be using the bdata for pretty much everything once you generate it? I guess in this particular little bit of tissue the nuclei are well captured and the secondary GEX labels are not necessary.

I ran a simple GEX segmentation and then performed the label salvage. I'm seeing 551904 IF labels and 7747 secondary GEX-derived ones. The DAPI seems to be doing a good job of recovering the nuclei. As such it's entirely feasible that the selected region just doesn't have any.

I ran a simple GEX segmentation and then performed the label salvage. I'm seeing 551904 IF labels and 7747 secondary GEX-derived ones. The DAPI seems to be doing a good job of recovering the nuclei. As such it's entirely feasible that the selected region just doesn't have any.

100%, I think that's the reason too! I'll put things nicely in a wrapper function to run everything at once so it's easier to test, but so far so good :) Thanks again!

I ran a simple GEX segmentation and then performed the label salvage. I'm seeing 551904 IF labels and 7747 secondary GEX-derived ones. The DAPI seems to be doing a good job of recovering the nuclei. As such it's entirely feasible that the selected region just doesn't have any.

I'm actually not able to get the extra secondary labels, do you have a notebook I could have a look? I get  543621 IF labels but no secondary GEX for some reason (could be some different step I'm doing wrong)

Untitled4-Copy1.ipynb.txt
I had to add .txt so it would just let me attach it here.

Untitled4-Copy1.ipynb.txt
I had to add .txt so it would just let me attach it here.

That's perfect, thank you very much!! :)


Fix logos - DO NOT MERGE YET

This version modifies Matt Coursey's version, however, it doesn't have the actual logos yet.  Currently this branch only includes a bunch of stub logos (all Tuxes).  We need to replace the stub logos with the actual logos before merging.

I think it is ready now. Comments?

LGTM!


Download the image and get its dimensions

Separating the process into:

File download from URL, using net/http
File metadata decode, using image.DecodeConfig

Supporting jpeg, gif and png.


How to create a private zone

I want to create a Private DNS zone.
For example, the equivalent REST request is below
POST https://dns.googleapis.com/dns/v1beta2/projects/my-project/managedZones
{
  "description": "",
  "dnsName": "myzone.example.com.",
  "name": "example-zone-name",
  "privateVisibilityConfig": {
    "networks": [
      {
        "networkUrl": "https://www.googleapis.com/compute/v1/projects/my-project/global/networks/default"
      }
    ]
  },
  "visibility": "PRIVATE"
}

The question is that the the CreateZoneRequest doesn't have properties -- privateVisibilityConfig and visibility

HI @kth-tw, unfortunately I don't think this library has this capability yet (this library is autogenerated, so it will get any updates automatically). In the meantime, you can make rest calls or use this library, which does have this parameter: https://github.com/googleapis/google-api-nodejs-client/blob/df06a5565509f61a88acd676e31c3eac0f3dc1c5/src/apis/dns/v2.ts#L339


Push updates via distributors

Currently there is the push feature that requires a running background process.
That's great, but wastes a lot of battery and isn't perfect for everyone. I propose the creation and an external push functionality that relies on an external distributor to receive updates. The architecture would be a self hosted server that checks for the updates in the specific folders. The app gives the servers these credentials. The server doesn't keep track of all emails, just enough information to determine when a new one arrives. When it does, it sends out a notification via a distributor. There are two main ones I think should be supported:
Google's FCM
UnifiedPush (https://unifiedpush.org/users/intro/)
The user can configure which to use. The app would detect each distributor on the phone and use whatever is available. A data message should be sent containing no identifying information such as message content or email. The server and client should configure some uuid for the email account in question and use that to alert the app that an update is available. A uuid for folders can be used too. A background service is than ran to poll and fetch the updates for that particular account.
Biggest advantage for this setup is battery efficiency and instantaneous notifications of new emails.  It would require some setup from the user, but would be in line with the FOSS individuals who already self host stuff. Exploring how to privatize the passwords/connection on the server side would be nice too so a user can use a publicly shared endpoint while not risking their security. Not really possible on initial thoughts, but I could be incorrect.

I suggest you look into how JMAP solved the "support different push services" problem, then propose an IMAP extension to use a similar approach. Once a server supports this new standard, we'd be happy to add support for different push services.
We're not going to add support for a solution that requires handing over user credentials to a push service or requires the user to set up their own server. But please feel free to fork the app and this functionality yourself.

@cketti JMAP doesn't solve this problem. It's cool, I like it, but its not THE solution. The oauth approach for Gmail already requires a user to setup their own keys so it's not inconsistent of an approach. I was going to explore this solution in my own time and merge in sometime, mostly use this issue as a longer term tracker and getting others ideas/solution. But if one is too rigid in their thinking than a spinoff will be required. Maybe one more updated and supported.

How does JMAP not solve this problem? A client can tell the JMAP server to notify an arbitrary HTTP server when a new message arrives. That server can then use whatever Push mechanism it chooses to notify the app. This does not require the app to hand over user credentials to the Push service.

Haha, idk guess it is. Granted not supported anywhere but the jmap proxy exists which would be super useful. Change the behavior of it to support additions via requests instead of a pre-configuration. Still wouldn't solve the credential issue.


Fix mypy errors

I get the error Incompatible return value type (got "Tuple[C, ...]", expected "Tuple[C, C]") from mypy in genetic_algorithm.py. These changes eliminated the error but I'm still new to type hints in Python so I'm not 100% sure this is an appropriate change.

Yeah, I went through the same thing when writing this last year and I decided to leave it the way it is even though mypy complained. Here's my thinking—we know these methods are supposed to return a tuple of two things. So, in this case I think our hints are correct even though mypy says they are not. My understanding is that the "fixed" hint is saying we will return a tuple of multiple things of the same type. Now, it probably wants that because technically methods like choices() and nlargest() could return more than 2 things, so that's what their type signatures say. But the parameters we are using ensure they always return 2. So, even though our hints are technically wrong for the purposes of type checking, they are right for the purposes of readability.
Does that make sense? I'm going to leave this open so we can discuss it further. I am open to changing it though if the consensus is that it's more important the type hints be type checker correct than human reader correct.

Your reasoning definitely makes sense. It's that trade-off of doing what you know is correct or writing to the limitations of the type checker. I'm using Visual Studio Code with my linter set to mypy so I tend to write to the limitations of the type checker. Otherwise I have PROBLEMS ❷ yelling at me all the time. But I'd never argue that this is the one and only way to do it.


[Rhino] Setting (function () {}).proto broken in recent version of HtmlUnit

Problem in brief
Setting of (function () {}).__proto__ is a no-op in recent versions of HtmlUnit breaking some libraries.
Setting of new Object().__proto__ still works as expected.
This problem affects the Knockout library of at least v3.3.0 and the current version v3.5.1.
Details
When Rhino is running in ES6 mode, setting of _proto__ on a function object is denied by this condition in SpecialRef that only allows setting on objects.  This behaviour is incompatible with major browsers (Chrome / FF / Edge / IE11) and breaks libraries that rely on this.
Test case
<html>
<head>
<script>
function test() {
	var proto = { foo: function (n) { console.log('foo'); } }
	proto.foo();

	var obj = function () {}
	console.log("Original __proto__:", obj.__proto__);

	obj.__proto__ = proto;
	console.log("Modified __proto__:", obj.__proto__);

	console.log("obj.foo:", obj.foo);

	try {
		obj.foo();
	} catch (e) {
		console.log(e);
	}
}
</script>
</head>
<body onload="test()">
</body>
</html>

Expected:
foo
Original __proto__: function () {[native code]}
Modified __proto__: ({foo: (function (n) { console.log("foo"); })})
obj.foo: (function (n) { console.log("foo"); })
foo

HtmlUnit 2.46.0 fails with the following:
foo
Original __proto__: function () {[native code]}
Modified __proto__: function () {[native code]}
obj.foo: net.sourceforge.htmlunit.corejs.javascript.Undefined@0
TypeError: Cannot find function foo in object function () {...}.

Suggested fix
The documentation for Function's __proto__ (Object.prototype__proto__) doesn't seem to make any distinction between the state of  support for objects and function objects so it seems they should be equally supported, if supported at all.
Out of the possible values returned by typeof, it seems "function" and "object" are the only ones that make sense:
[undefined, null, true, 123, 123n, "abc", Symbol(), function () {}, {}].forEach(x => {
    try {
        var proto = {}
        var r = (x.__proto__ = proto);
        console.log(typeof x + ": returned=" + (r === proto) + " changed=" + (x.__proto__ === proto))
    } catch (e) {
        console.log(typeof x + ": " + e);
    }
})

/* Output of Chrome / FF:
undefined: TypeError: Cannot set property '__proto__' of undefined
object: TypeError: Cannot set property '__proto__' of null
boolean: returned=true changed=false
number: returned=true changed=false
bigint: returned=true changed=false
string: returned=true changed=false
symbol: returned=true changed=false
function: returned=true changed=true
object: returned=true changed=true
*/

(This can be run in HtmlUnit 2.46.0 by removing 123n (BigInt(123)) which is not supported.)
In lieu of this, my suggestion is for this condition in SpecialRef be changed as follows:
 if (cx.getLanguageVersion() >= Context.VERSION_ES6) {
-    if ((value != null && !"object".equals(ScriptRuntime.typeof(value))) ||
-        !"object".equals(ScriptRuntime.typeof(target))) {
-        return Undefined.instance;
-    }
+    if (value != null && !"object".equals(ScriptRuntime.typeof(value))) {
+        return obj;
+    }
+    switch (ScriptRuntime.typeof(target)) {
+    case "object":
+    case "function":
+        break;
+    default:
+        return obj;
+    }
     target.setPrototype(obj);
 } else {
     target.setPrototype(obj);
 }

Thanks, will try to make a PR against Rhino out of this.

Thanks, will try to make a PR against Rhino out of this.

PR https://github.com/mozilla/rhino/pull/822 - hopefully this find a way into Rhino soon

PR https://github.com/mozilla/rhino/pull/822 - hopefully this find a way into Rhino soon

@atnak if you like to test this you can use the core-js snapshot. I like to have the fix in the Rhino trunk before i remerge Rhino and make a new HtmlUnit snapshot.
As always you can have a look at twitter to be informed.

@atnak if you like to test this you can use the core-js snapshot. I like to have the fix in the Rhino trunk before i remerge Rhino and make a new HtmlUnit snapshot.
As always you can have a look at twitter to be informed.

Thanks, I've used your code at a48bdd09226885497f0ef56fd17d010a4cdfb07e and can confirm it resolves the original issue I was experiencing.

Thanks, I've used your code at a48bdd09226885497f0ef56fd17d010a4cdfb07e and can confirm it resolves the original issue I was experiencing.

Available with the latest SNAPSHOT.
Thanks for your support.

Available with the latest SNAPSHOT.
Thanks for your support.