Refactor indexing pipeline

Before the hub can listen or send Farcaster messages, the Hub must index the required EVM events. It is necessary because new FIDs and signers are created onchain. The hub cannot validate and store protocol messages until we have the user identity data, such as FIDs, signers, and storage capacity.
The current approach is to index events from the known contracts before starting the hub. Once the older events are processed, we start the hub and listen to messages on the p2p network. We process the new events in a background thread as they arrive.
Here are a couple of proposals for improving this approach:

Currently, we are calling eth_getLogs serially. It is hard to parallelize because of the dependencies among various events. For instance, you cannot process the "remove signer" event without first processing the "add signer" event for the same signer. A similar issue exists for FIDs. Here is an alternative approach that we could adopt. We could first download all the events from start_block to latest_block and store them in the database. This could happen concurrently. Then, we could sort the downloaded events (by block number) and process them locally to populate the FID and Signer tables.

We could make the indexing pipeline more generic by making it work with different databases. This is not relevant to the Teleport project per se because Teleport only works with SQLite (which feels like the correct choice so far). However, I noticed that the Indexer only needs certain APIs to index all the required Farcaster identity data into a database. For example, any database, be it SQLite, Postgres Redis, etc., if it implements specific trait(s) (for instance, public API could be StoreEvent, StoreFID, StoreSigner, RemoveFID, RemoveSigner, etc.) can be used to index all relevant events. Perhaps we can make the Indexer a standalone project within OpenFarcaster. Teleport can use it by implementing the Storage trait for SQLite and passing in the SQLiteStorage struct to the Indexer.

I think for historical indexing this makes sense, but for real-time indexing in the background im not sure if the overhead of download first, sort and process later makes sense. I also wonder if this problem can be solved by just doing snapshot syncs instead. I know Hubble supports snapshot syncs and has a certain format, we can explore being compatible with that or having our own snapshot format if we're not compatible. In that case, I presume most people will use snapshots and the historical sync issue is largely solved by that.

Does this become much harder to do later? I'm not sure if this is the best use of time right now even though it makes sense but isn't immediately necessary. If you think this will become 10x harder over time it may be worth considering.

Another question here is I believe FC migrated to a new contract due to an issue with the older ones
I'm not 100% sure if that was a new contract address entirely or if the contract is upgradeable -> we should check and make sure we're not missing events prior to the migration

I also wonder if this problem can be solved by just doing snapshot syncs instead.

I think this is precisely what we need here. Snapshot sync would be ideal. Do you know where we can get the latest snapshot?

Does this become much harder to do later?

No, I think we can move it out later. I just wanted to call out because I thought it is a good opportunity to abstract out some parts that are more generic. I will create a different issue to track this.

Another question here is I believe FC migrated to a new contract due to an issue with the older ones

Yes, they have migrated a couple of times to new contract addresses. But all farcaster contract migrations re-emits the events for older FIDs and signers. It seems that it is sufficient to index only the latest contract.
For instance, after indexing the current contract, if I check the first 10 FIDs, I get FIDs 1 through 10, which is what I expected.
select * from fids order by fid limit 10;

Looked into snapshot syncs. Here is how you can download the the snapshots:

Get the S3 key for the latest snapshot by calling this API: https://download.farcaster.xyz/snapshots/MAINNET/DB_SCHEMA_7/latest.json
Download the actual snapshot from: https://download.farcaster.xyz/

The problem here is that these snapshots are rocks db dumps. It means we need to restore the rocks db in memory, extract the data (eg: casts, links etc.) and store it in the our SQLite db into correct tables. Creating this pipeline seems like a big enough task in itself so I will create a new issue to discuss that.

Going to close this since it's taken care of.


Infra: allow for multiple install_hooks() running at the same time

[NOTE: this PR is rebased on top of #447 since it uses some functionality introduced there in the testing code]
Infra changes:

Added ruff and mypy into dev dependencies (will probably add them to GH Actions in a later PR)
Split the DagsHubFilesystem into two classes: DagsHubFilesystem that does the file access stuff, and HookRouter that runs the hook infra + routes the functions to the correct DHFilesystem.
Added test scenarios testing multiple hooks running at the same time

Functional changes:

Now multiple install_hooks() can be running at the same time and any file access function will be routed to the correct filesystem.
uninstall_hooks() now has fs and path arguments that remove specific filesystems. By default all filesystems will be removed
Add a get_mounted_filesystems function that returns a list of tuples of (<full mount path>, <fs object>)

Shouldn't be anything backwards-incompatible from a user API perspective

 Python Client: Allow multiple install_hooks at the same time


Adds Dark Mode

Scope
This pr updates the website to have a dark/light mode toggle (#56), leveraging tailwind css' dark mode functionality. I also bumped the versions of phoenix, phoenix_html, and phoenix_ecto because the current version was not compatible with elixir v1.12/OTP 24.
Video
https://user-images.githubusercontent.com/1526888/119243833-9aca4d00-bb27-11eb-9424-bb28ba6867c0.mp4

This is awesome @kinson! I'll pull this down to check things out but it looks good to me 🎉

Thanks @doomspork let me know if any of the colors need to be adjusted

@kinson what is your Twitter handle?

It is @_kinson_ - and glad to help! Thanks for the guidance :)


Response Interceptor does not consider path prefix of full endpoint for matching against rules configuration

RequestTransformerInterceptor class correctly adjust the incoming original full endpoint to match to prefix path. However the ResponseTransformerInterceptor does NOT correctly adjust it.
Here’s the DEBUG logs entry for REQUEST (correct)
`10:35:38.410 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG c.n.r.RequestTransformerInterceptor:96 handleRequest - request endpoint: get /gateway/ICAS_Mortgages_SPO/1.0/sites/Operations/lauren_test/TEST/_api/web
10:35:38.410 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG com.networknt.reqtrans.ConfigUtils:17 findServiceEntry - findServiceEntry for /gateway/ICAS_Mortgages_SPO/1.0/sites/Operations/lauren_test/TEST/_api/web and method: get
10:35:38.411 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG com.networknt.reqtrans.ConfigUtils:18 findServiceEntry - mapping size: 1
10:35:38.413 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG com.networknt.reqtrans.ConfigUtils:24 findServiceEntry - prefix: /gateway/ICAS_Mortgages_SPO/1.0
10:35:38.414 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG com.networknt.reqtrans.ConfigUtils:25 findServiceEntry - method: get
10:35:38.415 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG com.networknt.reqtrans.ConfigUtils:37 findServiceEntry - prefix = /gateway/ICAS_Mortgages_SPO/1.0@get
10:35:38.415 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG c.n.r.RequestTransformerInterceptor:98 handleRequest - request serviceEntry: /gateway/ICAS_Mortgages_SPO/1.0@get
10:35:38.417 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG c.n.r.RequestTransformerInterceptor:105 handleRequest - endpointRules: 1
10:35:38.418 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG c.n.r.RequestTransformerInterceptor:132 handleRequest - requestTransformRules list count: 1
10:35:38.419 [XNIO-1 task-2]  e0PQAxrFSNmY0G_i1iRyXQ DEBUG c.n.r.RequestTransformerInterceptor:135 handleRequest - ruleID found: header2path-transformer-request`

Here’s the DEBUG logs entry for RESPONSE (incorrect)
`10:35:39.020 [XNIO-1 task-2]   TRACE c.n.r.ResponseTransformerInterceptor:96 handleRequest - ResponseTransformerInterceptor.handleRequest starts.
10:35:39.037 [XNIO-1 task-2]   TRACE c.n.r.ResponseTransformerInterceptor:104 handleRequest - original response body = <?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code>-2147024891, System.UnauthorizedAccessException</m:code><m:message xml:lang="en-US">Attempted to perform an unauthorized operation.</m:message></m:error>
10:35:39.038 [XNIO-1 task-2]   DEBUG c.n.r.ResponseTransformerInterceptor:119 handleRequest - auditInfo is NULL. Grab endpoint from exchange.
10:35:39.039 [XNIO-1 task-2]   DEBUG c.n.r.ResponseTransformerInterceptor:124 handleRequest - request endpoint: /gateway/ICAS_Mortgages_SPO/1.0/sites/Operations/lauren_test/TEST/_api/web@get
10:35:39.040 [XNIO-1 task-2]   DEBUG c.n.r.ResponseTransformerInterceptor:135 handleRequest - endpointRules iS NULL
10:35:39.042 [XNIO-1 task-2]   ERROR c.n.h.c.ModifiableContentSinkConduit:119 terminateWrites - Error executing interceptors: null`

I thought this issue was fixed weeks ago. Just checked the code, and only the request transformer is fixed. I think we need to move the ConfigUtils to the utility module so that it can be shared by both request and response transformers.

Yes, I'll raise a PR later today

This has been merged.


Add install wasm bytecode

fixes #620

Hi @leonmak, is this one ready for review?

Thank you so much @leonmak! I'll merge this and let's take the conversation back to the corresponding issue for award information.


Auto fix distorts json in docs string

Describe the bug
The JSON inside of the docs string gets distorted when indentation is fixed.
And the JSON data of the response should match
"""
{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "message"
      ],
      "properties": {
        "type": "string",
        "enum": ["Unauthorized"]
      }
    }
  }
}
"""

Steps to reproduce

npx gherlint --fix features/

Expected behavior
Formatting of json should not be distorted
And the JSON data of the response should match
  """
  {
    "type": "object",
    "required": [
      "error"
    ],
    "properties": {
      "error": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "type": "string",
          "enum": ["Unauthorized"]
        }
      }
    }
  }
  """

Actual behavior
The indentation is added properly but JSON gets distorted.
And the JSON data of the response should match
  """
  {
  "type": "object",
  "required": [
  "error"
  ],
  "properties": {
  "error": {
  "type": "object",
  "required": [
  "message"
  ],
  "properties": {
  "type": "string",
  "enum": ["Unauthorized"]
  }
  }
  }
  }
  """

Duplicate of https://github.com/gherlint/gherlint/issues/75


Turn on/off Map markers when building highlights are on/off

We want to toggle on/off the markers on the map whenever the building highlights get turned on/off.

Wont fix, the user is still supposed to tap on the building marker to open the building information drawer.


Resource binding and texture resampling

Fixed wrong UVs in the vertex buffer
Ported binding.rs, added a sampler
Changed the shader

The program now acts as a rescaler, a source image of any size is inserted and is "stretched" to the requested size. The image is scaled using hardware bilinear interpolation.

I haven't looked at the code yet, but I have a problem with the "rescaler" concept. IIUC, it's gonna rescale any image to fill the complete surface. So it will stretch everything, right? In some application, this is unacceptable. The image must keep it aspect ratio. It should stretch until it reach one side, them stop.
Maybe I complain too fast and it's just one of the many steps in your grand plan? :D

I thought the same thing, but I'm still unsure about the specific requirements. It's easy to adapt the implementation from this point, which is why I did it this way. We could meet soon to discuss it in more detail.
Are you referring to this stretch mode?

Source: https://docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html#stretch-aspect

This is exactly this stretch mode that we need! Excellent gif, btw :)
If it's easy to adapt, then it's perfect.

