Cleanup in fcrepo-http-api

https://jira.duraspace.org/browse/FCREPO-1631

It looks like Travis is failing with javadoc errors:
(mvn javadoc:test-aggregate)
https://s3.amazonaws.com/archive.travis-ci.org/jobs/70637161/log.txt

Fixed, I think. Try again.

Now Travis is saying there is a checkstyle error:
https://s3.amazonaws.com/archive.travis-ci.org/jobs/70794854/log.txt
Before submitting a PR, I would suggest running the following three commands:

mvn clean install
mvn javadoc:jar
mvn javadoc:test-aggregate

If that is the normal build check set, you need to actually key that into Maven. It's not hard to do that. Most people are going to expect that mvn clean install will be enough, and they're right.

@ajs6f, the history here is that we used to have the javadoc plugin activated by default in the top-level pom.xml. Then, since we did not want to generate javadocs on each build, we moved the plugin into the release profile. Then, when we moved to Java8, javadoc errors became strictly enforced.
The way our pom.xml is currently set up is to only run javadocs at release-time, therefore only showing errors at release-time... which does not make for a smooth release.
Therefore, we enabled Travis to run the javadoc commands that I mentioned above to strike a middle ground: users not having to build javadocs on every build, but the issues being caught before release.
I am happy to make changes if you have a suggestion, however.

We moved the Javadoc step out because it wasn't needed to build and took time. Now it is needed to build, so either we should stop strictly enforcing the Javadocs rules or it should be run for verify.

Sounds good. Please create a ticket to re-add javadoc in the build process.

https://jira.duraspace.org/browse/FCREPO-1634

Resolved with:
https://github.com/fcrepo4/fcrepo4/commit/43c3b3a4641fa5a4d629eec0da8bde878b8bae69 and
https://github.com/fcrepo4/fcrepo4/commit/31c1f11647bbd1be55b4aeda9803dd2417a7e129 and
https://github.com/fcrepo4/fcrepo4/commit/7141787b9cb139471ba081a42062509be8b24343


Is there any benchmark result comparing the GPU version and Original version's performance?

Hi @ZeroKPunk, can you elaborate on what is Original version?

The icicle library doesn't have an efficient MSM computation on CPU. I can tell you the current performance on GPU (3090 ti) on the branch that supports GNARK. It's around 250ms for bn254 for 2^24.


No Error Message

I put my last name in the credit card spot and tried checking out - it wouldn't process or let me go to the next page but it also didn't give me an error code or highlight the card section so I would know where I messed up

Which payment gateway are you using and do you have MivaPay enabled?

That is actually the correct functionality. If the credit card field does not contain a valid number, you cannot continue. I have added some visual validation to the field so you know there is an error.


Added: parts of day variables

Added: isMorning, isAfternoon, isEvening, isNight variables.
This is a good for feature personalising daily messages.
like Good morning/evening
Times of day part are taken from:
http://learnersdictionary.com/qa/parts-of-the-day-early-morning-late-morning-etc

Thank you 👍  Nice addition
I'll publish it along with 4.0.14 update


Feat/1510 capture sworn data

Description
Add sworn translators options to translators and interpreters..
Trello ticket: https://trello.com/c/EdG7fSFO/1510-translators-apply-include-capturing-sworn-data-in-application-journey

I remember now why I made this a WIP, I added a comment here a while back.
https://cautionyourblast.slack.com/archives/C03RT4ZR8E7/p1667988210070759
Basically I thought I was missing something because the ticket was easier to do that what the description had. I didn't need to change any part of the ingest controllers for this to work, so I wanted someone to glance over it to let me know if I've missed anything out.
But I guess that can be done in the PR as well 😆


[SR-10602]Don't fail a URLSessionTask on a 401 response

The basic authentication implementation fails a URLSessionTask with an error if
a status code of 401 is received but we aren't able to build a
URLProtectionSpace, possibly due to the absence of a the WWW-Authenticate
response header. A valid HTTP response object is received in this case. It may
not possible to go ahead with the urlSession(_,task: task, didReceive:)
callback, either because a delegate isn't being used or because the
WWW-Authenticate response header is absent. In such cases, the completion
handler is invoked with the received response, NOT with an error.
Note that basic authentication (https://github.com/apple/swift-corelibs-foundation/commit/4c1e8c4) wasn't available with Swift 4.x. It was first made available in development builds for Swift 5.
Initially, when we failed to build a URLProtectionSpace, we failed with an error, which resulted in removing the task from the TaskRegistry. Further we went ahead and invoked the completion handler, which again tried to remove the same task from the TaskRegistry, resulting in a fatal error reported against Swift 5.0. As a fix to this, we decided to simply return after failing with an error (see https://github.com/apple/swift-corelibs-foundation/commit/69abd6d) which means we
skipped invoking the completion handler.
It seems that the right thing to do is NOT fail with an error, but simply
invoke the completion handler with the 401 response received.

@swift-ci test

Seems like an unrelated build failure:
/home/buildnode/jenkins/workspace/swift-corelibs-foundation-PR-Linux/lldb/source/Target/SwiftLanguageRuntime.cpp:2041:29: error: no member named 'mangleOpaqueTypeDescriptor' in 'swift::Mangle::ASTMangler'

@swift-ci test

@swift-ci test Linux

@saiHemak Can you please review this? Thanks!

@pushkarnk  looks good to me..


Upstream dropdown/combobox hard to open

In the Repository Settings -> Branches there is the Upstream column, this column is / should be a dropdown menu but it is very hard to open, i need to spam multiple clicks to get it to open.
Version: v1.3.0
Distribution-Method: Flatpak
OS: Linux
I also have the same problem on Windows.

This might be a similar problem as in the Settings -> Remotes with the URLs

The problem is that it just takes quite long to open for some reason. If you select and then click once and waiting for a bit, the combobox appears


Configuration#2:Step#1: simulating alpha_S=0.3, matter: q_0=1 | matterlbt: q_0=1.5: matter01

run the simulation with the above config by jetscape,
transfer the final state hadron to the related directory named as config-XX-final-state-hadrons
after doing step1 on all 12 simulations go to step 2 for the configurationX

ported into Excel for overleaf


Quota use does not reflect all resources - suspected omission of files in iRODS user zone from total.

I noticed that my demo account (David Tarboton, but user name demo) was reporting only a small percentage of the 20 GB quota used, yet it contained a resource with an 8 GB file.
I made a copy of this resource, increasing usage to more than 16 GB, and this still did not reflect in my quota total.  The suspected reason is that these resources were created copying files from iRODS.
I then created a resource and added a file from disk, so it should be in the iRODS hydroshare zone.  I then added big files to this resource and made copies.  The total storage use reported when I log in now reports a total close to only the new big resources I created, and not the prior existing big resources.

@hyi ,
I've checked AVU value of demo-usage:

47521599850 on hydroshareZone
19637089211 on hydroshareuserZone
they seem OK in iRODS, could you check these value on Django?

@phuongdm used quota value for demo is 44.2579387221GB. I checked the code, and update_quota_usage does get called when a file is added from iRODS, so I am not sure what caused the out-of-sync issue between quota usage in Django and in iRODS. In any case, when a add file operation happens, the updated quota usage from iRODS will get populated into Django. @dtarb Can you create a new resource with files using this demo account and see if quota is up to date with iRODS after doing so?

I deleted the 3 big resources.  I then created a new resource to which I added a file.  The quota message now says
 which is incorrect because I have this resource https://www.hydroshare.org/resource/d0e6d4c7f7ef4d9d9486be87fc425314/ with an 8 GB file in it.

@hyi,
it seems that, your quota function does not count user usage on hydroshareuserZone
@dtarb ,
I've check your resource: https://www.hydroshare.org/resource/d0e6d4c7f7ef4d9d9486be87fc425314/ its exactly size is<PHONE_NUMBER>4 (around 18.2 GB).

@dtarb @phuongdm I can reproduce this issue and indeed files added from user zone somehow are not counted toward the quota. Not sure what could have caused it and whether it has anything to do with zero down deployment process that was used for the last release deployment. I am sure it worked before and somehow it does not work in the new deployment. Will investigate and see what has caused this regression.

@dtarb @phuongdm @aphelionz I have found what have caused this issue and will make a hotfix today.

@dtarb Beta has been updated to include the hotfix I made, and I have just checked on beta and verified now files added from the user zone is counted toward the user's quota now. If you have time, it'd be great if you can verify on beta as well to make sure it indeed works now. Make sure you use hydroshareuserdevZone and usersdev.hydroshare.org to test things out since that is the user zone hooked up on beta.


Preserve uext and sext flags for parameters on x86_64 and apple aarch64

This is required by the ABI and prevents a miscompilation when calling LLVM compiled functions.
Fixes https://github.com/bytecodealliance/wasmtime/issues/7210
Fixes https://github.com/bjorn3/rustc_codegen_cranelift/issues/1395

Moved it from a precise-output test to a regular compile test as precise-output doesn't allow any comments.

If possible a patch release with this would be nice. It is the last known miscompilation in cg_clif and IMO a blocker for https://github.com/rust-lang/rust/pull/81746.

Sure

https://github.com/bytecodealliance/wasmtime/pull/7333

Spurious network error?
curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0

Yeah downloading doxygen is occasionally flaky and weird. I requeued this and it should merge in the next few minutes


Doesn't work on my Raspberry Pi 3 Model B+ with Stretch

Hi,
I'm writing this feeling a bit lost. I have bought some smart plugs (Blitzwolf SHP2, SHP5, SHP6 15A and SS1) that I would like to convert, but failed. I´ve used tuya-convert v2.3.0 before on SHP6 10A and I remeber that I had some struggle, but at least I made it. Now when I'm doing it again, it doesn't work on my pi3b+ with a clean Stretch installation.
I have tested the 2.4.3 release using: git clone https://github.com/ct-Open-Source/tuya-convert
and dev using git clone --branch development https://github.com/ct-Open-Source/tuya-convert
I have made multiple restarts and runned the ./install_prereq.sh multiple times (eg. before restart, after restart but before start flash, after first start flash try, after second start flash etc).
I have tried 3 different wifi devices:

Android 9 phone - reconnect's in a loop
Windows 10 laptop - connects with a pretty solid connection. But, and I believe it's a big but, it can rarely ping <IP_ADDRESS> and when it happens it only work a few times (like 3-10) before it gets unreachable. I have gotten the webpage connected to vtrust once, and that time it started to backup a SHP2*.
Tuya-Convert-Donor by digiblur - connects most of the times without any issues. Rock solid connection.

*) That time I had forgotten to copy my esphome bins and I choose to quit in the menu. That device won't ligtup it's led now regardless of power cycling or button clicks. I guess it's bricked..?
I have only added these packages: sudo apt-get install git usbmount ntfs-3g and I'm using SSH over ethernet.
smarthack-mqtt.log
smarthack-psk.log
smarthack-udp.log
smarthack-web.log
smarthack-wifi.log

*) That time I had forgotten to copy my esphome bins and I choose to quit in the menu. That device won't ligtup it's led now regardless of power cycling or button clicks. I guess it's bricked..?