I was able to implement the desired stretch mode by manipulating the UVs, but I'll submit it in another PR


Pre parse qc performance

Looks good, and we should use the optimization either way, but does explicitly closing the dataset and/or using del or even changing xarray versions help with this issue

Superseded by https://github.com/Arbol-Project/gridded-etl-tools/pull/131


New package: AdoptOpenJDK.OpenJDK.17.OpenJ9 version <IP_ADDRESS>

Microsoft Reviewers: Open in CodeFlow

Possible duplicate package entry.
Similar installer SHA256 hash found in manifest:

InstallerSha256: 5d50f769b5969d629e95d1cd91a09114db28a56f0487b94f81bf1d87a678e3bc

manifests\a\AdoptOpenJDK\OpenJDK\17\<IP_ADDRESS>

Hi @SpecterShell,
Is this package already in the repo?

Possible duplicate package entry.
Similar installer SHA256 hash found in manifest:

InstallerSha256: 5d50f769b5969d629e95d1cd91a09114db28a56f0487b94f81bf1d87a678e3bc

manifests\a\AdoptOpenJDK\OpenJDK\17\<IP_ADDRESS>

Hi @SpecterShell,
Is this package already in the repo?

The manifests should have been removed in https://github.com/microsoft/winget-pkgs/pull/164822

The manifests should have been removed in #164822

https://github.com/microsoft/winget-pkgs/pull/164822

This seems to be another version.

The manifests should have been removed in #164822

* [New version: AdoptOpenJDK.OpenJDK.17 version <IP_ADDRESS> #164822](https://github.com/microsoft/winget-pkgs/pull/164822)

This seems to be another version.

The AdoptOpenJDK.OpenJDK.17 package previously uses the OpenJ9 edition, which has been replaced by the Hotspot one in that PR. This PR moves the OpenJ9 one to another package, although for some reasons the OpenJ9 edition is 2 version behind the Hotspot one.

This package installs and launches normally on a Windows 10 VM.


Adding tooltips to the interface?

This is a small, low-priority thing I'd like to add in to Empress later on down the line -- recording it here for future reference.
We had some requests to add tooltips to the Qurro interface (screenshots here), and this didn't actually represent much added work -- once things are set up with Bootstrap, etc. it's only ~3 lines of HTML per tooltip element.
This could complement some of the more complex functionality @kwcantrell has been working really well -- for example explaining what we mean by Gradient, Trajectory, etc. in the context of animations.

One thing worth mentioning: with #386, borders that match the background color are faster to add since nothing needs to be drawn in these cases. Would be nice to fit this into a tooltip for the barplot border options.


[cherry-pick for release 1.10]added pod annotation key: JobRetryCountKey = volcano.sh/job-retry-count

Feat #127
Signed-off-by: belo4ya<EMAIL_ADDRESS>(cherry picked from commit 34e43a83783366056ed2bcd9c0e48094c54e1dcb)

Please also make sure that all master commits have been cherry-picked to release-1.10: )

Please also make sure that all master commits have been cherry-picked to release-1.10: )

Yes, with this pr included, that's all

/lgtm


Try to get rid of the Makefile used to build the Markdown-based documentation

See conversation here: https://github.com/hypered/curiosity/pull/5

I think using the Makefile within a Nix build is ok, and it's useful to be able to incrementally rebuild the documentation without Nix. So let's keep it for now.


Mirror logic to enable fake builder set the topic name for all the messages at once

After the last fix introduced here: https://github.com/mateusjunges/laravel-kafka/pull/270
the logic was not copied also at the ProducerBuilderFake causing fake producer not to publish messages for the correct topics.
Now even if we pass the message details using the publisher methods or even if we do this using the withMessage function, the tests will operate correctly.
Cheers!

@mateusjunges Can you please take a look ? 👀

Thanks!


Fix build for Bevy 0.5

Addresses https://github.com/Nilirad/bevy_prototype_lyon/issues/89
Also updated the README example

Thanks for the contribution. However, as Bevy's plugin guidelines state, it's better to not pull in all the default features of Bevy, since they unnecessarily increase compile times and

Fair point. updated PR


Mongoose upgrade

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
We've detected an issue with your CI configuration that might affect the accuracy of this pull request's coverage report.
To ensure accuracy in future PRs, please see these guidelines.
A quick fix for this PR: rebase it; your next report should be accurate.

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall first build on mongoose-upgrade at 87.7%

Totals

Change from base Build<PHONE_NUMBER>:
87.7%

Covered Lines:
1080

Relevant Lines:
1154

💛  - Coveralls


CME Binary : /usr/bin/env: invalid option -- 'S'

Describe the bug
I downloaded latest cme binary in actions tab, unzipped it and executed it on an ubuntu 18.04. It outputs
 /usr/bin/env: invalid option -- 'S'
in the terminal
To Reproduce
Steps to reproduce the behavior:

Go to https://github.com/byt3bl33d3r/CrackMapExec/actions/runs/99968531
Download
Unzip
Execute cme

Expected behavior
Normal output of options similar to an help output
Screenshots
If applicable, add screenshots to help explain your problem.

Crackmapexec info

OS: Linux Mint 19.2 Tina,             Kernel: Linux 4.15.0-54-generic
Version of CME : v5-dev
Installed from latest release

Try python3 ./cme


Add links to external projects using Duktape

There's been several requests to add links to external projects using Duktape. The intent would be to point to as many different kinds of projects where Duktape has been used, not to provide an exhaustive listing.
If you're using Duktape in a reasonably sized project and would like to be mentioned, you can either e-mail me directly or comment on this issue.

Megatools 2.0 uses duktape extensively (in the dev branch): https://github.com/megous/megatools

@megous Added the following to master:

https://github.com/svaarala/duktape/commit/0fcc4f24434840e3cda1d5d0ec2977887406463a

Thank you. :+1:

the fantasy console TIC-80 is using Duktape too:
https://github.com/nesbox/TIC-80/search?q=duktape&type=code


Alembic configuration

Is alembic configured correctly? When I change the model, and run alembic revision, it generates an empty migration. It does not seem to pick up the changes made in models files.

I've used alembic here only as tool for SQL migrations, not as migrations tool for sqlalchemy. Models in the models package are just pydantic models (I've used this as startpoint for project structure). I'll possibly add instead of raw queries encode/orm in future or totally replace alembic with yoyo-migrations package.

Is alembic configured correctly? When I change the model, and run alembic revision, it generates an empty migration. It does not seem to pick up the changes made in models files.

How did you resolve this migration problem afterwards?

emmm, so when i need to change the model struct, which way i can choose? I'm using this repo for my new project, only 5 days late have to submit...URGENT

emmm, so when i need to change the model struct, which way i can choose? I'm using this repo for my new project, only 5 days late have to submit...URGENT

I have not changed the way this project uses alembic, so the only way so far is to write migrations manually. See the existing migration for an example of how to do that.

Write migrations self?I can't find the definition for table structure,so how to modify table fields and run command to autogenerate migrations?emmm,now it seems unclear, may i need to change use salalchemy or anything else?

I can't find the definition for table structure

The project structure can be found in the readme: https://github.com/nsidnev/fastapi-realworld-example-app#project-structure
This is the only migration that exists in this project: https://github.com/nsidnev/fastapi-realworld-example-app/blob/dc1aa666aa200f6a719bc4374aa8f2f94755e427/app/db/migrations/versions/fdf8821871d7_main_tables.py

so how to modify table fields

Use operations from alembic to alter or modify tables/columns and write migrations with them: https://alembic.sqlalchemy.org/en/latest/ops.html

run command to autogenerate migrations

You can't do that with this project because it simply doesn't use sqlalchemy to work with the database outside of migrations. The database part is built using aiosql, pypika and pydantic.

may i need to change use salalchemy

If you want to use sqlalchemy, you can adopt examples from the fastapi documentation by rewriting the database part of this project, or look for other examples that use fastapi, but this time with sqlalchemy. Perhaps this project just doesn't suit your needs.


Add missing React Component method, getDefaultProps

static getDefaultProps(): DefaultProps;

Do class-based components have this method? For legacy createClass components, we already support getDefaultProps.

no they do not, but it is my understanding that React.createClass is not deprecated

@gf3 You're correct, createClass-based components are still supported and we already implement the getDefaultProps function for them. Typing for createClass components is hardcoded into Flow currently, so changes to this file will not affect them. If you try to use getDefaultProps on a createClass-based component, you should see that it already works.