Don't panic, it's not bricked, just running the intermediate firmware.
You can restart the process, but you do not need to connect a phone or put the device in pairing mode this time. Just press enter and plug the device back in.

Thanks, I'll try again.
It bothers me that ping only works for a short time. When I'm on the landingpage connecting my laptop. Ping should atleast work until I click enter and smarthack starts. Or?

Hi @depen84 have you been able to recover your device?

It bothers me that ping only works for a short time. When I'm on the landingpage connecting my laptop. Ping should atleast work until I click enter and smarthack starts. Or?

Sounds like you should use your tuya-convert-donor if your connection has been unreliable otherwise, or see if you can debug hostapd on your RPi.

Never got it working. Soldered my devices instead. Thanks any way!


Replace the flag from int zero to the right enum

The code that is selected when the variable 'bShaderVisible' is false doesn't compile with the error:
"cannot convert from 'int' to 'D3D12_DESCRIPTOR_HEAP_FLAGS', Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)"
so by using the correct enum D3D12_DESCRIPTOR_HEAP_FLAG_NONE instead of the integer zero, it does not only compile but is also more consistent with usage.

@siradam7th : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Docs typo

Pull request checklist
Please check if your PR fulfills the following requirements:

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been reviewed and added / updated if needed (for bug fixes / features)
[ ] Build (fake build or .\build.cmd) on local branch was successful

Pull request type

Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[X] Documentation content changes
[ ] Other (please describe):

Does this introduce a breaking change?

[ ] Yes
[X] No

Other information

Thanks!


Reduce the memory consumption when dumping a report to files

Missing functionality

Dumping a profile report (generated based on large dataframe) to JSON file consume lots memory. I wonder whether it is possible to reduce the consumed memories. For example, handle a column and dump it to disk and move the next column. If JSON doesn't support this, is there other format that we can leverage to dump a report to the file while doe not consume too much memory?
Proposed feature

Reduce the memory consumption while dumping a profile repot to files (especially JSON file).
Alternatives considered

Additional context

Also, allow skipping some large fields (as proposed in https://github.com/pandas-profiling/pandas-profiling/issues/636) can probably help reduce memory consumption a lot.

(new user here!)
Looking at what gets dumped to json, i.e. the description of the profile object, there are two components that seem to account for almost all the size: value_counts and scatter_data .
Both exist for each variable.

scatter_data seems to be just a pd.Series of all values of each feature
value_counts is another pd.Series that can be nearly the same size of former for float variables.

Everything else is pretty much numbers and strings, small stuff.
Size control could be provided by enabling options controlling:

whether or not dump all values for each variable in scatter_data (boolean)
how many values to dump for value_counts (I can see that it would indeed be useful to have the top N frequent values)


Feature/extended filters get query data

Hello @TkDodo @tannerlinsley ,
This PR is following this discussion :
https://twitter.com/ecyrbedev/status/1571561333992079363
Consider the following pattern :

The idea is now that people are using the factory pattern to create keys and useQueryOptions in general, it might be helpful to be consistent for every function and allow to pass directly the result of the factory to all functions.
People might want to have everywhere the same ability to pass the factory result like they do for :

useQuery
useInfiniteQuery
fetchQuery

This PR add this possibility to :

getQueryData

Might also need to do it on (i can improve this PR upon agreement, after fixing details) :

getQueriesData

The solution i took is to be backward compatible with current getQueryData, but also allow to pass only one parameter that would be the filter + ignore the additionnal parameters.
For this i added an ExtendedQueryFilters :
export interface ExtendedQueryFilters<
  TQueryFnData = unknown,
  TError = unknown,
  TData = TQueryFnData,
  TQueryKey extends QueryKey = QueryKey,
> extends Omit<QueryFilters, 'queryKey'>,
    Omit<QueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
  queryKey: TQueryKey
}

getQueryData<TData = unknown>(
    filters:  ExtendedQueryFilters,
  ): TData | undefined

what about getQueriesData ? Would we need that there as well?

Codecov Report
Base: 96.36% // Head: 96.23% // Decreases project coverage by -0.12% :warning:

Coverage data is based on head (1594868) compared to base (eab6e2c).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4190      +/-   ##
==========================================
- Coverage   96.36%   96.23%   -0.13%
==========================================
  Files          45       62      +17
  Lines        2281     2734     +453
  Branches      640      789     +149
==========================================
+ Hits         2198     2631     +433
- Misses         80      101      +21
+ Partials        3        2       -1

Impacted Files
Coverage Δ

src/devtools/devtools.tsx

src/core/logger.ts

...rc/createWebStoragePersistor-experimental/index.ts

src/react/Hydrate.tsx

src/core/focusManager.ts

src/devtools/styledComponents.ts

src/core/mutationObserver.ts

src/core/query.ts

src/react/setBatchUpdatesFn.ts

src/react/logger.ts

... and 97 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

what about getQueriesData ? Would we need that there as well?

Yes, if you agree, i'll also add it

Yes, if you agree, i'll also add it

yep, awesome. I am trying to think if there is a situation where this will bite us, like when we introduce new query filters, they cannot overlap in namings with a query option that we already have, or vice-versa?
like, we have a query filter called type, and if we add an option called type later, this will clash.
For typesafety, we would only need { queryKey, queryFn } I think. If we pick only those two fields, the problem would be that we couldn't pass "more" to it, right?
So:
const query = {
  queryKey,
  staleTime
  queryFn // return a string
}

queryClient.getQueryData(query)

would then become invalid because it contains staleTime ? Still, I think it would be the "less risky" approach ... What do you think?

You are correct on all points. So maybe, it would be safer to even go further.
Because what about a user that wants to have filters alongside of is refuse of a Factory function?
So maybe we should not mix them at all. And have two simple overloads:
getQueryData(queryKey: QueryKey, filters: Filters);
// and
getQueryData(queryOptions: QueryOptions, filters: Filters);

What do you think?

Yes I think that would work 👍

For information, i'm strugling with where to handle this new overload.
Internally no current parseArgs helpers handles this use case, and modifying find and findAll to accept queryOptions would break everything.
So i'm currently trying to handle this use case by adding a dedicated parse helper that will not break everything else.
I understand why @tannerlinsley said he would not design with overload if he had to do this now.
But i'll try to finish this week.

i'm sorry dom, but i can't make this work smoothly.
internally everything is using unpredictable overloads. And since code coverage is not there, i can't guaranty i'll not break any user code out there.
So i'll back down on this PR.
Again sorry.

no worries, thank you for trying ❤


Pass rundeck options as environment variables to ansible