hmm, i'm not finding that to be the case:
src/components/cost-breakdown.js:64
 64:   getDefaultProps() {
                        ^ return. Missing annotation

same with a few other methods like render and shouldComponentUpdate, but not others like componentWillReceiveProps and getInitialState:
src/components/cost-breakdown.js:99
 99:   shouldComponentUpdate(nextProps: Object, nextState: Object) {
                                                                  ^ return. Missing annotation

src/components/cost-breakdown.js:127
127:   render() {
               ^ return. Missing annotation

The missing annotation error means that Flow thinks you should add an annotation (in this case, of the return type), not that Flow doesn't understand the function. Flow asks that you annotate the parameter types and the return type of exported functions.

(Also, it looks like Avik relaxed this constraint in a recent commit, so the return type of getDefaultParams is actually inferred, and therefore doesn't need to be annotated. This change is already on master and will be in the next release.)

splendid, thanks sam!


tabry-generate-bash-complete doesn't read flagargs

I suspect this has something to do with the Tabry::CLI::AllInOne helper, but both the uniq_function_id and ruby_path flagargs (here) are ignored when running tabry-generate-bash-complete.
When I log them out, they are empty strings, so they don't get defaulted as specified here: https://github.com/evanbattaglia/tabry/blob/master/lib/tabry/shells/bash.rb#L17

Sorry about that. Fixed the ruby flag. Can you please try again? The uniq_fn_id was always working for me.
$ bin/tabry-generate-bash-complete mycli foo.json -r myruby -i $ bin/tabry-generate-bash-complete mycli foo.json -r myruby -i UNIQID|grep UNIQID
_tabry_UNIQID_completions() {
...


Load Objects and matrix

Hi I'm working in a 3D model like this, where I have OBJ mesh and a model.dat file with worldmatrix.
1M.OBJ.zip
I'm going to read entities in this way

but some translation / rotation is wrong
How can I get right positioning of each instance ?
X3dModel.zip

the only way is this... can be is it correct?

I would like to know why the x3d file was separated into obj file.
if you want that an object's transform, rotation to be inherited from parent object,
please refer to below comments

X3D are too big. My new idea is to store entities in single obj/mtl files , and another file to list all bom tree dependencies.
I've fixed my code

It could be faster than obj loader if I serialize this

and then reload it for creating the first new mesh ?
... but I can't get "List of material" serialized... why?

OK, I see
Can I get your entire source including  serialization and deserialization

it's not simple because is a part of another project (that export from proprietary legacy 3D file to obj).
This is the way I serialize (I'm sorry I have not cleaned my code yet from MTLLoader....)
_omissis_

[Serializable]
public class ThreeEnt
{
    public THREE.Geometry G { get; set; } = new THREE.Geometry();
    public List<Material> M = new List<Material>();
}

_omissis_

 private void Make3JsObjects (string outputpath)
 {
     var objFiles = System.IO.Directory.GetFiles(outputpath, "*.obj");
     foreach (string thisfileobj in  objFiles)
     {
         string thisFilemat = System.IO.Path.ChangeExtension(thisfileobj, ".mtl");
         string thisFile3js = System.IO.Path.ChangeExtension(thisfileobj, ".3js");
         var M = new THREE.MTLLoader();
         var mc=M.Parse(thisFilemat);
         var L = new THREE.OBJLoader ();
         L.SetMaterials(mc);
         var O1 = L.Load(thisfileobj);
         THREE.Mesh meshOriginale = (THREE.Mesh)  O1.Children[0];
         meshOriginale.Geometry.ComputeBoundingBox();
         ThreeEnt outEnt = new ThreeEnt();
         outEnt.M.AddRange(meshOriginale.Materials);
         outEnt.G = meshOriginale.Geometry;
         var so = JsonConvert.SerializeObject(outEnt);
         if (System.IO.File.Exists(thisFile3js)) System.IO.File.Delete(thisFile3js);
         System.IO.File.WriteAllText(thisFile3js,so);

     }
 }

and this is how I deserialize it

 If System.IO.File.Exists(File3JS) Then
     Dim meshjs = Newtonsoft.Json.JsonConvert.DeserializeObject(Of ThreeEnt)(System.IO.File.ReadAllText(File3JS)) JsonSerializer.Deserialize(Of ThreeEnt)(System.IO.File.ReadAllText(File3JS))
    O1 = New Group
    meshOriginale = New THREE.Mesh(meshjs.G, meshjs.M)

    O1.Add(meshOriginale)

@hjoykim you had time to check how to serialize the data correctly?

hello
Since it's been a very busy season these days, I haven't been able to take a look at your serialization code.
and execution result of your code,
It seems that JsonConvert in the Newtonsoft.json package fails to serialize some classes to json.
The material class cannot be serialized at all.
I think that it need more time to find out the problem.
If you're in a hurry, you should probably write your own serialization class and use it.
Is there anything you have done so far to resolve this issue?
Let us know if you see any notable results

thanks. Just wanted to know the progress.
Do you think it's worth thinking about the serialization/deserialization method instead of using obj files to generate the scene, in terms of loading speed?

I don't know what scene you want to create,
Looking at your sources so far
It seems that you are constructing the scene by converting .obj and .mtl into .3js json format.
In my opinion, if you convert obj and mtl files to json, all the characteristics of the object will not be converted to json.
There will likely be some loss, and it will also be a problem with loading speed. As you will know by trying it, class to json or json to class takes a lot of time.
If you want to manage objects with one file, it would be better to use another 3d format such as x3d, stp, or gltf etc.
If I were to do something similar to yours, I would probably keep the obj and mtl files.
I hope you make a wise choice.

@hjoykim
I did a quick test using BufferGeometryLoader instead of OBJLoader , saving a reduced json. OBJloader is faster.

another try and save the attributes to a binary file and then read it back. Now it's really fast.
from 15 seconds to 1!
mmh I have to manage materials and groups ...
this is how  I save:

and this is how I load

I've exported material and Geometry groups (DrawRange) in binary files .

2000 Meshes loaded in 2 seconds!

You've defined your own file format for saving and loading
that's good idea. saving and loading objects to binary file is one of the best


/c not needed in channel url

Related Issue/Addition to code

/c in youtube url not needed

Type of change

[ ] This change requires a documentation update

Proposed Changes

Removed the /c in youtube url to Web Dev Junkie's YT channel

@codyseibert https://youtube.com/webdevjunkie takes you to the channel too, the /c makes the link look a little bit long, and it's not needed.

Thanks!


[Bug] setAccessCondition()causing error on create operations

Bug report
What I did
I wanted to make us of the new setAccessCondition feature for my CRUD controllers. To test it I added this code into the setup() method of one of my controllers:
$this->crud->setAccessCondition(['update', 'delete'], function ($entry) {
    return $entry->id==1 ? true : false;});

What I expected to happen
I expect that the callback is only run for the specific operations.
What happened
When performing a create action I get this error:

I didn't expect the callback method to be run here because obviously, during the create operation, there is no $entry.
What I've already tried to fix it
??
Is it a bug in the latest version of Backpack?
Yes
After I run composer update backpack/crud the bug... is it still there?
Yes
Backpack, Laravel, PHP, DB version
When I run php artisan backpack:version the output is:
### LARAVEL VERSION:
<IP_ADDRESS>

### BACKPACK PACKAGE VERSIONS:
backpack/basset: 1.2.1
backpack/crud: 6.4.2
backpack/generators: v4.0.2
backpack/permissionmanager: 7.1.1
backpack/pro: 2.0.18
backpack/theme-coreuiv4: 1.1.1

Hey @hagealex
The closure function is expected to run/check in every operation, helping us to hide the buttons from the current operation.
Notice that we are on list operation but controlling other operation's access+buttons(update & delete).
The first param is to specify which operation's access will be modified and this is working fine.
BUT you are right too! The documented code is expected to run flawlessly.
Hey @pxpm please check what's wrong here https://backpackforlaravel.com/docs/6.x/crud-operations#handling-access-to-operations
I tried to escape the error, but none worked!

if(is_object($entry))
if(!is_null($entry))
if($entry!==null)

Hey @hagealex thanks for the report.
I think the docs are misleading in this example, since what you are telling CRUD is that: run this access closure on EVERY operation, but actually you want to run it in the list operation (when you have entries in the table) or check if there is entry or not in the closure.
There is no $entry on every operation as you said, and Backpack will return null when no entry is present, in that case should be the developer the one to check if he wants to allow something with/without an entry.
We can either change the closure to deal with empty entries: is_null($entry) ? true : ($entry->id === 1 ? true : false) or add that access closure only to the list operation:
$this->crud->operation('list', function() {
        $this->crud->setAccessCondition(['update', 'delete'], function ($entry) {
            return $entry->id==1 ? true : false;
    });
});

I've added this example to the docs, as I think it's the most appropriate scenario.
Let me know if you have any doubts or the example is not clear enough.
Thanks @karandatwani92 for bringing this to my attention 🙏
Cheers 🥂

@pxpm  and @karandatwani92 thank you for your support here! Now it's much more clear for me how to use this feature the right way!

Hey guys @pxpm @karandatwani92 ,
I have the same problem, I include the code in the list operation and it still isn't working.
protected function setupListOperation()
    {

        $this->crud->operation('list', function() {
            $this->crud->setAccessCondition(['update', 'delete'], function ($entry) {
                return false;
            });
        });
...

Even making anything false it allows Update and Delete.

Could you help me?

PHP VERSION:
8.3.10
PHP EXTENSIONS:
Core, bcmath, calendar, ctype, date, filter, hash, iconv, json, SPL, pcre, random, readline, Reflection, session, standard, mysqlnd, tokenizer, zlib, libxml, dom, PDO, openssl, SimpleXML, xml, xmlreader, xmlwriter, ldap, curl, fileinfo, gd, gettext, gmp, intl, imap, mbstring, mysqli, odbc, Phar, pdo_mysql, PDO_ODBC, pdo_pgsql, pgsql, shmop, sqlsrv, pdo_sqlsrv, soap, sqlite3, xsl, zip, Zend OPcache
LARAVEL VERSION:
<IP_ADDRESS>
BACKPACK PACKAGE VERSIONS:
backpack/activity-log: 2.0.5
backpack/basset: 1.3.6
backpack/crud: 6.7.41
backpack/generators: v4.0.7
backpack/permissionmanager: 7.2.1
backpack/pro: 2.2.21
backpack/theme-coreuiv2: 1.2.6
backpack/theme-coreuiv4: 1.1.4
backpack/theme-tabler: 1.2.14

Hey @helesjunior
Since you don't actually need any condition, you can just do:
public function setupListOperation()
{
    CRUD::denyAccess(['update', 'delete']);
}

I would advise to don't do it that way, as you still leave the "update" and "delete" endpoints open like you stated in your previous comment.
A better approach would be to move that code to the setup() method and remove the operation condition:
public function setup()
{
    if(! backpack_user()->hasRole('admin') { // in this example, if the backpack user is not an admin, the access will be blocked for those operations, either in UI and in the endpoints.
        $this->crud->denyAccess(['update', 'delete']);
    }
}

Cheers


AutomotiveResources/News: 2024 Chevy Trax First Drive

| 2024 Chevrolet Trax First Drive Review |

#2482 closes #2388


how can I train the network with my own points cloud dataset?

thank you for your work!
I have a dataset, which is ultrasonic points cloud, and the data format is not like the KITTI.
So, please help me, how can I train the network, and then test the network for evaluation the mAP.

thank you for your work!
I have a dataset, which is ultrasonic points cloud, and the data format is not like the KITTI.
So, please help me, how can I train the network, and then test the network for evaluation the mAP.

Hello, have you tried to train the network with your own dataset? I try to implement it as well. could you give me some suggestions? thanks in advance.

Hello, have you tried to train the network with your own dataset? I try to implement it as well. could you give me some suggestions? thanks in advance.
Did you have any success? I am also attempting this and would love any information you could give me

thank you for your work!
I have a dataset, which is ultrasonic points cloud, and the data format is not like the KITTI.
So, please help me, how can I train the network, and then test the network for evaluation the mAP.

Hello, have you tried to train the network with your own dataset? I try to implement it as well. could you give me some suggestions? thanks in advance.

老哥，你成功训练自己自定义的数据集了吗？


Update azure pipelines

Problem:
Azure pipeline stopped working.
Solution:
Update node version
Validation:
Run build
Type of change:

[ ] Feature work
[x] Bug fix
[ ] Documentation
[ ] Engineering change
[ ] Test
[ ] Logging/Telemetry

Risk:

[ ] High – Errors could cause MAJOR regression of many scenarios. (Example: new large features or high level infrastructure changes)
[ ] Medium – Errors could cause regression of 1 or more scenarios. (Example: somewhat complex bug fixes, small new features)
[x] Small – No issues are expected. (Example: Very small bug fixes, string changes, or configuration settings changes)

Abandon


Mailer

Thanks for contributing to Postleaf! 💙💚
Pull Request Summary
An answer for issue #9
I have implemented Mailer Interface with basic php mailer. It is ready to use more tools, like Twilio or Swift Mailer.
Should be easy to adapt for plugins.
Have you...

[x] Checked that your code adheres to our code guidelines?

Contributor License Agreement
We want Postleaf to remain free and open for everyone to use forever, so please don’t submit any code or content that is licensed or copyrighted without first getting written consent.
Before we accept your pull request, we ask that you agree to the following terms to ensure there are no conflicts with Postleaf’s license now or in the future.

I certify that the code I am contributing to this project is completely original or free of any known license or copyright.

I agree to allow the developer of Postleaf, A Beautiful Site, LLC, license or relicense my work at their discretion. By submitting this pull request, I agree to forfeit all copyrights, intellectual property rights, and royalties pertaining to my contribution.

By entering my name in the space provided below, I agree to all of the terms mentioned above.

Signed: Krzysztof Wielogorski
Date: 2016-09-02

This is a thorough PR. Nice attention to detail. 👍
I think we can implement this functionality with a lot less code using events. For example, a plugin might intercept the send event like this:
Postleaf::on('system.email.send', function(&$event) {
    // Unofficial way to intercept events (might change)
    $event['preventDefault'] = true;

    //
    // This is where the plugin will send mail using SMTP, a mailer API, or
    // whatever utility the plugin is configured to use.
    //
});

But to know for sure, I'd like to get basic plugin support working before jumping into stuff that will rely on it. 🙂

Thanks!
So it's better to wait for plugin support and adapt, is that what you're saying? I'm okay with that, I can even do the changes when it will be available.
IMHO it would be better to have a separate plugin for each mailer service. By default it would be php mailer, installed as a system plugin, and then the user can choose what he want's to use for sending email by installing plugins that send emails in a various ways.

So it's better to wait for plugin support and adapt, is that what you're saying?

Exactly. Plugins are a pretty big feature and a lot of requested functionality seems like a perfect fit for it. It's the current major focus of the app.

IMHO it would be better to have a separate plugin for each mailer service.

I totally agree, and we may very well end up centralizing this — but on the other hand, the plugins may handle configuration well on their own and users will be able to enable/disable them at their will. No sense in duplicating that functionality too :)


[New Feature]: Winget should be able to handle SFX-ZIPs like normal ZIPs

Description of the new feature/enhancement
With the upcoming release winget will be able to deal with ZIP-archives containing installers.
As some programmes are delivered as self-extracting-ZIP-archives (exe files) that require a manual installation after the extraction winget should be able to handle these exe-SFX-ZIPs like normal ZIPs.
Though I have a very limited technical understanding of it I presume that most of the code necessary to do this should already be present in winget as ZIP-handling is already implemented and to my knowledge the SFX-code es simply appended to ZIPs to create SFX-exes.
Thanks for considering and discussing this proposal!
Proposed technical implementation details (optional)
No response

@denelon this needs to be moved at the cli repo.


Dependency issue when trying to upgrade to Rails 5.2

Hi! I'm trying to upgrade an app to rails 5.2, and I'm getting an error because the version of sass-rails is limited to 3.5.
I get the following error while executing bundle upgrade:
Bundler could not find compatible versions for gem "sass":
  In Gemfile:
    foundation-rails was resolved to <IP_ADDRESS>, which depends on
      sass (< 3.5, >= 3.3.0)

    sass-rails was resolved to 5.0.7, which depends on
      sass (~> 3.1)

On it.

See #265


chore: add generic intersection types for ViewType & DeviceType

It might be useful when building some custom view for other devices or when you're in need to create a different product listing view that requires a bit different look compared to the OOTB solution but still, you may want
to remain everything else to be fully backward compatible.
export type MyViewType = ViewType<'simple' | 'detailed'>;

export type MyDeviceType = DeviceType<'wearable' | 'smartTv'>;

PR Type

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[x] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] CI-related changes
[ ] Documentation content changes
[ ] Application / infrastructure changes
[ ] Other:
What Is the Current Behavior?

Issue Number: Closes #
What Is the New Behavior?
Does this PR Introduce a Breaking Change?

[ ] Yes
[x] No
Other Information

@kepek Can you explain a bit more detailed why these changes are helpful? Would it not be easier to simply override the existing types and adapt them to your project needs?


400 ERROR

I'm getting a 400 error trying to access regev lab
Please consider adding a -u  flag when copying / pulling from Request-Pays workspaces.
More info here:
https://support.terra.bio/hc/en-us/articles/360029801491-Using-Requester-Pays-workspaces-buckets

Hard-coding the path to the genome files is not a good idea. The resource is not guaranteed to be there in the future:
https://github.com/klarman-cell-observatory/cumulus/blob/bb155c41320a4b2ee21be3335e25c6e3ffc94106/workflows/cellranger/cellranger_workflow.wdl#L97
Something changed recently:

Previously, the read_map() WDL function worked OK.
Currently, the read_map() function does not set the project ID for the requester to pay.

@mav-mit
Thanks for reporting this issue. There is another one similar to yours (#303).
We are reaching out to Terra support team to figure out a solution to it. Ideally, the issue could be fixed at Cromwell side to make read_map function work for files on requester pay buckets again.
We don't explicitly use gsutil to fetch those files in our WDL, and asking users to manually specify their project ID in -u option could be annoying.
We'll keep you posted on any progress regarding this issue fixing.
Sincerely,
Yiming

The Terra team is working on it. You can track their status at https://support.terra.bio/hc/en-us/articles/4447388269851.

Thank you @slowkow and @yihming for responding. As a workaround to the issue I created my own reference genome. This fixed the 400 error but then it died with <Signals.SIGSEGV: 11>. run_starsolo.log attached
What do you guys suggest?
Adding @bli25 too since I also pinged him via email.
Thanks again!
3b80e843-5890-421a-82bd-daab8e874f10_starsolo_workflow_68e01210-4c6e-4913-92af-80eb5f76364e_call-starsolo_count_shard-1_starsolo_count_1cc2783f-6e86-40c1-ac14-cb5897132365_call-run_starsolo_run_starsolo.txt

@mav-mit
The 400 error has been fixed earlier today.

Yes. Thank you!

Hi @mav-mit ,
Just let you know that I've replied to both you and Constantine today about the "<Signals.SIGSEGV: 11>" (i.e. C++ segmentation fault) issue when running STARsolo workflow. Please follow my suggestions to see if the issue could be resolved, and let me know if not.
Sincerely,
Yiming


generator: Allow more than just strings in templ expressions

It is very common to hydrate a template with data, including ints, for say a count
var count int

templ Counter(count int) {
  <div>{ fmt.Sprint(count) }</div>
}

Or something similar.
My proposal is for the simple cases where the entire statement between {} valulates to an int we can just convert to a string, since that operation cannot fail, muct like strconv.Itoa
Is this is silly idea for edge cases? I dont know or is it too niche of a use case? looking for feedback

I don't think this a silly idea, it isn't niche either I've seen people mention this before.
My main concern here is to ensure we keep it so that it type safe (don't accept any type), and predictable (don't try and handle any complex cases such as structs or times).
One solution would be to use generics in the generated code:
Currently the go expressions get passed to func JoinStringErrs(s string, errs ...error) (string, error).
Maybe this could be expanded into a function such as:
func JoinExpressionErrors[T constraints.Ordered](s T, errs ...error) (string, error)
We don't have to use Ordered, but some sort of constraint that defines which types we want to allow would be best. Maybe just [T ~string | constraints.Integer] for now?

I can see why it seems a bit obtuse to force string formatting, but I'm fairly sure it's the right thing to do.
The initial commercial use of templ was for creating insurance documents. We used int64 as the type for money, which is exactly what payments company Stripe uses: https://docs.stripe.com/api/charges/object#charge_object-amount
So, in our case, 100 means £1 GBP. In the USA the number 100 would mean $1.
What I really didn't want, was that we'd show a customer that they would get a refund of 1000, and for customers to think they were going to get £1000, when actually, they were going to get £10.
As you can imagine, the default way to print out a number is without thousand separators (and even those vary by region - e.g. Germany uses 1.000 whereas in the UK, it would be 1,000), so if we let numbers get displayed, then we'd have to default to something.
Similarly, other types that are converted implicitly could result in unexpected errors. For example, date formatting. With fmt.Println(time.Now()) you get 2009-11-10 23:00:00 +0000 UTC m=+0.000000001 as output. With daylight saving in the UK, the date (or even year) might not print what you'd expect.
If I want to render an object, I might choose the JSON representation, but then I'd potentially end up rendering private data to the customer, e.g. fraud risk flags, and I'm not sure I'd want to trust the Stringer interface to display stuff to my customer.
I definitely don't want to display the word nil to a customer too!
So the idea was that defaulting to a string forces the need to be explicit.
The general philosophy of templ is:

Secure by default
Follow the principle of least surprise - things should behave predictably, with low effort to learn
Prefer compile time errors, and development time hassle over runtime errors - end users suffer runtime ones, and may never tell the developer about the problem
Sustainable - be able to sustain this project over the long term without a lot of resources
No config file, and definitely no YAML - partly about sustainability because it's hard to maintain multiple behaviour paths
Don't break people's code - unless you really have to for the long term success of the project

I think forcing strings is not surprising (at runtime), but then, React allows rendering of numbers (including NaN), and strings, but not objects, so maybe it is surprising, and templ is being annoying!

I can see your reasoning and it makes a lot of sense, my main issue was mainly a DX one, I can see when people send ints in particular and want to render it, they likely mean that exact int, currency formatting makes sense when you describe it as an int for the lowest denomination which I agree is correct.
I guess thats down to the user and testing, when they print out 1000 and mean £10.00 not £1000, forcing them to format in the template or pass in the final string, both are explicit enough.
Again just to be clear, I find myself covnering from int to string a lot, which was my primary motivation, this does also open flood gates to the remaning go types.
fmt.Sprint would invoke stringer which might not be the desired effect in some cases for example something like,
type Cash int

func (Cash) String() string { return "One"}

fmt.Sprinf(Cash(1))

so i take your point about not relying on stringer. this leaves  strconv.Itoa which is acceptable but felt like if if it was only even an int then it could be implicit but that violates the lease suprise rule or maybe its a suprise to people it does not render the int, i do not know.
Maybe need more community input on this instead of just my own selfish request hehe

Yep I have done the same for things like URLs for htmx and various other things. Ill continue to do that

Sounds like we are happy with the existing behavior, feel free to re-open with any more arguments for expanding this feature.


Use sudo on cleanup

When lost connection during deploy, and i repeat deploy routine then the following errors occurs:
 rm: cannot remove /usr/share/nginx/html/yii2-comercial/releases/2015060410

 0406/web/assets/7e1698fe/addon/fold/markdown-fold.js: Permission denied

 rm: cannot remove /usr/share/nginx/html/yii2-comercial/releases/2015060410

 0406/web/assets/7e1698fe/addon/fold/brace-fold.js: Permission denied
...

i think necessary to create the param set('cleanup_use_sudo', true);
i can make this PR.

If you deploy with same user, no problem will be.

Hmm, I don't quite get this one either, what happened exactly?
Tell us more detail about the server, and how you configured Deployer.

My server is Debian GNU/Linux 8.0 (jessie) and my deploy script is:
require 'recipe/composer.php';

set('repository', 'git@github.com:mycompany/yii2-myrepos.git');

server('main', myserver.com.br')
    ->env('deploy_path', '/usr/share/nginx/html/yii2-myrepos')
    ->env('branch', '1.1.x')
    ->stage('prod')
    ->user('admin')
    ->pemFile('~/.ssh/key.pem');

This occurs when rm command does not was executed completely on cleanup task.
If use sudo the problem is solved

Use sudo for this operation is risky ;)
You should correct configure permissions on you server.

@ZhukV  The permissions are right, how i said, this occurrs when rm command fail

Imho, The error Permission denied indicate of fail access...

I believe there are no permission bigger than  chmod 777, and i used this (for test)
how i said, if occurs ONLY rm command fails and i try repeat deploy routine

I found the problem.
Who creates the releases folder is admin but who creates the assets/* is www-data.
This occurs because the application (yii2 framework) creates this folder,but  on demand.

You need set correct permissions. Try to install setfacl and do deploy again.

It will not work, because the subfolders into assets are created when a request page is executed

@elfet :+1:
As solution (Apache): Create a group developer and add deployer user and apache user to this group.
As solution (Nginx + PHP-FPM): correct configure user for run phpfpm. It should equals for deployment user.

I think, that, permission configuration, is relevant to server administrator.
He should which permissions, will be used.

This issue was closed but th PR continues opned. What was the decision?

Can you say which PR? :)

PR #329

Please what was the decision?

Can you put your users in same group? I think this is problem?

Yes but i made pr #330 and it continues opened


Why do test sets have ann files?

test=dict(
type=dataset_type,
ann_file=data_root + 'annotations/instances_val2017.json',
img_prefix=data_root + 'val2017/',
img_scale=(1333, 800),
img_norm_cfg=img_norm_cfg,
size_divisor=32,
flip_ratio=0,
with_mask=False,
with_label=False,
test_mode=True))
When I set ann_file = None, the program also reads ann_file, And then report wrong.Why do test sets have ann files?

Testset doesnt have labels. You can use image_info_test2017.json instead.

Thank you, in the instances_info_test2017.json, I only set 'images',such as:
{
"images": [
{
"height": 2000,
"width": 2666,
"id": 1,
"file_name": "B632B25A.jpg"
},
{
"height": 2000,
"width": 2666,
"id": 2,
"file_name": "16D3DBEB.jpg"
},
{
"height": 2000,
"width": 2666,
"id": 3,
"file_name": "ACA80058.jpg"
},
{
"height": 2000,
"width": 2666,
"id": 4,
"file_name": "CDA0B1AD.jpg"
},
{
"height": 2000,
"width": 2666,
"id": 5,
"file_name": "08B8C2A8.jpg"
}]
}
but report wrong:
Traceback (most recent call last):
File "tools/test.py", line 128, in
main()
File "tools/test.py", line 75, in main
dataset = obj_from_dict(cfg.data.test, datasets, dict(test_mode=True))
File "/home/abing/anaconda3/lib/python3.6/site-packages/mmcv/runner/utils.py", line 77, in obj_from_dict
return obj_type(**args)
File "/home/abing/anaconda3/lib/python3.6/site-packages/mmdet-0.6rc0+a3c8ddf-py3.6.egg/mmdet/datasets/custom.py", line 58, in init
self.img_infos = self.load_annotations(ann_file)
File "/home/abing/anaconda3/lib/python3.6/site-packages/mmdet-0.6rc0+a3c8ddf-py3.6.egg/mmdet/datasets/coco.py", line 26, in load_annotations
self.cat_ids = self.coco.getCatIds()
File "/home/abing/anaconda3/lib/python3.6/site-packages/pycocotools-2.0.0-py3.6-linux-x86_64.egg/pycocotools/coco.py", line 170, in getCatIds
cats = self.dataset['categories']
KeyError: 'categories'

I know,I didn't pay attention to the test set format of the coco dataset. Thank you.

Are you using image_info_test2017.json from coco2017 dataset. Your filename and image filename (08B8C2A8.jpg) seem different.

can you show me your image_info_test2017.json format. Thank you very much


Text with descenders are shifted

AS this example shows, characters with descenders (e.g. g and y) seem to have a lower baseline than 'normal' characters.
using AbstractPlotting, CairoMakie, MakieLayout, FileIO

function test()
    x,y = rand(20), rand(20)
    scene = Scene(camera=campixel!)
    layout = GridLayout(scene, alignmode=Outside(20))
    la = layout[1,1] = LAxis(scene)

    scatter!(la, x, y, markersize=0.01)
    la.xlabel = "g and y look funny"
    la.ylabel = "g and y look funny"
    scene
end

scene = test()
FileIO.save("labeltext.png", scene)

fixed by https://github.com/JuliaPlots/AbstractPlotting.jl/pull/401


Add zone dimension to use-config-server-vip flag

Yes, working on it, I can of course add it to this PR, will do.


Proposal: white-lists handled as extensions

I think for example have an extension called google ads to be able to enable google ads domains list for avoid problems while using google analytics or google adwords... or facebook ads (have several problems on the web ui when using these lists.
The "whitelists extensions" could be contributed to this repo as pull requests.
Whats are your opinions about this?

Ya I dig this idea.
Sorry it took so long to reply.

That would be nice indeed! Also I think it would be handy to have in the generated file a list of whitelisted domains too (since whitelisting a single domain can result in multiple domains actually whitelisted).

@GlassGruber Thanks for bringing this to my attention again.  I hope to hit this soon.
If not soon then rattle my chain again 😄

@StevenBlack Is now a good time to rattle that chain again? 😆


Stale data with fallbackData, keepPreviousData and disabled revalidation

Bug report
Description / Observed Behavior
This bug occurs when using the new keepPreviousData option (in v2 beta) together with fallbackData and disabling the automatic revalidation features. The first time you switch back to the "initial key" the returned data doesn't update. It belongs to the previous key.
Subsequent key changes back to the initial key works fine. Note that this only happens when disabling revalidation When using the default revalidation settings this doesn't occur at all.
Expected Behavior
See reproduction.
My use case here is that I don't want to refetch the data on the client when mounting. The fallbackData is fresh/retrieved during SSR.
Repro Steps / Code Example
Check the checkbox and the data filters, uncheck the checkbox and the data is stale. Further toggling/key changes works as expected.
https://codesandbox.io/s/exciting-agnesi-e704i2?file=/src/App.js
Additional Context
SWR version: 2.0.0-beta.6

@alexanbj Thank you for your feedback! I've created a PR to fix this. #2169


Add .flat_map()

Implementing .flat_map() is a bit of a journey because I wanted to implement this like the stdlib (even ordering them the same in Ext as Iterator), which meant adding IntoGenerator and modifying .flatten() to take it.  from_iter() was from a failed experiment towards this.
All steps in this journey are broken out into individual commits for perusing convenience.
Potential next steps:

Add more IntoGenerator impls
Add a FlatMap newtype.
Maybe even hand-implement FlatMap

All set.

Thanks! Very nice work! Much appreciated!


Could you provide the code?/smile

Sure. I will upload the code by the end of August. I will let you know when I am done.


Block the PART of the channels

I would like an option to avoid exiting channels by blocking "PART #Channel" commands. Indeed, I use an Eggdrop during a restart / relaunch of this one it tends to send a "JOIN 0" or "PART #Channel" which has the effect of leaving the rooms it is an annoying behavior.
I assume that in other cases, some wish not to leave a specific channel and this may apply to other cases!
The idea would be to have a permanent channel parameter that ignores the PARTS of the client irc, indicating that it is a channel with the permanent status which prevents them from leaving.
Thank you.

https://wiki.znc.in/Stickychan

https://wiki.znc.in/Stickychan

A very big thank you. I will try it seems perfect. How could I have overlooked this.


How should we prioritize computational modelling paradigms for inclusion to Talk2BioModels?

Priority list

Stochastic ODEs via basico
Constraint-based analysis (CBM) via cobrapy
Logic models via colomoto notebook
Agent-based models via TBD

SR suggested to start with Agents for ODEs (including stochastic ODEs should be few more basico function calls). From my understanding, we would not have to implement all options before we can link T2B with BioModels database.


Inference

Hello!
Could you please explain/add a code how to do inference only in countermeausre mode? :) E.g.
def best_model_inference(path_to_audio_or_raw_wavefrom):
    ...
    return predicted_class

I'm not sure that I do inference correctly on my own, not just running default testing of eval set, because I got confused in the code and enrollments.
Thank you in advance

It depends on your inference mode. If you have enrollment, we will calculate a speaker attractor from that, and calculate a cosine similarity. If you do not have enrollment, we will use the speaker attractors of training speakers, and the max cosine similarity will be used as the score.
Please refer to our paper for more details.

Hi @yzyouzhang! Thanks for such a nice paper and sharing such meticulous results!
I'm still a bit confused about the inference part though - It seems as though the paper as well as the code are implementing an inner-product and not cosine-similarity. I'm not sure if I've missed something - Could you confirm if the code in this repo isn't using cosine-similarity but that's what I indeed should be using? Or should I indeed be using the dot-product as the code currently implements it?

Thank you for your acknowledgment!
You are right that we are using dot product to implement cosine similarity. Since we normalized the vectors before the calculation, I believe they are equivalent.


Unable to get jsx test working

I have tried just about everything, but I cant get ngReact to work with JSX
I am working with the example that is within download (JSX Transformer)
Out of box, JSX work

Figured out my issue...


Don't use "null" for Access-Control-Allow-Origin

As per https://w3c.github.io/webappsec-cors-for-developers/#avoid-returning-access-control-allow-origin-null

Thanks for this contribution. I'm going to close in favor of #4577 - which should get tests to pass as well as return a proper CORS Allow-Origin header instead of unsettling it.
Thanks again for bringing this to our attention.


IE issue: sudden window scrollTop jump on drag

In IE when the wrapper is not exactly inside the window's bound and trying to drag in the kinetic wrapper will scroll the window to align the top or bottom of the kinetic wrapper to touch the window's border. This is also visible in the demo page.

I'm running into the same issue, has anyone discovered a fix for it? I think it has something to do with the mousedown event. I'm not sure why only IE would behave this way though.


use GitHub Actions OIDC to authenticate against GCP

Use Identity federation with OIDC to authenticate against GCP removing long-lived static GCP credentials.
Details on the configuration can be found at:

https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect
https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform

Coverage remained the same at 89.831% when pulling a6acaa8a883c7fe8b5637c868a56708f54fcdd75 on Shegox:oidc into f1a38d828af6883c568977d0b41f404126ac0690 on cla-assistant:main.


This function is neat, but why use the ConnectState() decorator at all?

It seems you could just recommend using @UntilDestroy()
You also don't need to have the interface implemented
import { UntilDestroy } from '@ngneat/until-destroy';
import { connectState } from 'ng-connect-state';

@UntilDestroy()
@Component({ template: '{{ state.timer }} <button (click)="state.reload()"</button> Loading: {{ state.loading.timer }}' })
export class InboxComponent {
  /**
   this exposes state.timer as a synchronous value!
  **/
  state = connectState(this, {
    timer: interval(1000),
  })
}

(of course you'd have to change the type for the parameter to connectState...)

Hey @bbarry.  Correct. We could make that recommendation but I also can imagine a situation when we might need to apply more than the @UntilDestroy() decorator.
If there was an easy way to have a "ngOnInit" hook for example we would be able to remove this not so sexy try / catch https://github.com/Rush/ng-connect-state/blob/master/src/lib/connect-state.ts#L83
Feel free to just use @UntilDestroy() decorator but bear in mind it can change in the future.

Ahh...
I believe the necessary patch set for an ngOnInit hook was pushed to the angular vnext and to 10.0.x last week:
https://github.com/angular/angular/pull/35464
It should be a simple matter of attaching a ngOnInit function to the prototype (which calls an existing one if it exists) in the next point release of Angular.

update: ability to override ngOnInit was added in 10.0.5 yesterday:
https://github.com/angular/angular/blob/master/CHANGELOG.md#1005-2020-07-22

Good find @bbarry
I think I'll wait until until-destroy relies on it.

I've just read your comment https://github.com/ngneat/until-destroy/issues/122#issuecomment-680056775 :-(

Yeah, makes me sad too.
From a perf perspective it kinda makes sense that the lifecycle hooks are getting bound during initialization instead of dynamically checked for as they happen but some of them like OnDestroy probably could be late bound without any notable impact.
I wish there were built in observables to these events that could be hooked into but that probably has perf impacts also.
On the bright side the OnInit hook should work from a class level decorator function >10.0.5 (it just wouldn't work from within a pipe operator or function when the constructor is called I think).

On the bright side the OnInit hook should work from a class level decorator function >10.0.5 (it just wouldn't work from within a pipe operator or function when the constructor is called I think).

Yeah, I just checked it and I couldn't get rid of the decorator. Oh well....

I publishes 2.0.5 that just relies on @UntilDestroy() and supports Angular 13


Suspense renders fallback and children on page refresh

Describe the bug
I have an issue where with nested Suspense in an SSR app, the inner Suspense renders both the fallback and the children on page refresh. If I navigate to the page via an  button in the app then it works fine. It's only when refreshing in the browser.
It seems almost identical to this issue https://github.com/leptos-rs/leptos/issues/1156
Leptos Dependencies
Please copy and paste the Leptos dependencies and features from your Cargo.toml.
For example:
[dependencies]
axum = { version = "0.7", optional = true }
console_error_panic_hook = "0.1"
leptos = { version = "0.6", features = ["nightly"] }
leptos_axum = { version = "0.6", optional = true }
leptos_meta = { version = "0.6", features = ["nightly"] }
leptos_router = { version = "0.6", features = ["nightly"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"], optional = true }
tower = { version = "0.4", optional = true }
tower-http = { version = "0.5", features = ["fs"], optional = true }
wasm-bindgen = "=0.2.92"
thiserror = "1"
tracing = { version = "0.1", optional = true }
http = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
surrealdb = { version = "1.5.3", optional = true}
bcrypt = {version = "0.15.1", optional =  true}
chrono = {version = "0.4", optional = true}
cfg-if = "1.0.0"
leptos-use = {version = "0.11"}
dotenv = {version = "*", optional = true}

[features]
hydrate = ["leptos/hydrate", "leptos_meta/hydrate", "leptos_router/hydrate"]
ssr = [
    "dep:axum",
    "dep:tokio",
    "dep:tower",
    "dep:tower-http",
    "dep:leptos_axum",
    "leptos/ssr",
    "leptos_meta/ssr",
    "leptos_router/ssr",
    "dep:tracing",
    "dep:surrealdb",
    "dep:bcrypt",
    "dep:chrono",
    "dep:dotenv",
    "leptos-use/ssr",
    "leptos-use/axum"
]

To Reproduce
have an outer Suspense that waits for a server resource, and an inner Suspense that waits for a different server resource.
use leptos::*;

#[server]
async fn fetch_items() -> Result<Vec<(usize, String, String)>, ServerFnError> {
    use std::time::Duration;
    tokio::time::sleep(Duration::from_secs(2)).await;

    Ok(vec![
        (1, "The Meaning of Life".to_string(), "$42".to_string()),
        (2, "The Number".to_string(), "$23".to_string()),
    ])
}

#[component]
pub fn Items() -> impl IntoView {
    let items_res = create_resource(|| (), |_| fetch_items());

    let items = move || match items_res() {
        Some(Ok(items)) => items,
        _ => Vec::<(usize, String, String)>::new(),
    };

    view! {

              Name
              Price

            <Suspense fallback=|| view! {
...
 }>
              <For
                each=items
                key=|item| item.0
                children=|item| {
                    view! {

                        {item.1}
                        {item.2}

                    }
                }
              />

            </Suspense>

    }
}

Expected behavior
Only the children of the suspense are rendered after loading is complete on page refresh
Current behavior
It renders the loading fallback plus the children of the suspense on page refresh

For an addendum (I assume Suspense does the same thing under the hood) but if I replace suspense with a conditional on client_result.loading().get() it has the same issue where it renders both branches when the page refreshes.
Possibly a hydration issue?

I did some more testing, and the issue only happens when the Suspense/Transition is inside a .
If the suspense fallback is outside the table, then it works perfectly.

If you add a
 to the table, does it make a difference? Your mention of
 specifically here reminds me of an oddity of the HTML vs. DOM, which (if I'm recalling correctly off the top of my head) is that browsers automatically insert a
 into
 elements when parsing them from HTML. I am not sure why it would cause this issue in this case and I can't test it out myself as this doesn't contain a reproducible example (I don't think?)

I updated the example with a minimal reproducible component and server function.
thead and tbody tags don't help.
If the Suspense is a child of the table, it renders the fallback followed by the table content on page refresh (works fine when navigating with router).
If the Suspense is a parent of the table then it works perfectly.
It looks like this after the server function succeeds. (where the "..." is the fallback)
...NamePriceThe Meaning of Life$42The Number$23
In any case, the fix is to simply wrap the whole table in the suspense. If you want the table header to still display you have to include that in the fallback view.

Thanks for the reproduction. A
 can't validly contain a
 if I recall correctly, so the browser is freaking out on the div wrapping your fallback. If I switch it to
...
 for the fallback, it works fine. Not a framework issue, I don't think.

(Just to expand slightly, in case that was unclear: If you render a simple HTML example

...

You can see in the DOM inspector that the browser actually places the
 before the
, not inside it. When Suspense removes that
 with the loading indicator, it tries to remove the
 from the
 but the
 is already not in the
, hence why the fallback is not removed correctly.)


move 'keydown' event listener to Amount component

Fixes: " when you start typing, there is a line that appears around the box, but we should remove the line." from workspace
Description
I moved the event listener from useNumpad into the Amount component and made setValue an optional prop that if set will set the numpad value when valid keys are pressed. Now that the event listener is only be used within the Amount input the outline Bob talked about is gone.
Question
I'm wondering if this is the right approach for a custom keyboard/amount input because its starting to feel like a hack. We are also missing some accessibility features by not having a real input. This works, but @jbojcic1 if you have any better approaches let me know. The only idea that I have is to make

This does not actually fix the issue. If you click anywhere on the modal and then use your keyboard the issue persists


Provide API for memory usage from snmalloc

@achamayou has raised an issue (3410) for exposing malloc information inside open-enclave.  The basic structure to return is:
struct oe_mallinfo_t {
  size_t max_total_heap_size;
  size_t current_allocated_heap_size;
  size_t peak_allocated_heap_size;
}

I propose adding this to snmalloc.  I propose interpreting the fields as the following

max_total_heap_size -  the amount of address space reserved so far for the heap.
peak_allocated_heap_size - the amount of address space the AddressSpaceManager has passed to the allocator for use as meta-data or object-data.
current_allocated_heap_size - the amount of memory that is in the large allocator unused subtracted from peak_allocated_heap_size.

These statistics would only be tracked at the chunk level granularity, so 1MiB by default. This means we can get consistent numbers without introducing per-thread synchronisation.  The AddressSpaceManager can accurately track sub-chunk meta data amount accurately.  These statistics can be live updated at minimal cost as they are not on any fast paths.
For some Pal's max_total_heap_size will not be much use. In particular, on Windows and FreeBSD where the AddressSpaceManager does not have to do much work, as the platform provides aligned allocations, then max_total_heap_size will be very close to peak_allocated_heap_size, only unused meta-data space will affect this.
CC: @sylvanc @davidchisnall
@licenser @darach, Do you have any requirement for memory usage statistics from snmalloc?

Can we track some analogue of the commit charge (i.e. subtract the memory that we've marked as not used)?  In most PALs (though not the OE one), this has some serialisation effect because it's a syscall that touches the VM subsystem - maybe only collect this on PALs where we're doing a syscall?

With this, current_allocated_heap_size would be a pretty accurate reflection of commit charge with prompt decommit.
With lazy-commit/overcommit, we are not tracking the RSS associated with the allocator.

@achamayou I am not sure that max_total_heap_size is something I want to provide from snmalloc it seems more like the platform should specify it. I guess for your use case in OE. It would be fine for you to fill in that value, and snmalloc would provide you the other two values.

@mjp41 agreed, what could be nice is to get a sense of how much space snmalloc need for metadata, so we can expose total enclave heap - metadata size there, but it's also fine if that's not possible.

I don't think the meta-data is particularly high percentage.  Meta-data is include in the peak and current statistics in #241.  I don't track object and meta data usage separately. I could if it is really important, but the overall consumption is what you need to provision.

Ok, that’s fine, the total heap size is a pure OE-side calculation then.

If we’re exposing this structure in release builds, it becomes part of our public ABI and so we should add a version or size field so that consumers can check that all of the fields that they expect are there.

Good point @Davidchisnall. I am not sure what the right way to expose the data is.  In #241, the C++ API exposes a function returning a std::pair of current and peak, but this is probably not what you want in a C API. I don't really want to directly expose a global. I could provide a funcion that takes a ptr to a struct, and fills it in with suitable data, with constraints on version and size.  Or it could just have two functions one for current and one for peak.  You can't then read them atomically, but that probably doesn't mater anyway as the stats are an approximation anyway.

I think for now it would be fine to add this as an extension (and make it clear in comment/file name that it is), and to not include it in builds that can be LD_PRELOADed. Only users who build and link directly would be able to optionally build it in, and will need to rebuild if a code update changes the stats struct (but then they would rebuild anyway when they upgrade snmalloc).
If ABI compat was a goal (but I don't think it's necessary), then oe_mallinfo_t could be opaque, and snmalloc could expose an oe_mallinfo_alloc/oe_mallinfo_free pair and some accessors (oe_mallinfo_get_current_allocated_heap_size etc).


A way to include jsep plugins as static pages

Hello! Is there a way to include JSEP-provided plugin functionality like assignment without needing to use Node and modules (and therefore needing to use a server to host my site)?
So, I'd like to use just <script src="jsep.min.js" type="text/javascript"></script> (and maybe another one for the assignment file?) in my html, rather than npm install @jsep-plugin/assignment and
import jsep from 'jsep';
import jsepAssignment from '@jsep-plugin/assignment';
jsep.plugins.register(jsepAssignment);

Background: jsep was especially appealing to me for its small size, lack of dependencies, and the ability to use it in a static site. I'm creating a small serverless web project. I have authors writing content for it who are non-technical, and I want to minimize the amount of setup they need to do to write content (like installing developer tools and using the command line). We don't have any other need for a server, and it doesn't make sense to move to a server just to be able to use this library. But if I could add the assignment plugin functionality, this library would be perfect for my use case! Thanks for your time and work on this!

Hi @meldckn ! If you don't want to host the packages, you could use one of the various NPM CDN services, like unpkg.com:
<script type="module">
  import jsep from<EMAIL_ADDRESS>  import jsepAssignment from 'https://unpkg.com/<EMAIL_ADDRESS>  jsep.plugins.register(jsepAssignment);
  const expressionTree = jsep.parse('a = 2');
  console.log(JSON.stringify(expressionTree, null, 2));
</script>

Thanks for the suggestion! I didn't know you could use a URL in an import call.
But wouldn't this mean I'd have to write all of the code that interacts with jsep and its output inside my index.html file? If so, that's not practical for my needs. Is there a way to de-"module"-arize the JSEP plugins?


ywt/fix-index-put-out-error

Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.
Motivation and Context
fix index put random out error
Description

Use cases (Optional)

BC-breaking (Optional)

Checklist
Before PR:

[x] I have read and followed the workflow indicated in the Contributors.md to create this PR.
[x] Pre-commit or linting tools indicated in Contributors.md are used to fix the potential lint issues.
[x] Bug fixes are covered by unit tests, the case that causes the bug should be added in the unit tests.
[x] New functionalities are covered by complete unit tests. If not, please add more unit test to ensure the correctness.
[x] The documentation has been modified accordingly, including docstring or example tutorials.

After PR:

[x] CLA has been signed and all committers have signed the CLA in this PR.

加一下所修复bug的测例。

加一下所修复bug的测例。

已添加，并修复了一致性测试调用index put的bug


Merge geometries in three.js for greyed out fiber bundles

Fixes issue #17.

LGTM. Would you mind rebasing this on master before I merge (I believe that would linearize this after the title change).

@arokem, I just rebased onto master. Is this what you were looking for?

Yep. Thanks!


Cannot copy or paste with WebRoot Identity Shield running

In windows 8, I cannot copy or paste anything Brackets.CTRL-C and CTRL-V does absolutely nothing. Nothing installed other than the Themes For Brackets.
edit: CTRL-V instead of CTRL-P

I found a solution to this bug/feature of webroot security.

on the task bar, right click on webroot icon and click View Status
click on advanced settings
click on Shields tab
uncheck Silently and automatically block untrusted access to user data

Next time you try to paste, you'll get a prompt whether you want to allow the action. Click always allow.


Add additional storage providers: Google Drive, Storj, MinIO, FTP, etc.

Currently we only have Kerberos Vault and Kerberos Hub integration implemented. However we would like to embrace other 3rd party tools such as Google Drive, Storj, Minio, Dropbox and others. With this open issue, we would like to request help from our community to implement more storage/persistence providers. We'll discuss here what is required to contribute to this feature.
Supported persistence:

[x] Kerberos Vault (by @cedricve)
[x] Kerberos Hub (by @cedricve)
[ ] Storj
[ ] MinIO
[x] Dropbox (by @cedricve) - currently not working with long lifetime tokens.
[ ] Google Drive
[ ] FTP

How to contribute
A detailed description is found below, describing the different parts that need to be added and modified. However a good  PR (https://github.com/kerberos-io/agent/pull/96) can be found here.
Machinery (Golang/Backend/API)
Before implementing a new function make sure we know all the credentials/information that is required for creating a new provider. Have a look at the ./machinery/src/models/Config.go file, and add the additional information that you require. Also note that you'll need a new short name for your provider. For example Storj > storj or Dropbox > dropbox.
Create a new file in the machinery project: machinery/src/cloud.
Implement a single upload function with following function description. The function expects a configuration object which holds the credentials of the relevant provider, and the fileName which refers to the file that we want to upload.  The return statement (bool, bool, error) defines if the upload was successful, if the file can be removed from disk (it might be that we need to try again false or we don't need to upload it anymore true), and if any error occurred.
func UploadDropbox(configuration *models.Configuration, fileName string) (bool, bool, error) {

Add a verify function, that will test if the configuration is working. This is called from the front-end by click the Verify connection button.
func VerifyDropbox(config models.Config, c *gin.Context) {

Once implemented we need to adapt the upload logic in ./machinery/src/cloud/Cloud.go. Extend the if statement and add your new function.
if config.Cloud == "s3" {
    uploaded, configured, err = UploadS3(configuration, fileName)
} else if config.Cloud == "kstorage" {
    uploaded, configured, err = UploadKerberosVault(configuration, fileName)
} else if config.Cloud == "dropbox" {
    uploaded, configured, err = UploadDropbox(configuration, fileName)
} else if config.Cloud == "gdrive" {
    // Todo: implement gdrive upload

UI (Front-end)
Open the ui/src/pages/Settings/Settings.jsx file. Most of the work is done here.

Append the storageTypes array with the new provider.
Add the required input fields to use the provider.
Provide translations in the ui/public/locales/ folder, make sure your labels/translation is copied to all the different translation files.

May I also suggest to add WebDAV to the supported protocols? It would unlock the whole potential of fully open-source and self-hosted solutions like Nextcloud.


When will a memory pressure event be delivered

e.g. in this chromium issue the time between when the OS gets under memory pressure to when the app dies is shorter than the time it takes for control to return to the message loop. In situations like this, I'd assume that delivering a DOM event won't work either.
I also expect that it's not uncommon that the foreground tab is actually the cause of memory pressure.
How does this API work in these situations?

It should be upon hitting some treshold. If someone has memory intense loop it might crash even while implementing memorypresureevent.
The treshold will be kept on browser not to leak any user info. I would think it even could be randomised.


Is it possible to send a new message outside dispatcher?

Expected behavior
I want to send a message from my Bot into the group when something happens in the app, not just as a reply to the user's message.
Actual behavior
This doesn't work from my OnClick method:
telegramBot.sendMessage(chatId = telegramChatId,
                text = "user clicked the button",
                allowSendingWithoutReply = true)

To Reproduce
See the code above
Screenshots/Traceback
Possible solutions
Additional context

@SpeedFire0
It is currently possible.
You need to be sure your bot is allowed to send message to this group.
Could you share the log when you try to send the message?
You need to configure your bot with Log Level.
val telegramBot = bot {
  logLevel = LogLevel.All(LogLevel.Network.Body)
  [...]
}

telegramBot.sendMessage(chatId = telegramChatId,
                text = "user clicked the button",
                allowSendingWithoutReply = true)


auto-generate v2 client API using Goharbor v2.2.1

This PR contains all auto-generated code for Goharbor's  v2.2.1 API definitions. Actions are expected to fail.

@elenz97 Wondering when you would be able to get a chance to come back to this effort?


spatial perturbation analysis

Most functions in squidpy seem to be centered around analyzing a single sample.
For me, in the context of clinical trials, it would be important to compare between sample groups. The usual variables of interest are

comparisons of samples over time (pre-treatment vs. on-treatment), i.e. "how does our drug influence the tissue?" and
comparisons of responders vs. non-responders, i.e. "What could explain treatment failure?"

A few things that came to my mind

Differential ligand/receptor interactions between groups
Differential neighborhood analysis (e.g. tumor more infiltrated after treatment?)
differential spatial distance (e.g. tumor and certain immune cells closer together in responders?)

Would be great to have dedicated functions for this, and happy about further ideas!
CC @Zethson, because this is basically "spatial pertpy"

I'd like to CC @AnnaChristina here who's also been working on this AFAIK.

@timtreis, here is one for "spatial perturbation analysis already"

@grst we're discussing this now and might get back with an update here

@Zethson we discussed this before going on holiday, we have a zulip channel for that, I'll add you

cellcharter already has a function for differential neighborhood enrichment that does statistics on the sample level: https://github.com/CSOgroup/cellcharter/blob/396c415f706e46ce5d9b82df062d0b6509aa526e/src/cellcharter/gr/_nhood.py#L136


fix: ShadInput keyboard appearance has light mode only

This pull request addresses the issue where the keyboardAppearance property was not being passed to the EditableText widget, resulting in an incorrect keyboard appearance.

You mean ShadInputFormField? You already passed the keyboardAppearance property to ShadInput there so I think only ShadInput needs to be fixed.


Introduction of erroneous newlines in Requires-Dist

Thanks for this project! Was suggested to me in https://github.com/pypa/setuptools/discussions/4220#discussioncomment-9130979. I noticed that adding a Requires-External modified other parts of the metadata in an incorrect way...
With the normal setuptools backend, I have a record such as the following in METADATA:
Requires-Dist: typing-extensions <5,>=4.2 ; (python_version < "3.8") and extra == 'all'

Meanwhile, with the setuptools-ext backend enabled, you get:
Requires-Dist: typing-extensions <5,>=4.2 ;
 (python_version < "3.8") and extra == 'all'

This is not a valid specification, and results in a unusable wheel. It looks like this comes from email, where https://docs.python.org/3/library/email.generator.html#email.generator.BytesGenerator has a maxlinelength parameter. The value comes from the policy (that is not specified) that you get when you call email.message_from_string - the limit is 78 chars https://docs.python.org/3/library/email.policy.html#email.policy.Policy.max_line_length.

@pelson  Thanks for the report. Fixed in 0.6.

Nice. Tested and it works great! Thanks for the project! :+1:


Simplify autofocus GUI elements

Originally the user was allowed to run fine or course individually. However now the suggested way is to always run course followed by fine. Eliminate the second buttons

this was done


Dropped support for Django 1.8?

Is there any reason to drop support Django 1.8? It is a LTS, meaning that it is in (production) use until (at least) april 2018...
see https://www.djangoproject.com/download/

Well, just because it's supported upstream doesn't mean it has to be supported downstream :)
Django 1.8 is kinda ancient; if you want to keep using it, I think it's okay to use older versions of libraries. I highly recommend moving over to 1.11 which is also an LTS and is more likely to be supported a fairly long time.

So what is the last release working under Django 1.8? I would recommend not dropping support until it is necessary (because of too much boilerplate).  Knowing that there are other fairly high traffic django packages out there dropping support for 1.8 in favour of 1.11, I feel comfortable dropping it here (this library comparatively isnt that popular!)


Self-assigning function declaration containing eval() serialized incorrectly

Input:
function x() {
  eval('0');
  x = 1;
}
export default x;

Output:
export default (0, eval)(`
  'use strict';
  x => function x() { eval('0'); x = 1; };
`)();

Calling original function sets x. Calling function as serialized by Livepack throws TypeError: Assignment to constant variable.
Problem is that in output, external var x has its name frozen (due to eval()) and is shadowed by the function name. Function is a function expression so assignment to its name is illegal.
Correct output would be:
export default (0, eval)(`
  'use strict';
  x => x = function() { eval('0'); x = 1; };
`)();

Here, function expression is anonymous, and has its name property set implicitly by the preceding x = assignment.

Tests (currently disabled as are failing) are at:
https://github.com/overlookmotel/livepack/blob/2e4f21a642b01e7d803e1f57ddab8f8a342b4564/test/functions.test.js#L6200

This is being fixed as part of implementation of #65 - work in progress on babel-record-asts branch. These tests are now passing on that branch.


Link to build is broken

Hi,
can you fix link to build of this plugin, please.

It's not really ready yet. I'll link an actual build when most of it's functionality is finished.


Allow dynamic custom base routes

Next.js has a catch-all route that will ultimately read from the file system.
Because of this, its not possible to use the technique nextjs uses to know if a route exists:
Technique: https://github.com/zeit/next.js/blob/0c8dca6f9753ddf70226ee0e3835a6c03cf4480a/server/index.js#L279
Failure example in custom routes:
https://zeit-community.slack.com/files/U5HJRF98T/F7BBKQ3AS/-.js
One way to solve it is to expose a method that does the fs check in the router, or registering pages in server startup so app.router.pages returns properly.

I'll add some clarity to this issue by providing a use case.
A site should be able to have some of its top-level pages be static and other pages use a dynamic page template (which would fetch data from some kind of CMS).
For example, example.com/about would use next's handle method to send a request to the static pages/about.js template. Then, example.com/some-cool-event would use next's render method to send a request to the dynamic pages/event.js template.
The problem seems to be that there's no way to reliably detect if next would successfully route a request using the handle method from within a custom route handler.
Some pseudo-code to demonstrate the general idea:
server.get('*', (req, res) => {
  if (app.nextWouldHandleRoute(req)) {
    return handle(req, res)
  } else {
    const actualPage = '/event'
    const queryParams = { id: /* pull ID out of request URL */ }
    return app.render(req, res, actualPage, queryParams)
  }
})

I am willing to write a failing example project for next.js on this, though I'm not confident on what would be the proper solution in the code base.


Compute results storage info

I remember some talk about a restriction where we store the results for a finite amount of time? If so, we should add some help text within the job detail modal informing users about that.

@alexcos20 what are the constraints that we should enforce?

Compute time
Results held for x amount of time
Maximum size of results/logs

For now, we have the following:

max dataset(s) size:  1GB
max algo running time: 1 min
results stored in ipfs for 30 days (wip)


Using a bunch of scratch registers when there are complex CFGs.

The assertion was there from when we had a limited register set, but now
that we have 32k of each type we can just use as many as we want.

@ScottTodd you want to take a look too?

@antiagainst how did you test this? I still see errors (errors appear the same before and after this commit? Are you testing at a different base commit?).
(On Linux)
$ git remote update
$ git checkout cc40fcf60a8d14415425fc6147820f25acf214e6
$ bazel test integrations/tensorflow/e2e/...
...
INFO: Build completed, 1 test FAILED, 34 total actions
//integrations/tensorflow/e2e:batch_norm_test                            PASSED in 4.6s
//integrations/tensorflow/e2e:broadcasting_test                          PASSED in 4.7s
//integrations/tensorflow/e2e:control_flow_test                          PASSED in 6.2s
//integrations/tensorflow/e2e:conv_test                                  PASSED in 12.8s
//integrations/tensorflow/e2e:depth_conv_test                            PASSED in 4.9s
//integrations/tensorflow/e2e:dynamic_mlp_relu_test                      PASSED in 4.7s
//integrations/tensorflow/e2e:dynamic_mlp_test                           PASSED in 3.5s
//integrations/tensorflow/e2e:exported_names_test                        PASSED in 6.0s
//integrations/tensorflow/e2e:fill_test                                  PASSED in 4.2s
//integrations/tensorflow/e2e:keras_lstm_test                            PASSED in 5.2s
//integrations/tensorflow/e2e:linspace_test                              PASSED in 4.8s
//integrations/tensorflow/e2e:mandelbrot_test                            PASSED in 6.5s
//integrations/tensorflow/e2e:math_test                                  PASSED in 7.3s
//integrations/tensorflow/e2e:matrix_ops_test                            PASSED in 5.8s
//integrations/tensorflow/e2e:ring_buffer_test                           PASSED in 4.9s
//integrations/tensorflow/e2e:simple_arithmetic_test                     PASSED in 7.6s
//integrations/tensorflow/e2e:simple_stateful_test                       PASSED in 6.1s
//integrations/tensorflow/e2e:sliding_window_test                        PASSED in 4.5s
//integrations/tensorflow/e2e:strings_test                               PASSED in 3.5s
//integrations/tensorflow/e2e:tensorlist_test                            PASSED in 5.2s
//integrations/tensorflow/e2e:keras_lstm_static_test                     FAILED in 9.1s

Logs from the failing test:
RuntimeError: Error compiling IREE module:

[REMARK]: unable to materialize shape calculation (unsupported op 'tf_tensorlist.Stack'?): falling back to runtime resolution
  at: suite.py:84:0		( /usr/lib/python3.7/unittest/suite.py:84:0 )
  at: suite.py:114:0		( /usr/lib/python3.7/unittest/suite.py:114:0 )
  at: suite.py:163:0		( /usr/lib/python3.7/unittest/suite.py:163:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:161:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:161:0 )
  at: tf_test_utils.py:228:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:228:0 )
  at: tf_test_utils.py:126:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:126:0 )
  at: save.py:890:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/save.py:890:0 )
  @'lstm/StatefulPartitionedCall@__inference_call_931':
(...
  at: signature_serialization.py:84:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/signature_serialization.py:84:0 )
)
  at: suite.py:84:0		( /usr/lib/python3.7/unittest/suite.py:84:0 )
  at: suite.py:114:0		( /usr/lib/python3.7/unittest/suite.py:114:0 )
  at: suite.py:163:0		( /usr/lib/python3.7/unittest/suite.py:163:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:161:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:161:0 )
  at: tf_test_utils.py:228:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:228:0 )
  at: tf_test_utils.py:126:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:126:0 )
  at: save.py:890:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/save.py:890:0 )
  @'TensorArrayV2Stack/TensorListStack@__inference_standard_lstm_651':
(...
  at: signature_serialization.py:84:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/signature_serialization.py:84:0 )
)

[ERROR]: 'vm.br' op operand #6 must be 32-bit signless integer or 32-bit signless integer or ref, but got '!iree.ptr<!vm.ref<!hal.buffer>>'
  at: suite.py:84:0		( /usr/lib/python3.7/unittest/suite.py:84:0 )
  at: suite.py:114:0		( /usr/lib/python3.7/unittest/suite.py:114:0 )
  at: suite.py:163:0		( /usr/lib/python3.7/unittest/suite.py:163:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:161:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:161:0 )
  at: tf_test_utils.py:228:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:228:0 )
  at: tf_test_utils.py:126:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:126:0 )
  at: save.py:890:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/save.py:890:0 )
  @'lstm/StatefulPartitionedCall@__inference_call_931':
(...
  at: signature_serialization.py:84:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/signature_serialization.py:84:0 )
)
  at: suite.py:84:0		( /usr/lib/python3.7/unittest/suite.py:84:0 )
  at: suite.py:114:0		( /usr/lib/python3.7/unittest/suite.py:114:0 )
  at: suite.py:163:0		( /usr/lib/python3.7/unittest/suite.py:163:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:619:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:619:0 )
  at: tf_test_utils.py:161:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:161:0 )
  at: tf_test_utils.py:228:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:228:0 )
  at: tf_test_utils.py:126:0		( iree_core/integrations/tensorflow/bindings/python/pyiree/tf/support/tf_test_utils.py:126:0 )
  at: save.py:890:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/save.py:890:0 )
  @'while@__inference_standard_lstm_651':
(...
  at: signature_serialization.py:84:0		( /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/saved_model/signature_serialization.py:84:0 )
)

[ERROR]: A failure has been detected while processing the MLIR module, a reproducer has been generated in '/usr/local/google/home/scotttodd/.cache/bazel/_bazel_scotttodd/9e82052937ca42451e1b3d0e47f9949a/sandbox/linux-sandbox/22752/execroot/iree_core/_tmp/bbbe2f177510136bf83d7a15aeac86c0/LstmTest/lstm_reproducer.mlir'
  [unknown location]

I also still see errors with 'imagenet' weights in resnet:
E ./iree/base/api_util.h:30] INVALID_ARGUMENT: Parameter 0 contains a reference to the wrong type; have hal.buffer but expected hal.allocator (N4iree2vm3refI18iree_hal_allocatorEE); while executing hal.allocator.allocate.const

Oh sorry I was wrong. Messed up SHA on my side.

I'm so confused about all of this and the python+bazel dependency is very annoying. This change shouldn't make things worse and will prevent future issues with the assertion but it's unfortunate that it doesn't seem fix things :(

ok I just tested the resnet imagenets from scott and it works for me now, so I suspect he was in a weird branch state.

ok I just tested the resnet imagenets from scott and it works for me now, so I suspect he was in a weird branch state.

Seems like the model I was testing fails with real weights, but succeeds with placeholders (spooooky): https://github.com/google/iree/issues/1660#issuecomment-619297799