This add the possibility to pass the options of the jobs to ansible as environment variables (can be used with lookup('env','option_name').
It could be usefull for passing password without showing the in logs (mandatory in some network modules, ios_command for instance).

Thanks @targuan for the contribution I just made some adjustments to the code to fit in v2.0.0. This will be planned for release 2.0.1

hi,
just want to say: awesome ! Thanks !

Worthwhile mentioning this is a feature somewhere?


Authorisation documentation improvements/extensions

There might be some improvements we might want to do to the concept described in #471

Might want to move the "potential future extensions" into a separate document/issue and just link them
Might want to add a more "quickstart"/howto kind of doc as an addon/alternative, that just shows how to create tokens based on one or two examples, how to sign them,  and load them in databroker, but leaving out all the OAuth/JWT background
We might want to specifiy a "default" audience, although that may be "application side/implementation specific" whereas databroker assumes a default audience when no other configuration is given (and thus may rather be a topic for databroker docs)

We are about to archive this repo soon. If you consider this issue as important please file a new issue at one of the new Kuksa repos at https://github.com/eclipse-kuksa


Refactor minhealthy validation

Move minHealthy validation from reconciler into new webhook.
Depends on #142, don't merge earlier
/hold

/retest

/lgtm

/hold cancel

/retest


Removed the un-needed metadata key

Coverage remained the same at 98.667% when pulling b01e437b92b0b6220ef82ac7385200bee7932d30 on tomardern:patch-1 into 2d86cf8d73c39b27952b82ce428c199a2f3dbe94 on wswebcreation:master.

@tomardern
Tnx!


Link added to Nuget package for Graphs

@grprakash : Thanks for your contribution! The author, @SnehaGunda, has been notified to review your proposed change.

@grprakash thanks for your contribution, we will merge your PR soon. Just an FYI- we recommend using Gremlin.Net library over the Microsoft Graphs API. The Microsoft Graphs will be deprecated in future and we will provide all the needed support through Gremlin.Net. We will remove all the doc references to Microsoft Graphs library soon. For now, I can get your changes in.
#sign-off


11 errors after installing mod

Using latest commit of SMF 2.1: https://github.com/SimpleMachines/SMF2.1/commit/95a5a1d4ebaabbce301c1db2f00f3309e7125c8d
Got 11 errors in the log after installing the mod;

Is backtrace needed?

This is actually a SMF bug.  https://github.com/SimpleMachines/SMF2.1/issues/4926
Not sure what we can do to work around it yet.

This is still present with SMF 2.1 RC1 also.

Could you actually install the mod? I remember trying a few days ago and not being able to. I'll try again when I can.

I was, however I had to go back to the Package Manager and do it again. If you upload it and try to install it directly, it just shows an install page with blank actions and an install button that does nothing. I'm not sure if this is an emulation bug in SMF 2.1 RC1, or any issue with SimpleDesk.

I'm not sure, but that's probably because there are no rules for installing it with SMF 2.1 RC1, as in package-info.xml:
https://github.com/SimpleDesk/SimpleDesk/blob/e94e0cff46611728234da5243f1be639039b8498/package-info.xml#L17
I haven't digged, so I'm probably wrong

I'm not sure, but that's probably because there are no rules for installing it with SMF 2.1 RC1, as in package-info.xml:
SimpleDesk/package-info.xml
Line 17 in e94e0cf

I haven't digged, so I'm probably wrong

Ah, that could definitely explain it! I opened a bug report for that particular issue, (#99), so hopefully it is something that simple.

I've got a fix issued up to SMF repo that should clear this up by doing a silent ignore of hooks during package install/removal.  If it merges, it will be in the next RC.

Awesome! It is definitely still present in SMF 2.1 RC1 with the latest SimpleDesk repo, so it'll be nice once they have that fixed. The spam is quite worrisome if you don't know what is going on. xD

The SMF repo merged these changes.  I will close this, it will be fixed in the next SMF release.  It can be verified by using the git version of SMF 2.1.


sortField update does not push to the cloud

Describe the bug
I have a simple User and Notification model:
type Notification
  @model
{
  id: ID!
  recipient: User! @connection(name: "UserNotifications")
  sender: User! @connection
  message: String!
  createdAt: AWSDateTime
}

type User
  @model
{
  id: ID!
  givenName: String
  familyName: String
  email: AWSEmail
  notifications: [Notification] @connection(name: "UserNotifications", sortField: "createdAt")
  createdAt: AWSDateTime
}

When I added the sortField, it threw an error and refused to update:
UPDATE_FAILED   Notification AWS::CloudFormation::Stack Tue Feb 19 2019 16:43:20 GMT-0800 (PST) Embedded stack arn:aws:cloudformation:us-west-2:281461261113:stack/topsheet-20190213165923-apitopsheet-8KPKP6ACAH6H-Notification-BV4PI3P1RRGT/6c407f50-2ff5-11e9-b90a-02c3ece5f9fa was not successfully updated. Currently in UPDATE_ROLLBACK_IN_PROGRESS with reason: The following resource(s) failed to update: [NotificationTable, GetNotificationResolver, UpdateNotificationResolver, CreateNotificationResolver, ListNotificationResolver, DeleteNotificationResolver].

To Reproduce
Steps to reproduce the behavior:

Create the same models
Push to the cloud
See error message

Expected behavior
The sortField should be easily updated
Desktop (please complete the following information):

Mac

I have the same issue using CLI 1.1.2. Changing any property of the Connection annotation has the same effect. The root cause is that you cannot update a GSI on a DynamoDB table after creation, you have to make a new one with a unique name. Another complication is that you cannot create a GSI on a DynamoDB table whilst an existing one is deleting.

@chris-merapar I thought you are able to update the GSI on the DynamoDB tables now?

When starting from a brand new project, I was able to create the schema above without a problem. If you are having problems because you previously pushed a version that had @connection but no sortField, I would suggest trying to remove the @connection entirely (thus removing the GSI), pushing, and then re-adding the updated @connection with the sortField and push again.
E.G. Push with
type Notification
  @model
{
  id: ID!
  recipient: User!
  sender: User! @connection
  message: String!
  createdAt: AWSDateTime
}

type User
  @model
{
  id: ID!
  givenName: String
  familyName: String
  email: AWSEmail
  notifications: [Notification]
  createdAt: AWSDateTime
}

and then again with
type Notification
  @model
{
  id: ID!
  recipient: User! @connection(name: "UserNotifications")
  sender: User! @connection
  message: String!
  createdAt: AWSDateTime
}

type User
  @model
{
  id: ID!
  givenName: String
  familyName: String
  email: AWSEmail
  notifications: [Notification] @connection(name: "UserNotifications", sortField: "createdAt")
  createdAt: AWSDateTime
}

Any existing data included in the table will be re-indexed into the GSI so you should be able to query it as usual after the second push.

This workaround could be ok for a dev sandbox env but won't work in a production env. I would have to remove the connection, then propagate a release through all envs (dev, test, UAT, prod etc), then make a new release with the new connection, which is is a lot of downtime.

@chris-merapar This is an unfortunate side effect of DynamoDB. We are working on an RFC that will be released to GitHub soon that provides users more control over the index structures that are placed on a table. With the new directives in place, you will be able to make these changes in a purely additive fashion such that you do not experience downtime. In this case, you would be able to add a new index with the new structure that you want and then configure the connection to use that new index. Once you have deployed the new index and connection, you could later remove the old index once it is no longer necessary.

We launched support for custom indexes today. You can find docs for the same out here - https://aws-amplify.github.io/docs/cli/graphql#key
Please let us know if you're still not able to solve your problem through this solution and we'll re-open this issue for you.


Missing support for const annotation

JSON Schema that OpenAPI is based on, supports a special const keyword to denote values that is similar to minimum or maximum but denotes that a type can hold only one value. https://json-schema.org/understanding-json-schema/reference/const
Right now those keywords seem to be silently ignored (which seems like a separate problem - shouldn't it report some error or diagnostics about unsupported keywords?).

made the code change but i'm apprehensive to make a breaking release with just this change in it, would you be okay just using enum: [value] for now ?

Hm I could, yeah, but why would this be a breaking release? It seems strictly append-only?

Adding pub fields to pub structs is breaking, since manual constructions won't have these fields.

Ugh that's true. Maybe for the future worth adding a private _prevent_construction: (), field to prevent manual construction, so that you could make further additions without having to worry about breaking releases?
That way users will still have direct access to all the fields, but will have to go via Schema::default() + manual field initializers for construction.

The canonical way to do so is the #[non_exhaustive] attibute.
I've avoided it just because these structures should be complete and relateively stable. Tell you what I'll have a scan through the JSON Schema Validation spec and see if there's anything else missing, then cut a release.

The canonical way to do so is the #[non_exhaustive] attibute.

That one only covers pattern matching, but doesn't protect from construction.

Tell you what I'll have a scan through the JSON Schema Validation spec and see if there's anything else missing, then cut a release.

SGTM. As I said above, I think it might be useful to return an error on any unexpected fields except vendor extensions (which all must be under x- prefix anyway). That would help catch new unsupported features quicker than silently skipping over them.

It does protect from construction. See the reference.

return an error on any unexpected fields

This isn't something I want to do with the structures in this crate.

It does protect from construction. See the reference.

Ah I guess I always tried it only within the same crate. Fair enough.

This isn't something I want to do with the structures in this crate; it turns the dial too far in the other direction for my taste.

Hm but if the entire JSON Schema should be already implemented, then it shouldn't cause issues, right?
Alternatively, if you're strictly opposed to making it an error, how about collecting any unknown fields into a BTreeMap<String, serde_yaml::Value>? That would also allow consumers to at least catch any unexpected data instead of it being skipped over.

released in v0.11


Add BuildId to CSV and remove Orchestrator,BaseLink,BuildLink

Hey @janisz can I merge without signed commits?

Removed check for signed commits as it makes no sense if we squash commits


Add support for moderator view (patch included)

Hello,
At work I love having the "radio" but I often found myself having two tabs, one for the classic view with radio, another for the moderator view.
I made the radio mode work in the modview : modview.patch
It boils down to two things :

When in a moderator view (according to url), first observe the "window.body" until the ".mosaic-window-body" node is available,
Filter out the "moderator" part of the url when detecting the channel name

Thanks a lot and sorry for late response! I haven't checked this repository for a while.
I'll apply the patch and work on the new version soon.


dpkg_package with + in filename causes reinstall when not necessary

I created a ruby file called devel.rb which has the following content
dpkg_package "libtinfo5" do
  version "5.9"
  source "libtinfo5_5.9+20140118-1ubuntu1_amd64.deb"
  action :install
end

dpkg_package "tmux" do
  source "tmux_1.8-5_amd64.deb"
  action :install
end

I have the two deb package in the same directory as devel.rb which I downloaded from ubuntu mirror site:
http://mirrors.kernel.org/ubuntu/pool/main/n/ncurses/libtinfo5_5.9+20140118-1ubuntu1_amd64.deb
http://mirrors.kernel.org/ubuntu/pool/main/t/tmux/tmux_1.8-5_amd64.deb
When I run: chef-apply devel.rb -W -l debug there is a version mismatch reported and it reports that the package will get installed unnecessarily.
I seem to have narrowed this down to the deb file having a + within the filename.
For libtinfo5 dpkg reports 5.9+20140118-1ubuntu1
For libtinfo5 chef report 5.9.
It seems like chef stops at the first + instead of stopping at the _amd64.deb.
If possible could this behavior be changed so the version mismatch stops occurring and reinstalling of an already installed package not not performed.
I need to do this because I have to configure machines that have no internet access so I'm creating a cookbook that will contain deb packages because it can't see the ubuntu mirror sites.

we fixed this


Remove docdb mgmt package from master

This package is so old, that it starts to create trouble with our CI system. This is deprecated, has been replaced by azure-mgmt-cosmosdb, and src code is available on tags anyway:
https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-documentdb_0.1.3

Johan just came into the room and advocated for killing this package.
I will create a tag against latest master, just like I did for the azure-keyvault cleanup


Style inheritence

If no value is given for a style i.e. text color, inherit it from the parent text color

[x] parent inheritence

inheritance should by widget specific

[x] widget specific inheritance
doesn't see a good reason to support widget instance specific inheritance


Distinguish between absent and empty authorizationGroupUuids

Absent and empty authorizationGroupUuids settings in the dictionary are now distinguished: when a key is absent, it means anyone has access, when the key is an empty list (i.e. []), then nobody has access.
Closes AB#857
User changes

none

Superuser changes

none

Admin changes

none

System admin changes

[x] anet.yml or anet-dictionary.yml needs change
[ ] db needs migration
[x] documentation has changed
[ ] graphql schema has changed

Checklist

[x] Described the user behavior in PR body
[x] Referenced/updated all related issues
[x] commits follow a repo#issue: Title title format and these 7 rules
[x] commits have a clean history, otherwise PR may be squash-merged
[x] Added and/or updated unit tests
[ ] Added and/or updated e2e tests
[ ] Added and/or updated data migrations
[x] Updated documentation
[x] Resolved all build errors and warnings
[ ] Opened debt issues for anything not resolved here

LGTM. Most of my comments do not relate directly to this PR.
Screening & vetting seems to be broken now, but probably not by a change introduced by this PR.

Not related to this PR indeed, but it is being tracked in AB#885.


build(npm): switch to local dependencies + update readme

Depending on globally installed dependencies is an antipattern that causes problems
when people work on multiple projects that require different versions of typescript
or tsd. Local dependencies should almost always be used.
Local dependencies are also preferred by npm for run scripts, so npm run * will just
work and will use local dependencies instead of global.

thanks, fixed this in another push.
agree with the changes.


Create docs

Not sure if we need a full docs system or if we can get away with a big readme.md or another markdown file.
Regardless, we need some docs somewhere.

Docs added in #203


Improve log messages from info to error/warn if connection or data polling fails solves #184

I changed some places too ... but a bit "lower" (so no error, maximum warn ...)


Upgrades to Opensearch 2.0

Signed-off-by: Surya Sashank Nistala<EMAIL_ADDRESS>Description
Upgrades to Opensearch 2.0
Issues Resolved
#96
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Is there a way to see if we need handling for BWC for results stored in the async search result index

We are not changing index mapping/properties.
but from this release onwards when storing async search response in the index we won't pass the "type".
Hence there wouldn't be a need for BWC as index can accept both the old and the new doc structure.


Can't provision artifactory_permission_target resources

Describe the bug
A clear and concise description of what the bug is.
Requirements for and issue

[x] A description of the bug
[x] A fully functioning terraform snippet that can be copy&pasted (no outside files or ENV vars unless that's part of the issue). If this is not supplied, this issue will likely be closed without any effort expended.
[x] Your version of artifactory (you can curl it at $host/artifactory/api/system/version
[x] Your version of terraform
[x] Your version of terraform provider

Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.
I have an issue creating artifactory_permission_target :

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of jfrog/artifactory from the dependency lock file
- Reusing previous version of hashicorp/google-beta from the dependency lock file
- Reusing previous version of hashicorp/google from the dependency lock file
- Using previously-installed jfrog/artifactory v8.9.1
- Using previously-installed hashicorp/google-beta v4.72.0
- Using previously-installed hashicorp/google v5.10.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
data.google_service_account_access_token.default: Reading...
data.google_service_account_access_token.default: Read complete after 1s<EMAIL_ADDRESS>╷
│ Error: Invalid provider configuration
│
│ Provider "registry.terraform.io/jfrog/artifactory" requires explicit
│ configuration. Add a provider block to the root module and configure the
│ provider's required arguments as described in the provider documentation.
│
╵
╷
│ Error: Missing URL Configuration
│
│   with provider["registry.terraform.io/jfrog/artifactory"],
│   on <empty> line 0:
│   (source code not available)
│
│ While configuring the provider, the url was not found in the
│ JFROG_URL/ARTIFACTORY_URL environment variables or provider configuration
│ block url attribute.
╵

This my main.tf:
resource "artifactory_permission_target" "artifactory-prod-publish" {
  name = "artifactory.prod.publish"
  repo {
    repositories = [
      "generic-eksa-images-dev"
    ]
    includes_pattern = ["**/*"]

    actions {
      users {
        name        = "test.test"
        permissions = ["read"]
      }
    }
  }
}

My providers.tf

 provider "google" {
   alias = "impersonation"
   scopes = [
     "https://www.googleapis.com/auth/cloud-platform",
     "https://www.googleapis.com/auth/userinfo.email",
   ]
  }

  data "google_service_account_access_token" "default" {
   provider               	= google.impersonation
   target_service_account 	=<EMAIL_ADDRESS>   scopes                 	= ["userinfo-email", "cloud-platform"]
   lifetime               	= "1200s"
  }

  provider "google" {
    access_token	= data.google_service_account_access_token.default.access_token
    project         = "wd-ambt-art-cicd-prod"
    region          = "us-west1"
    zone            = "us-west1-a"
  }

  # Configure the Artifactory provider
  provider "artifactory" {
    alias = "test_instance"
    url           = "https://artifactory-aws.test.com/artifactory"
    access_token  = file("~/.artifactory-test-token")

  }

Artifactory EnterpriseX license 7.55.6 rev
terraform jfrog provider 8.9.1
Terraform v1.5.7
terragrunt  v0.45.5
expected behaviour will be seeing it working like it works if I replace ONLY the content of the main.tf file, proving that the provider configuration works, with the following
resource "artifactory_access_token" "audience" {
  provider          = artifactory.test_instance
  for_each          = var.service_accounts
  username          = each.key
  groups            = ["readers"]
  refreshable       = true
  end_date_relative = "9600h"
  audience          = "jfrt@*"
}

result:

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of hashicorp/google from the dependency lock file
- Reusing previous version of hashicorp/google-beta from the dependency lock file
- Reusing previous version of jfrog/artifactory from the dependency lock file
- Using previously-installed hashicorp/google v5.10.0
- Using previously-installed hashicorp/google-beta v4.72.0
- Using previously-installed jfrog/artifactory v8.9.1

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
data.google_service_account_access_token.default: Reading...
data.google_service_account_access_token.default: Read complete after 0s<EMAIL_ADDRESS>
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # artifactory_access_token.audience will be created
  + resource "artifactory_access_token" "audience" {
      + access_token      = (sensitive value)
      + audience          = "jfrt@*"
      + end_date          = (known after apply)
      + end_date_relative = "9600h"
      + groups            = [
          + "readers",
        ]
      + id                = (known after apply)
      + refresh_token     = (sensitive value)
      + refreshable       = true
      + username          = "test-service-account"
    }

Plan: 1 to add, 0 to change, 0 to destroy.
╷
│ Warning: Deprecated Resource
│
│   with artifactory_access_token.audience,
│   on main.tf line 56, in resource "artifactory_access_token" "audience":
│   56: resource "artifactory_access_token" "audience" {
│
│ This resource is being deprecated and replaced by artifactory_scoped_token
│
│ (and one more similar warning elsewhere)
╵

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

artifactory_access_token.audience: Creating...
artifactory_access_token.audience: Creation complete after 1s [id=2281827007]
╷
│ Warning: Deprecated Resource
│
│   with artifactory_access_token.audience,
│   on main.tf line 56, in resource "artifactory_access_token" "audience":
│   56: resource "artifactory_access_token" "audience" {
│
│ This resource is being deprecated and replaced by artifactory_scoped_token
╵
Releasing state lock. This may take a few moments...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

@carlitos081 Looks like you are using 2 separate .tf files? terraform cli will only process one .tf file/module at the root level (except override file) and since your main.tf is alphabetically comes before provider.tf, that is the file TF used in your example and ignored provider.tf.
To split your configuration into multiple files for better organization, you need to use TF modules.

Hi @alexhung not sure I follow, I'm using terraform from years and never had to do or heard about alphabetical order for tf file, can you elaborate?
If I use same file main.tf and provider.tf it works if in the main.tf I have this content:
resource "artifactory_access_token" "audience" {
  provider          = artifactory.test_instance
  for_each          = var.service_accounts
  username          = each.key
  groups            = ["readers"]
  refreshable       = true
  end_date_relative = "9600h"
  audience          = "jfrt@*"
}

but it doesn't if I replace it with this content:
resource "artifactory_permission_target" "artifactory-prod-publish" {
  name = "artifactory.prod.publish"
  repo {
    repositories = [
      "generic-eksa-images-dev"
    ]
    includes_pattern = ["**/*"]

    actions {
      users {
        name        = "grahame.connolly"
        permissions = ["read"]
      }
    }
  }
}

and it works without changing name around? Thanks

@carlitos081 This is the error message and what I was responding to:
╷
│ Error: Invalid provider configuration
│
│ Provider "registry.terraform.io/jfrog/artifactory" requires explicit
│ configuration. Add a provider block to the root module and configure the
│ provider's required arguments as described in the provider documentation.
│
╵
╷
│ Error: Missing URL Configuration
│
│   with provider["registry.terraform.io/jfrog/artifactory"],
│   on <empty> line 0:
│   (source code not available)
│
│ While configuring the provider, the url was not found in the
│ JFROG_URL/ARTIFACTORY_URL environment variables or provider configuration
│ block url attribute.
╵

Is this the only error message you get?
I don't know why swapping resources will make it work.

@carlitos081 Did you try moving the provider block to main.tf while leaving everything else unchanged?

@carlitos081 Ah, I just noticed that in your provider configuration you use alias attribute.
However in your artifactory_permission_target resource you did not include provider = artifactory.test_instance attribute, so TF is looking for artifactory provider which is not defined.

Hi @alexhung, you rock, I missed provider = artifactory.test_instance it now works, it was so silly, thanks a mill

Yes! Thanks @alexhung, that was the issue, so silly from my side, Thanks a mill!!!!


CHANGELOG: fix spelling error and add links to contributors

JFYI, sadly, I'm rolling the links back: it turns out that GitHub's contributor tracking on the release page works better if you don't add the manual links (which is, yeah, confusing)
I mean this part:


Navmesh generation gets confused when NavigationRegion3D isn't on origin

Terrain3D version
fd5adb0
System information
Godot v4.2.2.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; <IP_ADDRESS>22) - AMD Ryzen 7 3700X 8-Core Processor (16 Threads)
Is the issue reproducable in the demo?
Not applicable
Issue description
I was splitting my navigation up into multiple NavigationRegion3Ds, and noticed that they seemed to bake the navmesh wrong for Terrain3D, while it worked fine for normal physics objects. Each region was moved away from the origin as a node, which seemed to cause them to sample the terrain from another area.
When moving the regions back to the scene's origin, and using only the AABB filter region to set their boundaries, the generated navmesh lined up with the actual terrain.
The actual position of the NavigationRegion3D node is probably not correctly applied to the geometry that the Terrain3D provides to the navmesh baker.
(Sorry for the low-effort issue, I already got past this on my project so I'm just noting it for posterity)
Logs
No response

@TokisanGames I can take a look at this.


Swift 5.9 - run error

Sometimes when I press run, an error occurs.

SwiftFiddle is managed by Kubernetes. It is automatically restarted when a server down is detected.


Adding a TimeDeltaSensor

It waits for a timedelta after the execution_date

Quick debugging tip for using this with hourly schedules.
This uses execution_date and not start_date. Airflow runs DAGs at the end of their schedule (10:00 is run at 11:00).
So if you have a TimeDeltaSensor set for 10 minutes, it will always be true (11:00 > 10:10).
Remember to keep this in mind and adjust as necessary. Actual Delta = Desired Delta + Schedule Interval.

oh right. good catch! I'll actually change the code and clarify in the docstring

https://github.com/airbnb/airflow/pull/239


Please add ability to do Panoptic Segmentation

Ability to do panoptic segmentation. Right now, your pretrained network only does instance segmentation and not panoptic segmentation.

We used DeepLabv3+ to predict stuff and then combine things and stuff by the script provided in the panoptic segmentation paper. You can run them from their repos to get the panoptic segmentation results.


Bump minimum Python version to 3.7

Coverage remained the same at 86.878% when pulling 6f1cdccac4ce9269bdf692349db9cc7dbfc9f87f on bump-python-to-3.7 into 38c2678ead426fa9445c24add7cdac03191eb3e6 on master.


ValidationRuleSet not working with Required rule

when i have a validationrulest and add a required rule and others (e.g. email), then only email is validated, the required rule is ignored.
i think it is because string cannot be nil... why dont you check for empty string if type is string in the required rule?

I think this mainly occurs when the textfield validates itself.  When it triggers the ValidationRuleRequired, the text that is passed in is actually an empty string.

That's it Cody. This is perhaps poor implementation on my part. Will look out if any more people trip up on this and reconsider if yes.

@adamwaite In the interim, I've gotten around it with using a length validation rule (if anyone else asks this same question and needs a work-around).  Also, perhaps so you don't break backwards compatibility, you could just add a flag to the constructor, or something, a bit hacky, but at least it would be a bit of a "safer" change then.


Move cursor in command mode

Moving the cursor in command mode leads to seeking.

Do you mean text input mode?

No, command mode.

The legacy branch is no longer maintained, closing for now.


How to get current test/spec name in Detox/Jest

Description
Hello guys! I need some help.
I starting my tests with
detox test e2e/tests/learn.spec.js -c ios.sim.debug
here are logs from the console:
18:22:06.431 detox[53554] B jest --config e2e/jest.config.js e2e/tests/learn.spec.js
Determining test suites to run...18:22:06.994 detox[53556] i qase: Current PID: 53556
18:22:06.998 detox[53556] i qase: QASE_REPORT env variable is not set. Reporting to qase.io is disabled.
18:22:11.674 detox[53556] i learn.spec.js is assigned to 20AAB2E7-92ED-4311-1111 (iPhone 14)

So is there any way that i can get the current test suite name and put it into a variable?
I guess there is cause detox somehow gets the name to put it in the logs
Unfortunately Jest 29.4 does not have the expect.getState().currentTestName method anymore.
Your environment
Detox version: 20.4
React Native version: 0.71.6
Node version: 16.0.0
Device model: ios simulator
OS: ios 16.2
Test-runner (select one): jest 29.4.1

You can do that via a custom test environment if you want.
Read this: https://jestjs.io/docs/next/configuration/#testenvironment-string
// e2e/testEnvironment.js
const { DetoxCircusEnvironment } = require('detox/runners/jest');

class CustomDetoxEnvironment extends DetoxCircusEnvironment {
  async handleTestEvent(event, state) {
    if (event.name === 'test_start') {
      this.global.currentTest = event.test.name; // not sure test.name works, but it should be similar this
    }

    return super.handleTestEvent(event, state);
  }
}

module.exports = CustomDetoxEnvironment;

Inside your test file, you'll be able to access globalThis.currentTest accordingly.

Thanks for the suggestion! Didn't work for me for some reason
But i Did it that way and it worked!
`const { DetoxCircusEnvironment } = require('detox/runners/jest')
class CustomDetoxEnvironment extends DetoxCircusEnvironment {
constructor(config, context) {
super(config, context)
this.global.currentTestPath = context.testPath
}
}
module.exports = CustomDetoxEnvironment`
and then:
const currentTestFile = globalThis.currentTestPath


Missing documentation for "last_activity" flag in "Get show watched progress" request?

I noticed the flag "last_activity" in the request's documentation, but it there only mentions one possible value ('watched').
Is this the only possible value or can this flag have alternative values?

The default is aired. Not sure why the docs aren't rendering correctly, I'll look into that.


Expanding parent panels but allowing child nodes to open

Hi so I'm doing this to close expansion panels when another is clicked
  handlePanelChange = panel => (event, expanded,parent ) => {
     this.setState({
      expanded: expanded ? panel : false,
    });
  };
 <ExpansionPanel
      expanded={expanded === node.value } onChange={this.handlePanelChange(node.value)} >

This works for when another parent expansion panel is clicked. It closes the other; however, this doesn't allow me to open the nested expansion panel. So if I open an expansion panel and then try to click on child nested expansion panel, it wont open. I guess because it's trying to close the expansion panel. Have any direction on how I can keep the expansion panel open if a child expansion panel within the parent is clicked. but close it if another parent expansion panel is clicked.

Please provide a full reproduction test case. This would help a lot 👷 .
A live example would be perfect. This codesandbox.io template may be a good starting point. Thank you!

@oliviertassinari
Hi so I've created a sandbox
https://codesandbox.io/s/qxpj7zxqn9
I want parent panels to close on click of another parent panel. But if you notice if you click search, and then click on "How to search" child panel, it doesn't open. Because my expansion is closing it on click of another. I'm not sure how to change it such that if there is a child panel, then allow it to expand. I only want expansion panels to close on click of another parent panel. This component is in the tree.js file of the sandbox. Any direction would be appreciated. I've read the Material UI docs and can't figure out how to do this.


Not all checks returned for repo

Describe the bug
Hi, this might not be a bug, but I didn't spot documentation that gave me the answer - apologies if I've missed something.
Reproduction steps
Steps to reproduce the behavior:

run curl command (with jq formatting output), see results

$ curl -s https://api.securityscorecards.dev/projects/github.com/websocket-client/websocket-client |   jq -r '. as $input | "Repo Nam
e: \($input.repo.name)", "Score: \($input.score)", (.checks[] | "\(.name) Score: \(.score), Reason: \(.reason)")'

Repo Name: github.com/websocket-client/websocket-client
Score: 5.4
Maintained Score: 10, Reason: 12 commit(s) out of 30 and 10 issue activity out of 30 found in the last 90 days -- score normalized to 10
Code-Review Score: 4, Reason: found 18 unreviewed changesets out of 30 -- score normalized to 4
CII-Best-Practices Score: 0, Reason: no effort to earn an OpenSSF best practices badge detected
License Score: 10, Reason: license file detected
Dangerous-Workflow Score: 10, Reason: no dangerous workflow patterns detected
Packaging Score: -1, Reason: packaging workflow not detected
Token-Permissions Score: 0, Reason: detected GitHub workflow tokens with excessive permissions
Binary-Artifacts Score: 10, Reason: no binaries found in the repo
Pinned-Dependencies Score: 0, Reason: dependency not pinned by hash detected -- score normalized to 0
Fuzzing Score: 10, Reason: project is fuzzed
Security-Policy Score: 0, Reason: security policy file not detected
Vulnerabilities Score: 10, Reason: 0 existing vulnerabilities detected
Signed-Releases Score: -1, Reason: no releases found
Branch-Protection Score: 0, Reason: branch protection not enabled on development/release branches
SAST Score: 0, Reason: SAST tool is not run on all commits -- score normalized to 0

15 check results returned
$ curl -s https://api.securityscorecards.dev/projects/github.com/ossf/scorecard |   jq -r '. as $input | "Repo Name: \($input.repo.na
me)", "Score: \($input.score)", (.checks[] | "\(.name) Score: \(.score), Reason: \(.reason)")'

Repo Name: github.com/ossf/scorecard
Score: 9.7
Binary-Artifacts Score: 10, Reason: no binaries found in the repo
Branch-Protection Score: -1, Reason: internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
CI-Tests Score: 10, Reason: 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
CII-Best-Practices Score: 5, Reason: badge detected: passing
Code-Review Score: 10, Reason: all changesets reviewed
Contributors Score: 10, Reason: 50 different organizations found -- score normalized to 10
Dangerous-Workflow Score: 10, Reason: no dangerous workflow patterns detected
Dependency-Update-Tool Score: 10, Reason: update tool detected
Fuzzing Score: 10, Reason: project is fuzzed
License Score: 10, Reason: license file detected
Maintained Score: 10, Reason: 30 commit(s) out of 30 and 0 issue activity out of 30 found in the last 90 days -- score normalized to 10
Packaging Score: 10, Reason: publishing workflow detected
Pinned-Dependencies Score: 9, Reason: dependency not pinned by hash detected -- score normalized to 9
SAST Score: 10, Reason: SAST tool is run on all commits
Security-Policy Score: 10, Reason: security policy file detected
Signed-Releases Score: -1, Reason: no releases found
Token-Permissions Score: 10, Reason: GitHub workflow tokens follow principle of least privilege
Vulnerabilities Score: 9, Reason: 1 existing vulnerabilities detected

18 check results returned
Expected behavior
This page says "There are currently 18 checks made across 3 themes: holistic security practises, source code risk assessment and build process risk assessment." I guess I would expect the full set of checks (18) to be returned, even if I was told it the repo hadn't been assessed against this check?

This is intentional, although perhaps not documented.
For a longer explanation, see https://github.com/ossf/scorecard/issues/3438#issuecomment-1701426865

Thanks @spencerschrock. Wondering if maybe an explanation could be added here or here?

Hmm, to me this is more something specific to the API, not the tool. So I would expect it to be under that part of the README. https://github.com/ossf/scorecard/blob/fbffff18e0fb62e55c1f1420c1f11d764a2de073/README.md?plain=1#L157-L165

Also, it would be good to have it here - not sure where the source is?

The website is in another repo:
https://github.com/ossf/scorecard-webapp/blob/main/scorecards-site/content/home.md

Hi @spencerschrock just to confirm I've understood this correctly:
If we make a request to the API and there aren’t GitHub action published results available, it’ll use the weekly cron. However, in the weekly cron, CI-tests, contributors, dependency-update-tool, webhooks are disabled, so wouldn’t be returned.

Hi @spencerschrock just to confirm I've understood this correctly:
If we make a request to the API and there aren’t GitHub action published results available, it’ll use the weekly cron. However, in the weekly cron, CI-tests, contributors, dependency-update-tool, webhooks are disabled, so wouldn’t be returned.

Correct. With the caveat that the repo might not be in the weekly cron either, in which case you would 404

Additionally to adding this explanation on the README.md (Scorecard REST API section), we could also have it on the securityscorecards.dev/viewer page too, I have faced this question a few times and I was wondering if I could add the missing checks or not.

+1 to adding ? for any missing checks in the viewer.

Is this still need help?


Clash in Editing Mode with Obsidian Tasks

Describe the bug
Icons in Editing Mode change back to ":Icon:". Also, it doesn't help changing mode Editing->Reading->Editing. Only things that helps is opening the note again.
To Reproduce
The bug happens along with Obsidian Tasks being used. When setting task as done, the document in which the task was created loses all the icons (in Editing Mode), they go back to being in the ":Icon:" format.
Expected behavior
Icons stay as icons.
Screenshots

Additional context
Maybe it should be fixed on Obsidian Tasks side? I don't know, sounds like it might be a quick fix on your side. Also it might be something that could clash in Iconize with some other plugins/things in Obsidian, but wasn't reported yet.

this should be fixed with the latest version v2.11.12


How long did TSM take to train from scratch on Kinectics ?

Hey Hi,
Thank you for your work.
I am trying to train TSM online version on kinectics with resnet 50 and it has been two days and it has not passed two epocs.
How long did it take to train TSM network from scratch online version for both for resnet 50 and mobilenetv2? I just wanted to make sure if i am in the right path.

Hi, if you train the model on 8 GPUs, it should finish in roughly 2 days.

Thanks

Hello, If possible could you specify which GPU's where used? And where you bottlenecked by IO for the video data?

Hi, to be more specific, it takes about 49 hours to train a ResNet-50 TSM on Kinetics using 6 V100 GPUs. So it is about 1.5 days to train with 8 V100 GPUs.
Regarding data loading, if you are training an 8-frame model, data loading usually does not delay training. But it might be slow to load data when taking 16 or more frames as input, depending on the hardware.

Thank you very much!

One last quick question. We are trying to train mobilenet V2 from scratch the online version on kinetics.Can you share us the hyper parameter that you had used in training mobilenetv2 online version on kinetics dataset?
parameters like lr,epochs,weight decay,batch size,num of workers?
Also confirm if  the change below is correct for the online training script(i just modified the shift part of the code such that the shift is happening unidirectional in channel dimension),or do we have to make any more changes ?

Temporal shift implementation of online version

        out = torch.zeros_like(x)
        **out[:, :1, :fold] = x[:, -1:, :fold]  # shifts one way**
        out[:, 1:, fold: 2 * fold] = x[:, :-1, fold: 2 * fold]  # shift right
        out[:, :, 2 * fold:] = x[:, :, 2 * fold:]  # not shift

hi,dear
could you please help me ?
https://github.com/mit-han-lab/temporal-shift-module/issues/43
https://github.com/mit-han-lab/temporal-shift-module/issues/42
https://github.com/mit-han-lab/temporal-shift-module/issues/41
thx


Can you provide the pre-trained model？

Can you provide the pre-trained model？

Please find the pretrained model in DAT-CVAE/code/ad-ptvae_param.pt.


LLaMA3 8b variant

Added a llama3 8b variant to fms.
fixed bos token id during inference testing

we'll have to think about the naming. IMO llama2.7b isn't great since it looks like it's saying that the version of the model is 2.7, not that it's version 2 with variant 7b.

we just found a bug on our LlamaConfig for llama3 configs with @pavi2707 and @sahilsuneja1, we are missing the Rope ratio parameter, which is different for the llama 3 models. It is 10000 for llama 2, 500000 for llama 3 (8b). It's a pretty small change, so I can either make it myself on top of this PR, or you add it.

would be nice if this could get merged :)

@JRosenkranz maybe in a follow-up PR we can update the name? llama3.1 just came out today. calling this llama3.8b seems potentially-confusing. Maybe llama3_8b would be clearer to separate the version from the size?


No Zoom Tool?

In understand that the new interface is designed for compatibility with touch devices, but it sure would be nice to have a good old magnifying glass zoom tool.  Scroll/spread often doesn't approach the economy of zooming to a specific rectangle.

More zoom comments.  This from Joe Donovan in Lowell:
"Also would it be possible to install a map zoom box with the zoom in/out tools, the Shift+Click/Drag functionality works great but I have doubts users here will be savvy with this method."

Box zoom remains available by holding the shift key and dragging a box.  This is functionality built into Leaflet.  We expect the majority of users will use the mouse scroll wheel, zoom buttons, or two-finger touch zoom.

Just for the record, we've had several requests to get the zoom tool back also.  Our users seem to prefer box zoom, and only our GIS users get/remember the shift-click.


move to using cranelift-module to emit structures rather than faerie

This doesn't completely move to using object, but it seems like a good stopping point for discussion.
The only real ugliness is the traps_to_module_traps/write_trap_table division.  Ideally, these would be a single function, but the borrow checker says that the ModuleCompiledFunction that comes out of Module::define_function represents a borrow on the Module itself, so you can't have a single function that takes &mut Module and &ModuleCompiledFunction.  (ModuleCompiledFunction isn't actually exported, either, which seems like an oversight.) Ergo, we have to do a dance to satisfy the borrow checker.  Maybe it would have been a good idea to just make Module::define_function take a trap sink instead of trying to have cranelift-module backends manage the traps themselves, as suggested in @bytecodealliance/wasmtime#1184.

I agree that we should change cranelift-module to accept trap sinks rather than emit a TrapSite vector. Do you want to take that one or should I?

I will handle this.  Thanks for the review!


Vision for Dexie

TL;DR
Just want to share my thoughts and visions for dexie. This issue is a working draft and I may update this text going forward.
Support for complex expressions
Chained where clauses and orderBy() on collections are something that have been asked for (#87, #155, #167, #168, #171, #228, #297). These can be realized using compound indices and cursor joining techniques, and the resulting code does not need to be that complex. I've been designing a lot already about how an arbritary expression engine could function to allow queries like the one below:
db.friends
    .where('name').startsWithIgnoreCase('a')
    .where('age').above(25)
    .orderBy('lastName')
    .toArray();

This would require index [name+age+lastName] (or [age+name+lastName])
The query could be realized by executing the following steps internally:
let uniqueNames = await db.friends.where('name').startsWithIgnoreCase('a').uniqueKeys();
let uniqueNamesAndAges = await db.friends.where('[name+age]')
    .inAnyRange(
        uniqueNames.reduce((result, name) =>
            result.concat([[name, 25], [name, Infinity]]), [])
        , false)
    .uniqueKeys();

let collectionsToJoin = uniqueNamesAndAges.map(tuple =>
    db.friends.where('[name+age+lastName]').between(
        tuple.concat(Dexie.minKey),
        tuple.concat(Dexie.maxKey)));

// Here, we should spawn parallell cursors on collectionsToJoin (this part is missing
// in Dexie api today) but call .continue() on the cursor with the lowest value each
// time. That would make the end result sorted on the last keyPath ('lastName').

The above example will need to be generalized. The key to make it work would be to build everything on cursors, so that the result of this operation also generates a cursor to call .continue() on etc.
I have some thoughts about implementing this algorithm in a separate repository and npm package and let dexie 3.0 depend on it. The benefits of that would be that the algorithm could be shared by other indexedDB libraries as well.
The core would be to execute a complex expression. Then Collection api could generate such an expression.
One challenge is the API for expression complex expressions like:
(name = 'foo' AND (age = 99 OR (emailAddress = 'foo@bar' AND shoeSize < 7)))

There is no problem implementing the search for such query. Every expression needs to be canonicalized into a matrix with ANDs on the Y-axis and ORs on the X-axis, then execute compound queries like the one samplified earlier and do that for each column of OR statements.
The issue is more of how to find an API that allows the user to express any complex expressions. I have three possible solutions for this. Do we have any better ones to add to my three proposals?
Option 1: Extending the Collection API to put together complex collections:
db.friends.where({name: 'foo'}).and (
    db.friends.where({age: 99}).or (
        db.friends.where({emailAddress: 'foo@bar'}).and('shoeSize').below(7)))

Option 2: Allowing to execute the complex expression with object notation
db.friends.expression({
    op: 'and',
    left: {
        keyPath: 'name',
        op: 'equals',
        value: 'foo'
    },
    right: {
        op: 'or',
        left: {
            keyPath: 'age',
            op: 'equals',
            value: 99
        },
        right: {
            op: 'and',
            left: {
                keyPath: 'emailAddress',
                op: 'equals',
                value: 'foo@bar'
            },
            right: {
                keyPath: 'shoeSize',
                op: 'below',
                value: 7
            }
        }
    }
});

Option 3: Allow plain javascript expressions (á la LINQ) and parse using jsep
function (name, age, email, maxShoeSize) {
  return db.friends.filter(f =>
    f.name == name && (
        f.age == age ||
        (f.emailAddress == email && f.shoeSize < maxShoeSize)),
    {
        name, age, email, maxShoeSize // Provide closures in second argument.
    })
}

I admin that this 3rd option would boost some coolness if realized, but being pragmatic, I think it will be less intuitive than the 1rst option anyway. Arrow function are not that great on expression stuff like startsWithIgnoreCase().
The main drawback with this last option is we would need the closures to be given in a second argument to the filter method. Otherwise we couldn't query for parameters.'
After writing down these options I am leaning towards the first approach only though. Even though it is a little redundant having db.friends mentioned several time. Complex expressions are rare in real life. Most expressions could be expressed without complex parentheeses anyway. So let's optimize for the common cases but have a way to express the complex ones when needed.
Let Table derive from Collection.
With the possiblity to chain where-clauses, we would at least be able to make Table a subclass of Collection, if not just removing Table and only have Collection. There would be some API challenges of doing so. Table.prototype.delete() has a different meaning from Collection.prototype.delete() today. However, this could easily be distinguished by the presence of a parameter in the arguments to delete(). Other challenges are Table.hook and Table.mapToClass(). It would complicate the API allowing subscribing to a filtered collection and I do not see the use case right now. In that sense, it would be easier to let hook be a Table-only property and let Table derive from Collection rather than incorporating Table into Collection in total.
Non-Sparse Indexes
IndexedDB will only index certain types (numbers, strings, Dates and arrays of such). It won't index fields of type boolean, null, undefined or Object. This is good for the most parts, but some methods won't work as expected. WhereClause.notEqual() and WhereClause.noneOf() won't find objects where the properties are of a non-indexable type.
It would be great if an index could be marked as "non-sparse" using some sigil. For example an exclamation mark:
db.version(x).stores({
    friends: '++id, !isGoodFriend'
});

// Now we could use this index in not-equal and we can provide
// non-indexable types in queries to it:
db.friends.where('isGoodFriend').notEqual(true).delete();

The challenge is how to rewrite fields of non-sparse indexes. It could be done using hooks. Before an object is saved, non-sparse indexes are type-checked. They could then be converted to a string prefixed with '\uffff' followed by a string representation of the object (such as JSON.stringify). This would lead to that non-indexable types receive a sort order between strings and arrays. When an object is retrieved from the database, it must be rewritten back to it's original form.
Another challenge is how to specify non-sparse compound indexes and non-sparse multiEntry indexes. Probably we should support the exclamation mark both within a compound index and for the whole. The type check should check for array and go through the array items and check each item.
// Allow either:
db.version(x).stores({
    friends: '++id, ![isGoodFriend+id]'
});
// or:
db.version(x).stores({
    friends: '++id, [!isGoodFriend+id]'
});

Whether or not to allow non-sparse primary keys is an outstanding question. Don't see the same benefit for that as primary keys are typically more controlled than document fields. They don't have booleans, null or undefined anyway.
Depending on the code size needed to implement this, it may suite better in an addon than included with dexie.
A generic bulk method
The idea is to narrow down all writing operations into a single bulk() method that takes an Array of operations. Each operation could be an add, put, update or delete. This is all about 1) Optimizing for bulk, 2) Minimize code, 3) Enabling new features like asynchronic bulk hooks. Let the existing methods put(), add(), update(), modify() and delete() just use that single bulk() method to perform the actual changes. This way we might actually lower the code size as a bonus. The main goal for this would be what is described below - to support asynchronic hooks #14, #372.
A simple 'writing' hook
Dexie hooks are triggers that are executed when an operation happens. They execute within the same transaction as the operation is happening within. Current 'updating' hook provide the existing object along with the changes to apply to it. IndexedDB API is not designed for this, so we have to fetch the current object prior to calling the hook. This extra fetch only happens if the hook has any subscribers. However, in many cases the user would only want to be able to inject changes whenever an add() or put() is about to be performed and doesnt care about the previous state of the object.
A 'writing' hook would be called before Dexie is about to call IDBObjectStore.add(), IDBObjectStore.put() or IDBCursor.update(). All three cases will have the full object to put.
Computed fields would be easier to implement on a 'writing' hook rather than the existing 'creating' and 'updating' hooks. For example, take the full-text search sample. It needs to subscribe to both 'creating' and 'updating' and the 'updating' case is cumbersome to write. If we had a 'writing' hook, the sample would just subscribe to that one in place of the 'creating' hook. Also, it wouldn't slow down the performance as much as with the current hooks as the fetch() wouldn't be needed.
Asynchronic bulk-hooks
As requested in #14 and #372, it would be very powerful if the hooks could return a promise and perform asynchronic tasks before resuming the underlying operation. If we enable this, addons could implement constraints on foreign keys (ON DELETE CASCADE etc). A reading hook could resolve foreign keyed members on returned instances. There are other use cases as well. However to optimize performance for bulk operations, the hooks should rather take an array of operations than being called operation-by-operation.
Thus, a redesign of the hook API should be done. Considerations:

Today we call the hooks when the system is about to perform an operation. Hooks can then subscribe to onsuccess and onerror to get notified again when the operation completes or fails. How should this be handled if we have the opportunity to rethink it?
The new hooks should just be a layer between the user and the generic bulk() method. As argument, it should take an array of operations DatabaseOperation[] and a commit function to forward the operations to, modified or not, then return the promise from the commit function, or do attitional tasks after the commit() function has resolved. Possible interface of DatabaseOperation could be:

type DatabaseOperation = AddOperation | PutOperation | DeleteOperation;

interface AddOperation<T, TPrimaryKey> {
    op: 'add';
    key?: TPrimaryKey; // May be omitted if autoIncrement.
    obj: T;
}

interface PutOperation<T, TPrimaryKey> {
    op: 'put';
    key?: TPrimaryKey; // May be omitted in add() operation with autoIncrement.
    obj: T;
    curr?: T; // Current object before the change.
}

interface DeleteOperation<T, TPrimaryKey> {
    op: 'delete';
    key: TPrimaryKey;
    curr?: T; // Current object before the deletion.
}

Hooks doesn't always need to know the current state of the object. User could provide an option whether it requests current object or not. Not fetching current object improves performance.
Maybe we're good enough with 'writing' and 'reading' hooks. 'writing' hook could replace 'creating'/'updating' in case user opts in for fetching current object - making a diff would reveal whether a create or update is taking place and what the updates would be.
The new reading hook could need to inspect the collection being queried before modifying the returned instance. Specifically for the case of auto-resolving foreign keys into properties, this might be done conditionally. For example. the dexie-relationships addon could implement Collection.with() as a lazy method setting the with-options as properties onto the returned collection, then have a 'reading' hook that will resolve foreign keys if with() was used and according to the options provided to with() method.
Backward compatiblity to current CRUD hooks are important, so we should have an adapter for them and continue testing the current unit tests for CRUD hooks.
Naming. Today we have db.table.hook('creating' | 'reading' | 'updating' | 'deleting'). Would need new API for the new hooks. What about: db.table.hook('bulk', subscriber, options), db.table.hook('read', subscriber).type BulkSubscriber = (
        operations: DatabaseOperation[],
        commit: (operations: DatabaseOperation[]) =>Promise<TPrimaryKey>
    ) => Promise<TPrimaryKey>;

type ReadSubscruber = (
        objects: T[],
        collection: Collection<T,TPrimaryKey>
    ) => T[] | Promise<T[]>;

Collection.observe()
Extend Dexie.Observable with Collection.prototype.observe() that would let the query become a live query. In practice, it would subscribe to db.on('changes') and filter each change against the collection to find out whether the change would affect the result or not. If it would, re-execute the query (collection.toArray()) and notify the subscriber.
Challenges: The API. A simple API could be something like:
db.orders.where('customerId').equals('foo').observe(orders => {
    if (!stillWantToObserve) return false;
    updateOrdersDiv(orders); // Update view.
}).catch(error => {
   // Failed!
});

This would cover the parts that ES-Observable covers, but with a simpler API. It could be converted to an ES-Observable or Rx.Observable if needed. But should we use the ES-Observable API built-in instead? That would complicate the API.
let subsription = db.orders.where('customerId').equals('foo')
    .toObservable()
    .subscribe({
        next(orders) {
            if (!stillWantToObserve) return subscription.unsubscribe();
            updateOrdersDiv(orders); // Update view.
        }
        error(error => {
            // Failed!
        }
    });

Which one is best? Should we allow both or just one of them?
db.observe()
Sometimes you'd need to do a complex query upon several async calls in a chain and observe the result. Not always will this be possible to express in a single collection. Using zones, we could allow a very intuitive API that allow non-reactive patterns be converted to reactive patterns.
I'm taking the sample from API Reference on how to join on foreign keys:

var db = new Dexie('music');
db.version(1).stores({
    genres: '++id,name',
    albums: '++id,name,year,*tracks',
    bands: '++id,name,*albumIds,genreId'
});

// This method is non-reactive. It produces a Promise. Not an observable.
// Later down, I'll show how this could be observed anyway!
function getBandsStartingWithA () {

    // Query
    return db.bands.where('name').startsWith('A').toArray(bands => {
        return Promise.all (bands.map (band =>
          Promise.all([
            db.genres.get (band.genreId),
            db.albums.where('id').anyOf(band.albumIds).toArray()
          ]).then (result => {
            // Set genre and albums as direct properties on each result
            [band.genre, band.albums] = result;
            return band;
          });
        ));
    });
}

The sample above is nothing new.
Below comes the magic. We can reuse promise-based sequences
and convert the whole thing to an observable using db.observe():
let subscription = db.observe(getBandsStartingWithA).subscribe({
    onNext (bands) {
        if (!stillWantToObserve) return subscription.unsubscribe();
        updateBandsListDiv(bands); // Update view.
    },
    onError () {
        // fail!
    }
});

How would it be implemented?

db.observe() creates a new zone with state saying "we are in observation mode"
When any collection within the zone is realized into a promise, it checks if current zone is an observation zone. If so, it will internally call observe() on itself.
When anything changes in any of the queries involved, the following happens:
A. All internal Collection observers are unsubscribed to.
B. The entire function is re-executed and the result of the end-promise is propagated to the subscriber to db.observe().

Conflict-free sync
There's a lot research being done about Conflict-free replication data and CRDT types. These types are quite complex and require the API user to design their model for it. However, I believe I have a concept for conflict free replication based on isomorphism. The idea is this:

Application Developer encapsulates database-facing code in an isomorphic class (a service)
Each method can optionally be decorated for conflict-free replication.
When called, the decorator generates an entry in the change log about the operation and the parameters given to it. When changes reach the server, it executes the same operation using the same parameters. This is possible only if the server has the same isomorphic service and can lookup the same code to execute.

However, it is not always that conflict-free is needed. Most of the times, it is good enough with merging changes as Dexie.Syncable does now. Typically you would only need certain operations to be conflict free. Decorator expresses whether a method wants conflict-free operation or not. If conflict-free, then the method call and its arguments are registered in the change log. Otherwise, we would do as we do now - just record CREATEs, UPDATEs and DELETEs.
This requires we have an isomorphic API - a database with dexie API at the server. For some database engines it is possible to execute javascript within the database engine itself (postgres, mongodb and SqlServer with .NET stored procedures and Chakra). That way, a decorated method may be looked at as a stored procedure written in javascript.
Isomorphic Database
Have Collection implemented for other backends like PostgreSQL, MongoDB or SQLServer. The point with this is to be able to write components that could be used also when offline is not essential. The database-facing code could run on either server or client, work both offline and traditionally with fast-loading server-side rendered pages.

Lots of nice ideas here. Complex expressions and async hooks are definitely nice to haves.
Combining Table and Collection is also a nice idea. It would be nice when we have one API to care about. I find it a bit confusing now that some functions exist on Table others on Collection and some Table methods are actually Collection methods and so on. Removing WhereClause would also be nice if you ask me, maybe with complex expressions it would be possible to only have Collection and Table as a subclass of Collection and no WhereClause.
You mentioned in an other issue that you would like to refactor Dexie a bit. Do you have any thoughts if this would this be done as part of some of these ideas or before any of the things here are implemented?
Do you have any time frame in mind when you would like to start implementing the things you mention here? I would love to help but I don't know if my IndexedDB/Dexie knowledge and time (my vacation will be over soon) is enough.

Thanks @nponiros for this feedback. These are long-term wishes. Nearest in future is probably the support for complex expressions to let Table be subclass of Collection. After that, or possibly in parallell, the new bulk() method and the new hooks. Collection.prototype.observe() and db.observe() would be possible to implement in current version of Dexie.Observable. A change entry from db.on('changes') can be tested against a collection using _ctx.isMatch, _ctx.algorithm and _ctx.keyRange. However, it will be much easier when the new engine is in-place.
I've started the implementation of the new expression engine. Still not published the branch but will soon do even though it's very WIP. When done, it will replace the current Table, Collection and WhereClause classes with new ones. Doing it in typescript this time.  Will still encourage PRs for the master branch. Will include everything that is being merged into master during the rewrite.

Sounds good. I'm looking forward to seeing what you come up with. TypeScript also sounds good. Once there is a built process in place, I can start porting Syncable and Observable to TypeScript.

@dfahlander just an idea, if you don't have a preferred order for the features maybe we could create a poll and ask the community what the most important features are/what people need the most.

That would be good. Do you know a good tool for that?

Hmm I thought github supported polls. I guess I was wrong. Unfortunately I don't know any tools but this seems intersting: https://github.com/adambutler/poll . You create a poll and share the generated link. Another possibility would be to open an issue, have each feature in its own comment and let the users give thumbs up/down as a voting method. This is not very efficient I guess but at least it would be directly in the Dexie issue tracker.

What about this?

http://feathub.com/dfahlander/Dexie.js

Works for me :)

I've added "A simple 'writing' hook" to the list on Feathub. That's the one feature I care about most among those mentioned in the list of features mentioned at the start of this issue. (I don't mean to say the other features are bad but writing hook support is a more pressing issue for me.) I recently had to customize a Dexie instance and this required writing a "create" and an "update" hook whereas a "writing" hook would have been sufficient.

regarding adding support for other types as indexes I agree that this makes more sense as part of an addon.


Search by string parameter doesn't work correctly if string starts at "eb"

Doesn't work (returns 400)
http://<IP_ADDRESS>:5000/fhir/Practitioner?_id%3Aexact=eb3e0a10-dc5d-4d1d-9d57-21e4a3dcb1ab%2Cf1a69cbc-61c7-4b70-951b-5260ecef06fa
Works!
http://<IP_ADDRESS>:5000/fhir/Practitioner?_id%3Aexact=06b70ac5-c659-4464-ad6e-6f3d78640141%2C129163ec-04d1-4b14-a2f0-c0309810d24b
Criterium.Parse() method doesn't work correctly. Private method Criterium.findComparator parse prefix of value. But it shouldn't be called with string typed parameter.
According to https://www.hl7.org/fhir/stu3/search.html#prefix
For the ordered parameter types of number, date, and quantity, a prefix to the parameter value may be used to control the nature of the matching.
It means that type of the parameter should be determined before extracting a prefix.
I will submit PR which pratially solves this issue, but we need common solution.

@SWATOPLUS, thanks for reporting this, I looked further into it and it should be fixed by #149. I will forward those fixes to STU3 and R4 since the develop branch is DSTU2. Please do verify at your availability.


Support python 3

This is an enhancement request to support python 3.
If you would like to vote for python 3 support, please comment below with:

the exact versions of python 3 you require
the reason you use python 3 instead of 2.7
if there is a project on hold due to no python 3 support

Thank you for your help.  You may also contact me with details at<EMAIL_ADDRESS>

Hi @btorresgil   - we have a growing codebase that is almost entirely python3, yours is one of the only 2 modules we use that does not support python3.
We use python3 due to the strong recommendation in the python ecosystem that 2.7 not be used for new codebases, and our codebase is entirely written in the last 12 months or less.  We also utilize a variety of (albeit small) python3 features.
We do have a few new security tools being developed this year that will rely heavily on pandevice functionality, and we will not implement these tools with 2.7 due to the need to reuse organization-centric code of ours that is in the python3 codebase.  These tools are likely on hold until pandevice has python3 support or we find a reasonable alternative package.
We would love support for 3.5.3.  I wish I could say that we could contribute towards the effort of python3 support, but we lack the resources and professional software development experience on our team of network engineers.

@FliesLikeABrick
Python 3 support has been added to the develop branch and will be released as version 0.5.0 very soon.  Thank you for your comments above, they really helped us prioritize this feature.  Please let us know your experience with pandevice in python 3.
Thanks!

@btorresgil  thank you very much - I was extending our use of the PAN API this last week and noticed that python3 happened to be working!  So far the experience is positive, no issues but I will actively engage or submit patches if we come across any.  Thanks again!


Added rawTexts and rawAttrs for ATOM feeds

For example:

let sub = info.rawTexts["/feed/subtitle"] as String?
let url = item.rawAttrs["/feed/entry/media:group/media:thumbnail"]?["url"] as String?

For example: let url = item.rawAttrs["/feed/entry/media:group/media:thumbnail"]?[2]?["url"] as String?


Network authority not set with replicator spawner

Godot version
4.0 dev #28174d531b
System information
Windows 10
Issue description
When using the replicator, and setting it up to handle the spawning of scenes, the network authority is not set to the clients. Followed https://godotengine.org/article/multiplayer-changes-godot-4-0-report-4 example.
Steps to reproduce
Create a basic setup with replicator.spawn_config. Then put movement behind an is_network_authority() check. You can only move if you're the server, even though it is a client that is being spawned in. If you set the network authority to be the client prior to spawning on the server, no one can move the client that is behind the auth check.
One other thing that I noticed, that wasn't immediately obvious, was handling the server spawning a character for itself and replicating that to any client that connects later.
Minimal reproduction project
network.zip
Main scene is Lobby.tscn. You can just run that, it'll run as Client. Then you can press "Q" to spawn a new instance as server.

Thanks, this is currently expected (i.e. only spawn from server to client is supported) but will be fixed with the new MultiplayerSpanwer node.

The new proposal is implemented via #55950 .
The authority is still not automatically set but you can do it using custom spawn functions.
Spawning from client to server is also now supported (when spawners are properly configured).

@Faless is there upcoming work to have authority automatically set during spawn?

Not right now, I'm not convinced assigning the authority of the spawned entity by default is the right choice.

Note that I'm not against it, I'm just not convinced it's common case, but I might be wrong, we can totally add it as an option, it should be quite easy.

Yeah, I had a bit of a look at how the spawner works and it seems like implementation should be simple.
I was caught out because I created a node on the server, assigned the multiplayer authority, then added it to the scene tree so the spawner would replicate it to clients (and auto-spawn) - I had assumed network authority would be implicitly synced, like a nodes name.
I feel like the current authority should be the only one to change a nodes authority, rather than having each client responsible for figuring it out.
Perhaps I'm misinterpreting network authority though. I'm assuming that each player in a game would be the network authority for their own character node, thus allowing them to call RPCs on the server. Is that a bad starting point?
What would be your recommendation? A custom spawn function? Is multiplayer_authority something that can be exposed to MultiplayerSynchronizer?
Or is the best idea to name network-spawned nodes after the peerID, and use that to determine who should be network authority? I think I saw that in the bomberman example on your PR.

Is there an @rpc(server) / @rpc(authority) type of annotation? Something to allow an RPC to be called on the server/authority by any client.
I initially used the any_peer like with the first demo. I wasn't sure if I was doing the right thing though, since it required the boilerplate to validate get_remote_sender_id matches the node name. Which felt like I was just rolling my own version of multiplayer authority. I've flip-flopped in the other direction now, and just made the player the network authority (https://github.com/MitchReidNZ/Godot-Things/commit/6729ef429161cf9bdfc0b190b294559ea0663c73)
I'll need to play around with that second demo a bit. I like the idea of letting the NetworkSynchronizer handle everything!
Though I suspect there will still be times when I want to call an RPC against the server. @rpc(any_peer) + validating remote sender ID isn't really a problem, but it does seem a bit boiler-platey for what I assume is a very common use case.
Sounds like I'm just trying to take the lazy way out by setting the authority to the player, when I should really go back to using the node name to define a 'local' authority for players. A little bit of extra boilerplate isn't the end of the world!

@rpc(any_peer) + validating remote sender ID isn't really a problem, but it does seem a bit boiler-platey for what I assume is a very common use case.

In real life scenarios, almost every time you receive a call from a client you will want to know/use the remote sender ID.


drivers: uart: esp32: Ignore compiler warning on device init

-Wtautological-compare warning: self-comparison always evaluates.. was thrown when async api mode selected. Turned off warning around driver struct inits only.

@dean-at-evos I was not able to reproduce that issue using tests/drivers/uart/uart_async_api/.
Can you provide something?
Btw, uart async is only currently only supported for ESP32-C3 and ESP32-S3 SoCs as from Kconfig entries:
select SERIAL_SUPPORT_ASYNC if (SOC_SERIES_ESP32C3 || SOC_SERIES_ESP32S3)

@sylvioalves Ahhh, seems that you only get it when you build with;
-DEXTRA_CFLAGS=-save-temps=obj which I have been doing in debug builds, I didn't think to check on a regular build ...
so
west build -p -b esp32c3_devkitm tests/drivers/uart/uart_async_api/ -- -DEXTRA_CFLAGS=-save-temps=obj
Gives;
[142/163] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_esp32.c.obj
/home/z/zephyrproject/zephyr/drivers/serial/uart_esp32.c:1023:86: warning: self-comparison always evaluates to false [-Wtautological-compare]
 1023 | DT_INST_FOREACH_STATUS_OKAY(ESP32_UART_INIT);

My bit of research on this warning suggested that it is a bit difficult for the compliler to tell when used in macros when this warning is legit, I figured that turning it off here was pretty harmless and low impact.
(Also I noted that you use dma properties in the overlay for the uart ... these don't appear documented anywhere, then looking I realised that in our app the dma probably isn't being used as I don't have these in DT. Is there any guidance on the use of these properties, it does look like the properties aren't used as such just the presence sets .uhci_dev = &UHCI0 ? I can add doc in another PR if that helps. Or is it better to use a boolean property dma-enabled like in the SPI driver, I can do another PR, for something like this or just doc what is there?)

ESP32S3 and ESP32C3 have the GDMA peripheral which is implemented by dma_esp32_gdma.c. The DMA documentation is split between base.yaml, dma-controller.yaml and espressif,esp32-gdma.yaml
The best example we have on this is the esp32s3_devkitm.overlay from the uart_async_api test to show how the dts is supposed to look.
The dma-enable properties is required in SPI driver because ESP32 and ESP32S2 does not have the GDMA peripheral and the DMA operations are controlled withing the SPI domain. But this does not apply to UART for ESP32S3/C3.

@LucasTambor  Thanks for clearing that up, I often forget that the tests contain useful examples!
Although your answer raised a few more questions, and since it is unrelated to this PR I have put in a new issue #66678 regarding the dma setup and SPI stuff....

So, upstream guys? Is this useful? This patch does fix a problem in our CI/CD.

@dean-at-evos would you update your environment and check whether you still have that issue?

Sorry for the delay, confirmed that this annoyance is resolved now, as at 3.7rc1, but probably earlier, this is just where I am testing at.