Question on changed Target.of functionality

I'm currently upgrading from serenity-js 1.x to serenity-js 2.0 and the tests I have heavily use the old target.of functionality of being able to replace tokens such as "{0}", I'm wondering why this was changed and if there is any plans to reintroduce this or should i be trying to rewrite my tests another way. This is an example of what i was using before and I would like some advice how best to refactor this to work with serenity-js 2.0
performAs(actor: PerformsActivities): PromiseLike<void> {
        return actor.attemptsTo(
            Click.on(
                InventorySearchTable.Column_Header.of(this.fieldName).called(
                    `${this.fieldName} column header of table`,
                ),
            ),
        );
    }

static Column_Header = Target.the('column header of table').located(
        by.xpath(
            '//div[contains(@class, "ag-header-cell-label")] //span[text()[contains(.,"{0}")]]',
        ),
    );

Hi @puddles-1 and thanks for staying up to date with the framework!
The Target.of API in Serenity/JS v. 2 is an improvement on version 1 as it allows you to locate elements in relation to other elements as opposed to merely doing a string replacement (see the specs).
For example:
    class ShoppingList {
        static App                  = Target.the('shopping list app').located(by.id('shopping-list-app'));
        static Progress             = Target.the('progress bar').located(by.css('.progress')).of(ShoppingList.App);
        static Number_Of_Items_Left = Target.the('number of items left').of(ShoppingList.Progress).located(by.css('span'));

        static Header       = Target.the('header').located(by.tagName('h1'));
        static List         = Target.the('shopping list').located(by.tagName('ul'));
        static Items        = Target.all('items').of(ShoppingList.App).located(by.tagName('li'));
        static Bought_Items = Target.all('bought items').located(by.css('.bought')).of(ShoppingList.List);
    }

What you can do in your example, though, is to turn the Column_Header into a function:
performAs(actor: PerformsActivities): PromiseLike<void> {
        return actor.attemptsTo(
            Click.on(
                InventorySearchTable.columnHeaderCalled(this.fieldName),
            ),
        );
    }

static columnHeaderCalled = (headerName: string) =>
    Target.the(`${ headerName } column header of table`).located(
        by.xpath(
            `//div[contains(@class, "ag-header-cell-label")] //span[text()[contains(.,"${ headerName }")]]`,
        ),
    );

Please note that in the example above I've also used template literals to generate both the locator and the name of the target.
Does this help?
Jan

Hi Jan,
Thanks for the prompt answer. This is very helpful and will get me going again.
Cheers


Consider to change development process

Follow up discussion on:

PR https://github.com/Microsoft/vscode/pull/5443#issuecomment-211401340
Nightly builds https://github.com/Microsoft/vscode/issues/5453

Current development process:

developers commit directly into master
you cannot be 100% sure that you can build master.
there are no way to setup Nightly Builds, because there are huge chance that build can be broken in master.
it happened to me two times already (for my 2 days experience with VSCode). When I pulled master and could not use it, because in first time there were some issues with runtime (which could be found with integration test) and second time a build issue.
It is just my assumption that because of this workflow you can lose interest of some contributors, don't think that most folks will deal with it.

My suggestion:

Personally I believe all changes needs to be made with Code Reviews. But my ask to at least work through PR and only merge when build is green.

Microsoft now has plenty Open Source projects, I believe most of them (if not all) are using Pull Request model with Code Reviews. Please talk to @shanselman, ASP.NET team or dotnet core team to learn from their experience.
/cc @jrieken

@outcoldman thanks for your input. I fully agree that @shanselman and the ASP.net team do a great job.
An difference between the ASP.net project and ours is that we aggressively dogfood and this 'luxury' allows us to also use a more aggressive development process that gives us more velocity. We use the PR model in end games and for contributions inside the time to areas which are mostly owned by someone else. We currently have no plan to go with a full PR model.
We have decided to make our alpha channel available and will update the web site etc, which will happen soon. This will give you nightly builds and this was a great suggestion.

@egamma thank you for answer


Restore button

Restore button is missing.
is there an ability to add it?

Pinging @jslinker as he likely knows most here


[SIMPLIFY-2] Outputs should all go to outputs table

MongoDB Aggregation Pipeline
Data
// Orders collection
{
  "_id": ObjectId("60c72b2f9f1b8c1a4c8b4567"),
  "order_date": "2024-07-01",
  "customer_id": ObjectId("60c72b2f9f1b8c1a4c8b1234"),
  "product_id": ObjectId("60c72b2f9f1b8c1a4c8b9876"),
  "total_amount": 100
}

// Customers collection
{
  "_id": ObjectId("60c72b2f9f1b8c1a4c8b1234"),
  "name": "John Doe",
  "email"<EMAIL_ADDRESS>}

// Products collection
{
  "_id": ObjectId("60c72b2f9f1b8c1a4c8b9876"),
  "product_name": "Widget",
  "price": 25
}

Join
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['your_database_name']

pipeline = [
    {
        "$lookup": {
            "from": "customers",           # The collection to join with
            "localField": "customer_id",   # The field from the current collection
            "foreignField": "_id",         # The field from the 'customers' collection
            "as": "customer_info"          # The name of the output array field
        }
    },
    {
        "$unwind": "$customer_info"         # Unwind the array to work with individual documents
    },
    {
        "$lookup": {
            "from": "products",             # The collection to join with
            "localField": "product_id",     # The field from the current collection
            "foreignField": "_id",          # The field from the 'products' collection
            "as": "product_info"            # The name of the output array field
        }
    },
    {
        "$unwind": "$product_info"          # Unwind the array to work with individual documents
    },
    {
        "$project": {                       # Select the fields to include in the output
            "_id": 1,
            "order_date": 1,
            "total_amount": 1,
            "customer_info.name": 1,
            "customer_info.email": 1,
            "product_info.product_name": 1,
            "product_info.price": 1
        }
    }
]

result = list(db.orders.aggregate(pipeline))

for doc in result:
    print(doc)


Organise post-GSoC project planning + team

Likely candidates: Coen, Meagen, Thibaud, Hitansh
Separation of tasks TBC

Existing content has been migrated https://wagtail-guide-staging.torchbox.dev/en-latest/
New project board, with backlog prioritised & estimated https://github.com/orgs/wagtail/projects/12?query=is%3Aopen+sort%3Aupdated-desc
Review meeting scheduled for next week – exact time TBC (Doodle)


[#110953182] Replace s3get with aws-cli

What
This is some "gardening" preparation for the referenced story and to prevent other re-use of this script. I'm not doing the other work described in the story.
README: Replace use of s3get with aws-cli
We can use the official aws-cli tool to do the same job as s3get.sh. If we
also replace the use of the script in the pipeline, then we can remove this
script from our repo.
I've included a very brief description (with some links) about how to
install and configure it.
create-deployer: Replace s3get with aws-cli
Use the official aws-cli utility instead of our custom script. We hope to
replace this task with s3-resource, if we can add support for it to error
instead of block when the bucket doesn't exist:

https://www.pivotaltracker.com/story/show/110953182

In the meantime though, replacing this means that we have less code to
maintain. This is especially important as we don't currently have any tests
for this functionality.
We originally created the aws-cli container for 5448cee.
try-fetch-bucket-state: explicit error handling
Add the -e flag to the try-fetch-bucket-state task to exit early on
errors, as used in all other tasks. Then add || true to the command which
attempts to fetch the state from the bucket and we expect to fail on the
very first run. This has the same effect but makes error handling more
explicit to read.
How to test

Destroy your existing Deployer Concourse (and BOSH/CF) or choose a new environment name, so that you can test this from scratch
Run the create-deployer pipeline and check that it completes successfully
Run the create-deployer pipeline again and check that it completes successfully

Who can review
Not @dcarley

It would be good to squash https://github.com/alphagov/paas-cf/commit/7e3d126acf281c738503ab20d7425d456e2d22b7 and https://github.com/alphagov/paas-cf/commit/94fcf4e6f931a33276f34fcf9706daa86895a6a1 as it's a modification of the same line.

I've rebased against master to fix the merge conflict.

It would be good to squash 7e3d126 and 94fcf4e as it's a modification of the same line.

I disagree, because it's the same line but the purpose is different. I called it out as a separate commit because the original behaviour surprised me. I had assumed that all of our tasks were using set -e and that s3get.sh was swallowing errors because it didn't have set -e. Which was incorrect, because the curl is the last command in the script and is what produced the exit code, we were just ignoring it in the pipeline.

This works OK. Merging...


[dif/alert_handler] Add ping timer configuration and enable DIFs.

This PR contains two commits that:

adds a DIF to configure, lock, and enable the ping timer feature of the alert handler, and
adds another DIF that just enables (and locks, if requested) the ping timer.

This DIF allows more fine grain configuration of the alert handler than the previous implementation that configured all alert handler setting in a single shot.
Additionally, this PR fixes a bug in the checking of the REGWEN lock for the ping timer. Previously, the wrong CSR (the enable instead of the REGWEN) was checked.
This addresses two tasks in #9899.
Note: this PR depends on #10040, hence has duplicate commits that will be removed when the dependency merges.
Signed-off-by: Timothy Trippel<EMAIL_ADDRESS>

PR dependency removed, ready for review / merge (when CI passes).


ASSERTION failed in GlobOpt::CollectMemOpInfo

ChakraCore version:
version <IP_ADDRESS>-beta
Build Commond
./build.sh --debug
OS
Ubuntu 16.04.6 LTS (Linux 4.4.0-142-generic x86_64)
Test case
function opt(arr, start, end) {
    for (let i = start; i < end; i++) {
        if (i === 10) {
            i += 0;
        }
        arr[i] = 2.3023e-320;
    }
}

let arr = new Array(100);

function main() {
    arr.fill(1.1);

    for (let i = 0; i < 1000; i += 0)
        i++;

    opt(arr, 0, 100000);
}

main();

Output
ASSERTION 163874: (ChakraCore/lib/Backend/GlobOpt.cpp, line 2374) !instr->GetDst() || instr->m_opcode == Js::OpCode::IncrLoopBodyCount || !loop->memOpInfo || (instr->m_opcode == Js::OpCode::Ld_I4 && prevInstr && (prevInstr->m_opcode == Js::OpCode::Add_I4 || prevInstr->m_opcode == Js::OpCode::Sub_I4) && instr->GetSrc1()->IsRegOpnd() && instr->GetDst()->IsRegOpnd() && prevInstr->GetDst()->IsRegOpnd() && instr->GetDst()->GetStackSym() == prevInstr->GetSrc1()->GetStackSym() && instr->GetSrc1()->GetStackSym() == prevInstr->GetDst()->GetStackSym()) || !loop->memOpInfo->inductionVariableChangeInfoMap->ContainsKey(GetVarSymID(instr->GetDst()->GetStackSym()))
 Failure: (!instr->GetDst() || instr->m_opcode == Js::OpCode::IncrLoopBodyCount || !loop->memOpInfo || (instr->m_opcode == Js::OpCode::Ld_I4 && prevInstr && (prevInstr->m_opcode == Js::OpCode::Add_I4 || prevInstr->m_opcode == Js::OpCode::Sub_I4) && instr->GetSrc1()->IsRegOpnd() && instr->GetDst()->IsRegOpnd() && prevInstr->GetDst()->IsRegOpnd() && instr->GetDst()->GetStackSym() == prevInstr->GetSrc1()->GetStackSym() && instr->GetSrc1()->GetStackSym() == prevInstr->GetDst()->GetStackSym()) || !loop->memOpInfo->inductionVariableChangeInfoMap->ContainsKey(GetVarSymID(instr->GetDst()->GetStackSym())))
Illegal instruction

Credits: This vulnerability is detected by chong from OWL337.

This looks like a bug in loop induction code. Let me take a look and get back to you.

Credits: This vulnerability is detected by chong from OWL337.

If you believe this is a security vulnerability, somebody would need to get in touch with you outside Github issues. Note - ChakraCore is transitioning to community ownership, though currently Microsoft procedures still apply.
CC @MikeHolman & @divmain just in case


Should we use Tuples instead of number[]?

p2 uses an array length 2 of number type to define vector such as position.  number[] is annoying but works.
Does anyone have any issues with changing all number[] (in context) to something like this? I suppose finding the correct name is my problem since vec2 exists already as a class with static members.
export interface IVec2 extends Array<number | number> {
        0?: number;
        1?: number;
}

Any opinion would be great.

I used [number, number] happy medium.


FHIR Identifier Type Appendix link description

IHE MHD
3:4.5 FHIR Maps
https://profiles.ihe.net/ITI/MHD/32_fhir_maps.html#3451-metadata-object-types-mapped-to-fhir
"see ITI TF-2: Appendix E.3 “FHIR Identifier Type”" should be Appendix Z.9.1 Identifier Type. Although the description seems to be incorrect, the hyperlink navigates to the proper section.

the link is to the PDF (which had E updates and Z, but was titled Z).
that PDF has been published in html, but E is in a different place. - https://profiles.ihe.net/ITI/TF/Volume2/ch-E.html#E.3


Destructuring Defaults

All of the following are valid ES6 and fail in current Esprima:

function a({x = 10}) {}
function a({x = 10, y: { z = 10 }}) {}
({x = 10}) => x
({x = 10, y: { z = 10 }}) => [x,y]

None of those are default parameters, they're destructuring defaults.

Yes, that's what I meant :-p

Define "in current Esprima": which  branch etc?

harmony and master (I'm sort of unclear as to which I should be targetting)

Latest master
>  var e = require('./esprima'); e.parse('function a({x = 10}) {}');
Error: Line 1: Unexpected token {
    at createError (/Users/jamuferguson/dev/esprima/esprima.js:2004:21)
    at unexpectedTokenError (/Users/jamuferguson/dev/esprima/esprima.js:2072:13)
    at throwUnexpectedToken (/Users/jamuferguson/dev/esprima/esprima.js:2077:15)
    at parseVariableIdentifier (/Users/jamuferguson/dev/esprima/esprima.js:2981:17)
    at parseParam (/Users/jamuferguson/dev/esprima/esprima.js:3693:17)
    at parseParams (/Users/jamuferguson/dev/esprima/esprima.js:3722:22)
    at parseFunctionDeclaration (/Users/jamuferguson/dev/esprima/esprima.js:3764:15)
    at parseSourceElement (/Users/jamuferguson/dev/esprima/esprima.js:3841:24)
    at parseSourceElements (/Users/jamuferguson/dev/esprima/esprima.js:3877:29)
    at parseProgram (/Users/jamuferguson/dev/esprima/esprima.js:3894:16)

If it's master, then isn't it to be expected? After all, there is no destructuring support at all in the master branch as of now.

For the harmony branch, this is the old bug: https://code.google.com/p/esprima/issues/detail?id=565. We shall start tracking it from here onwards.

Great, yes, sorry I wasn't sure if harmony was still supported with master having so much ES6 support now.

FWIW the shift-parser implementation for var {x = 10} = x looks like:
{ type: 'Script',
  body:
   { type: 'FunctionBody',
     directives: [],
     statements:
      [ { type: 'VariableDeclarationStatement',
          declaration:
           { type: 'VariableDeclaration',
             kind: 'var',
             declarators:
              [ { type: 'VariableDeclarator',
                  binding:
                   { type: 'ObjectBinding',
                     properties:
                      [ { type: 'BindingPropertyIdentifier',
                          identifier:
                           { type: 'BindingIdentifier',
                             identifier: { type: 'Identifier', name: 'x' } },
                          init: { type: 'LiteralNumericExpression', value: 10 } } ] },
                  init:
                   { type: 'IdentifierExpression',
                     identifier: { type: 'Identifier', name: 'x' } } } ] } } ] } }

The acorn implementation of var {x = 10} = x looks like:
{ type: 'Program',
  start: 0,
  end: 16,
  body:
   [ { type: 'VariableDeclaration',
       start: 0,
       end: 16,
       declarations:
        [ { type: 'VariableDeclarator',
            start: 4,
            end: 16,
            id:
             { type: 'ObjectPattern',
               start: 4,
               end: 12,
               properties:
                [ { type: 'Property',
                    start: 5,
                    end: 11,
                    method: false,
                    shorthand: true,
                    computed: false,
                    key: { type: 'Identifier', start: 5, end: 6, name: 'x' },
                    kind: 'init',
                    value:
                     { type: 'AssignmentPattern',
                       start: 5,
                       end: 11,
                       operator: '=',
                       left: { type: 'Identifier', start: 5, end: 6, name: 'x' },
                       right: { type: 'Literal', start: 9, end: 11, value: 10, raw: '10' } } } ] },
            init: { type: 'Identifier', start: 15, end: 16, name: 'x' } } ],
       kind: 'var' } ] }

Here's the PR for espree that fixes this. Code should be pretty reusable here:
https://github.com/eslint/espree/pull/62

This seems pretty trivial to add to harmony. Is this just waiting for someone to copypasta PR?

The harmony branch won't be maintained anymore, see #1172 for details.

All the 6 example snippet is now working properly in the current master branch, implemented by @ikarienator in #1045. Since the harmony branch is obsoleted, I'm also closing this issue.

Excuse my ignorance here, but I'm trying to figure something out about destructuring and esprima.
Running master branch / v3.1.2
Start with:
const {a=1, b=2} = {a:2};

Output from esprima:
const {a, b} = { a: 2 };

Which leaves b undefined.
That's a problem, yeah?

@chriscoyier CSSTricks author here xº

@chriscoyier Are you perhaps thinking of Escodegen? Esprima parser is only one way, code-to-AST, and not in the other direction.

Ah yes, see, I knew you'd have to excuse my ignorance. Indeed that is the library involved here. I was able to upgrade to 1.8.0 of it and the problem remains.
It seems like both libraries are involved in a conversion though? (At CodePen, we use both to instrument the JS to attempt to do things like catch infinite loops). So it's fairly certain that esprima is doing it correctly to the AT side but Escodegen is doing it incorrectly back to JS?

@chriscoyier From Esprima side, the easiest way to verify it is to use http://esprima.org/demo/parse.html. Your snippet does not present any problem (it produces the correct AST).


Block API

There is a new Block API in the JavaScript IPLD implementation, which I find quite nice.
I was thinking about using a similar one for Rust IPLD. I'm still implementing/playing around with the idea, but I thought I publish a draft early on:
Block
A Block is an IPLD object together with a CID. The data can be encoded
and decoded.
All operations are cached. This means that encoding, decoding and CID
calculation happens at most once. All subsequent calls will use a cached
version.
Methods
impl<'a> Block<'a>
pub fn new<R>(cid: Cid, raw: Vec<u8>) -> Self where R: Registry
Create a new Block from the given CID and raw binary data.
It needs a registry that contains codec and hash algorithms
implementations in order to be able to decode the data into IPLD.
pub fn encoder(node: Ipld, codec: &'a dyn Codec<Error = Error>, hash_alg: &'a dyn Hash) -> Self
Create a new Block from the given IPLD object, codec and hash
algorithm.
No computation is done, the CID creation and the encoding will only be
performed when the corresponding methods are called.
pub fn decoder(aw: Vec<u8>, codec: &'a dyn Codec<Error = Error>, hash_alg: &'a dyn Hash) -> Self
Create a new Block from encoded data, codec and hash algorithm.
No computation is done, the CID creation and the decoding will only be
performed when the corresponding methods are called.
pub fn decode(&mut self) -> Ipld
Decode the Block into an IPLD object.
The actual decoding is only performed if the object doesn't have a copy
of the IPLD object yet. If that method was called before, it returns the
cached result.
pub fn encode(&mut self) -> Vec<u8>
Encode the Block into raw binary data.
The actual encoding is only performed if the object doesn't have a copy
of the encoded raw binary data yet. If that method was called before, it
returns the cached result.
pub fn cid(&mut self) -> Cid
Calculate the CID of the Block.
The CID is calculated from the encoded data. If it wasn't encoded
before, that operation will be performed. If the encoded data is already
available, from a previous call of encode() or because the Block was
instantiated via encoder(), then it isn't re-encoded.

it seems like you want to have a struct like this:
struct Block {
    cid: Cid,
    raw: Vec<u8>,
    ipld: Option<Ipld>,
}

in this case why does cid(&mut self) need to be mut? there should also be a way to encode/decode straight to a struct without having ipld as an intermediate representation.
I'm also not really sure that a block as a (cid, bytes) tuple provides a meaningful abstraction, as I tried various Block structs and then decided that having a store trait was the more sensible approach. The Block struct was only getting in the way and not really adding anything.

The Block I currently have looks like that:
pub struct Block<'a> {
    cid: Option<Cid>,
    raw: Option<Vec<u8>>,
    node: Option<Ipld>,
    codec: &'a dyn Codec<…>,
    hash_alg: &'a dyn Hash,
}

The reasons for the mut in my current code is that if you call cid() and so far you only have seen the decoded version, you need to encode it first in order to get the CID. The encoded bytes are then stored in raw, hence the mut.

Looking at the proposed structs I feel like I not able to see the usecase for keeping all of these components together in a single struct? I can currently come up with two-ish usecases for blocks in general:

encoding from some other representation to bytes
(generating in some $app_specific_manner)
decoding from bytes to some other representation
(consuming in some $app_specific_manner)

As in, the (codec, hash_alg) is only needed to generate a (cid, encoded_bytes) from an AST/DOM/struct representation of an "ipld" [document]. The other direction(s) from (cid, encoded_bytes) to AST/DOM or struct representation would need looking up the codec from cid and letting it turn the bytes into the $representation. The app specific use cases are pretty much Vec<u8> and optional precalculated CID (for example: calculated while serializing).
Why/when it would be useful to keep all of these together in a single type?
I am using AST/DOM to mean the recursive enum Ipld { ... }.

@koivunej The idea is that for the API it doesn't matter it which form you have the current data. Whether it's AST/DOM or encoded bytes. You can always get the other form out of it. Sometimes it needs some processing, something it just returns the existing values. When using the API you don't have to care about that.

Looking at the proposed structs I feel like I not able to see the usecase for keeping all of these components together in a single struct?

I can speak pretty well to how this ends up being used in JavaScript.
Once you start layering different interfaces you end up with a lot of actors doing encoding, decoding, and/or hashing. Combining these into a single interface means that you can provide a common API to pass around that normalizes and caches all of this.
This also means that you can pass a single interface to any actor, regardless of whether or not they want the encoded state, the decoded state, or the content address for linking. All of these states can be generated just-in-time and then cached for future consumers of the block.

I still think that from a user perspective adding #[derive(DagCbor)] to a struct or enum is the most useful abstraction, but there's no reason that they can't both be supported. The macro would create a Block with new when encoding and read the bytes directly when decoding.
In the current ipld api we have the following:
fn read(&self, &Cid) -> Result<Box<[u8]>>;
fn read_ipld(&self, &Cid) -> Result<Ipld>;
fn read_cbor<T: ReadCbor>(&self, &Cid) -> Result<T>;

fn write(&self, &Cid, &[u8]) -> Result<()>;
fn write_cbor<H: Hash, T: WriteCbor>(&self, t: T) -> Result<Cid>;

So that would change to something like this:
fn read(&self, &Cid) -> Result<Block>;
fn read_cbor<T: ReadCbor>(&self, &Cid) -> Result<T>;

fn write(&self, &Block) -> Result<()>;
fn write_cbor<H: Hash, T: WriteCbor>(&self, t: T) -> Result<Cid>;

In general I don't see applications really mixing binary/ipld/rust representations, as most will use a native rust representation and a few will use the binary or ipld representation, for example for creating an archive or a generic block viewer.

I still think that from a user perspective adding #[derive(DagCbor)] to a struct or enum is the most useful abstraction

I agree. Those derives will then have annotations on how to encode the Rust data structures into the IPLD Data Model.

In general I don't see applications really mixing binary/ipld/rust representations

When you want to add data to some DAG, you would have your current data as Rust/IPLD and while you are traversing to the right location, you would encounter binary blocks.

Thanks @mikeal for joining in!

Once you start layering different interfaces you end up with a lot of actors doing encoding, decoding, and/or hashing. Combining these into a single interface means that you can provide a common API to pass around that normalizes and caches all of this.

While it is difficult to discuss this level of API design as I haven't yet reached the same point in the implementation at all as you three, my initial reaction to this was "could the stronger type system guide us to another design", as in, if some component needs a raw version of a block, then it expects bytes in some form, if a cid, then it expects a cid, and so on.
While writing the above, @vmx replied:

In general I don't see applications really mixing binary/ipld/rust representations

[...] while you are traversing to the right location, you would encounter binary blocks.

An alternative to binary blocks would be to open the link as the T in Davids suggested store.read_cbor<T>(&cid) where T is the expected type for the block contents deriving DagCbor. This way the underlying bytes would not need to be exposed. For example:
let next = store.read_cbor<UserType>(&cid).await?;

let next = store.read_cbor(&cid).await?;

I was wondering what store is about and then found it in an older comment from @dvc94ch I missed to reply to.

I'm also not really sure that a block as a (cid, bytes) tuple provides a meaningful abstraction, as I tried various Block structs and then decided that having a store trait was the more sensible approach. The Block struct was only getting in the way and not really adding anything.

The current direction of IPLD implementations is to move away from having block storage as a central piece. The data should be able to come from anywhere, memory, network or disk. Hence the idea of the Block API came up. You get the block from "somewhere" and then work with it.

One thing that might be lost in translation between different languages and abstractions here is that a Block instance is, and I’m using the term loosely, immutable once instantiated. By “immutable” i mean that the value returned by any method is static after instantiation. For instance, you can’t ask a dag-cbor block for the dag-json encode. This is important because you can’t safely link to a block that might mutate in any way.

In general I don't see applications really mixing binary/ipld/rust representations, as most will use a native rust representation and a few will use the binary or ipld representation, for example for creating an archive or a generic block viewer.

My experience is quite the opposite. You end up creating all kinds of pipelines for reading and writing data, many of which need to link to different parts of the data, store the data, or just read the data. All of these require a mix of the CID, encoded and decoded representations.

The current direction of IPLD implementations is to move away from having block storage as a central piece. The data should be able to come from anywhere, memory, network or disk. Hence the idea of the Block API came up. You get the block from "somewhere" and then work with it.

I can speak a little more to this.
In the latest revisions of the IPLD libraries one thing we wanted to do was move away from requiring a storage interface for the low level interfaces. There’s a lot you do with data that doesn’t require storage. Most libraries produce data and/or read data. Few of them need an entire read/write interface and passing in the entire abstraction changes how flexible these can be.
For instance, the new JS IPLD libraries that produce data return async generators that produce block instances. This allows the user to do whatever they want with them, and often what they want is not necessarily to store them (they may want to write them to the network or even throw them out in certain testing and validation use cases).
For the APIs that need to read blocks from somewhere (storage, network, etc) we pass in a simple get(cid) method than returns a block instance. This is a simple abstraction anyone can write inline and it has turned out quite nice in practice.

One last and rather important point I somehow forgot. Part of the value of IPLD is to be codec agnostic. That flexibility is lost if you build on codec specific interfaces and a lot of thought went into how the Block API could maintain that flexibility throughout the stack. It’s probably worth pulling in @Gozala since he provided a lot of the insight here when we were designing the new JS Block interface.

pass in a simple get(cid)

more methods are required no? For the multiblock ipld vec, it gets loaded from an ipns entry. Then it's modified requiring putting/pinning the new blocks and unpinning the old ones and finally the ipns entry needs to be updated. And ideally all this should be done in an atomic way so that the store state is consistent even when gc is running in the background.

Thanks for you both for added context, this definelty clarifies the ambitions here. I might need to take a closer look at the js-ipld repo next, I've mostly looked at go-ipld-prime thinking it was the latest developments.

In general I don't see applications really mixing binary/ipld/rust representations, as most will use a native rust representation and a few will use the binary or ipld representation, for example for creating an archive or a generic block viewer.

So the hope I hold for this stuff is: those two kinds of usage should be easy to intermingle, and it should be possible to write fairly generic code that targets the "data model", and it should work over whatever the implementation is, whether it be rust native structs, some general ipld library data holder type, or whatever.
It's true that many applications will pick either rust native structs with annotations/derives as the in-memory format of note, or they'll pick some ipld library data holder if they don't know what their data is in advance.  But we shouldn't discount applications that might do both (say, use native structs for one part of the application core, but use freeform data in another part that has more complicated user-provided data); and even if one application doesn't do both, it would certainly be nice to be able to write libraries work when handling data with either category of in-memory layout (Selectors come to mind!).
So for this reason I don't know if something like #[derive(DagCbor)] is going to be either necessary nor sufficient.  It might turn out that we need a set of derives that make a standard Node interface (so libraries like Selectors can be built)... and then from there, codecs can work over that interface... and so we then quietly lose the need to attach codec-specific derives to anything.  Maybe.  Speculating.  Dunno for sure.
I'm not going to claim to know for sure how to best structure this stuff in rust.  Just some "2 cents" considerations.

Not an expert but some high level thoughts: it seems like by implementing a set of independent traits one can "eat your cake and have it too" while both keeping the code idiomatic to Rust and also achieving the API signature that you want / are used to.
I think some careful thought about how to design the individual traits and as much helpful context we can get us gonna be the trick here. This also might be something one might be able to reason about and experiment with either in the tests or in the examples folder, since it's hard to design all this abstractly without building toward a use case or two, no matter how contrived and simple.

I'm warming up to the block api, but so that the ipld-collections remain independent of the store, I think a store api is also needed as mentioned in my previous comment.

I think a store api is also needed as mentioned in my previous comment.

I agree that some store API is needed, it just shouldn't be tightly coupled (as explained in many comments above).

I might need to take a closer look at the js-ipld repo next, I've mostly looked at go-ipld-prime thinking it was the latest developments.

go-ipld-prime are the latest developments. On the JS side the latest developments are not in js-ipld but split across repos. Most notable here are:

https://github.com/ipld/js-block
https://github.com/ipld/js-codec-interface
https://github.com/ipld/js-get-codec

What do you mean by thightly coupled? Tightly coupled to what?

What do you mean by thightly coupled? Tightly coupled to what?

Tightly coupled to traversal data generation, hence the Block API.

Would #27 be complementary to a block api, or an alternative?

Also reading the proposal again, the concept of a registry is weird in a compiled language. What's wrong with something like this:
match codec {
    #[cfg(feature = "cbor")]
    cbor => cbor.encode()
}

Would #27 be complementary to a block api, or an alternative?

Could be both, I need to take a closer look. I'm close (as in this week) to having something working which illustrates the idea behind the block API. It would be great if we could wait a bit before digging into #27.

Also reading the proposal again, the concept of a registry is weird in a compiled language. What's wrong with something like this:

The concept of the registry is something I thought we would need, but that's not the case anymore since the refactoring of Multhash (https://github.com/multiformats/rust-multihash/pull/60) and Cid (https://github.com/multiformats/rust-cid/pull/50) using generics. Expect an update to this proposal, this week.

Expect an update to this proposal, this week.

Next week :-/

I took the time to actually implement it within a small demo application. The Block API can be found here: https://github.com/vmx/rust-dagbuilder/blob/f7f0c00b96074f6aa6a5aeef0b327b35d73dea72/src/block.rs.
Usage of that API happens in the create_block() function: https://github.com/vmx/rust-dagbuilder/blob/f7f0c00b96074f6aa6a5aeef0b327b35d73dea72/src/main.rs#L80-L119
The interesting thing is that create_block() returns a new Block, but in one case it's created from an IPLD object (https://github.com/vmx/rust-dagbuilder/blob/f7f0c00b96074f6aa6a5aeef0b327b35d73dea72/src/main.rs#L99) and the other time from a still encoded data blob (https://github.com/vmx/rust-dagbuilder/blob/f7f0c00b96074f6aa6a5aeef0b327b35d73dea72/src/main.rs#L103). Though using the Block afterwards is the same API, the conversion to bytes or an Ipld object will happen internally when needed. Calling cid() (https://github.com/vmx/rust-dagbuilder/blob/f7f0c00b96074f6aa6a5aeef0b327b35d73dea72/src/main.rs#L111) would be an example.

@vmx, should we leave this for an external crate? If so we could close this issue

I want this eventually be part of IPLD, but for now I think it's OK to have it as an external crate. I'd keep the issue open, but if you like to close it, I can also re-open once it's there.

I think the ipld-block-builder is what you'd want if you are using native types, so I'd prefer that the raw api's we have now remain exposed. But I understand there are other applications that benefit from a more dynamic api.
The ipld multiblock vector is defined like this (the Cache is from ipld-block-builder):
pub struct List<S, T: Clone + DagCbor> {
    nodes: Cache<S, Codec, Node<T>>,
    root: Cid,
}

I believe we have a block api now. Changes to the current block api should probably be discussed in a new issue if necessary.


Convert.ToSingle does not respect format provider

Converting from strings back to float does not respect the given format provider. The application below successfully runs on a .NET Framework console application, but not on Bridge .NET.
For example:
Norwegian uses comma as decimal seperator, Bridge.NET will not accept number strings like "7,5". It will still only accept "7.5".
Hints:
I've only tested on floats, but presumably this issue might also apply to double and decimal types.
Steps To Reproduce
https://deck.net/4781cd5f51412d40a20aa6b52f04307a
NOTE: It's a bit hard to reproduce on Deck.net as it doesn't have the cultures loaded.
// Bug report by Christian "ChrML" Lundheim - 24.04.2019

using System;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main()
        {
            TestFloat();
            TestDouble();
            Console.ReadLine();
        }

        public static void TestFloat()
        {
            float back;
            Console.WriteLine("*** Testing float ***");

            // Convert float => string and back using InvariantCulture. (TEST OK)
            float input = 7.5f;
            System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
            string str = input.ToString();
            Console.WriteLine("Input value as InvariantCulture = " + str);
            try
            {
                back = Convert.ToSingle(str);
                Console.WriteLine("Converted back to float successful using InvariantCulture");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to float using InvariantCulture");
            }

            // Convert float => string and back using explicit Norwegian culture (TEST FAILS)
            System.Globalization.CultureInfo norwegian = System.Globalization.CultureInfo.GetCultureInfo("no");
            str = input.ToString(norwegian);
            Console.WriteLine("Input value as Norwegian = " + str);
            try
            {

                back = Convert.ToSingle(str, norwegian);
                Console.WriteLine("Converted back to float successful using Norwegian");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to float using Norwegian");
            }

            // Convert float => string and back using Norwegian as the current culture (TEST FAILS)
            System.Globalization.CultureInfo.CurrentCulture = norwegian;

            str = input.ToString();
            Console.WriteLine("Input value as Norwegian as CurrentCulture = " + str);
            try
            {
                back = Convert.ToSingle(str);
                Console.WriteLine("Converted back to float successful using Norwegian as CurrentCulture");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to float using Norwegian as CurrentCulture");
            }
            Console.WriteLine("");
        }

        public static void TestDouble()
        {
            double back;
            Console.WriteLine("*** Testing double ***");

            // Convert double => string and back using InvariantCulture. (TEST OK)
            double input = 7.5;
            System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
            string str = input.ToString();
            Console.WriteLine("Input value as InvariantCulture = " + str);
            try
            {
                back = Convert.ToDouble(str);
                Console.WriteLine("Converted back to double successful using InvariantCulture");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to double using InvariantCulture");
            }

            // Convert double => string and back using explicit Norwegian culture (TEST FAILS)
            System.Globalization.CultureInfo norwegian = System.Globalization.CultureInfo.GetCultureInfo("no");
            str = input.ToString(norwegian);
            Console.WriteLine("Input value as Norwegian = " + str);
            try
            {

                back = Convert.ToDouble(str, norwegian);
                Console.WriteLine("Converted back to double successful using Norwegian");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to double using Norwegian");
            }

            // Convert double => string and back using Norwegian as the current culture (TEST FAILS)
            System.Globalization.CultureInfo.CurrentCulture = norwegian;

            str = input.ToString();
            Console.WriteLine("Input value as Norwegian as CurrentCulture = " + str);
            try
            {
                back = Convert.ToDouble(str);
                Console.WriteLine("Converted back to double successful using Norwegian as CurrentCulture");
            }
            catch
            {
                Console.WriteLine("FAILED to convert back to double using Norwegian as CurrentCulture");
            }
            Console.WriteLine("");
        }
    }
}

Expected Result
As expected.

Actual Result
As expected.

The fix for this issue looks good and will make it to the next Bridge release (see assigned milestone).


Signed hash mismatch for fragments when using with AppSync Lambda authorizer

Love the plugin, but have been having issues verifying any requests with fragments. I'm using AppSync and am handling the validation within a Lambda authorizer. Given how annoying AppSync is, there's a good chance this is an issue specific to using the event.requestContext.queryString parameter provided. Here's an example of how we're using it:
		const stableQuery = printExecutableGraphQLDocument(parse(queryString));
		const expectedHash = createHmac("sha256", gqlSecret)
			.update(stableQuery)
			.digest("hex");
		console.log(expectedHash, hash);

And here's an examples of outputs to demonstrate that it works correctly with no fragments.
INFO	mutation ClientUpdate($input: MutationClientUpdateInput!) { clientUpdate(input: $input) }
INFO	2b6d3034ce59d737df0024ac903c9f02042bf86f341a289f97c4f4962f8658a2 2b6d3034ce59d737df0024ac903c9f02042bf86f341a289f97c4f4962f8658a2

And an example in which it breaks with a fragment.
INFO	fragment UserFragment on User { __typename colorTheme firstName lastName profilePicture { __typename blurHash url } profilePictureBlurHash relationshipType userId } query GetClientProfile { getClientProfile { __typename birthdate numFriends relationshipType userType ...UserFragment } }
INFO	ca7205cc9e733197724e2d0a35d68df73a1cfcfbadeb899be84b6b3de9d2f2c2 f842207215a93954b6473054cb1aa4fd3438e731946d4cddd84463ca9df26839

Hey, thanks for using this plugin. I honestly never used appsync before so I don't have the full context what happens by appsync.
Do you include __typename in all your client queries?  The printExecutableGraphQLDocument(parse(queryString)) should ensure same ordering. However perhaps appsyncs adds additional fields to the queries? (__typename?)

Good catch!
I filtered out all the __typenames and now operations with selections work correctly.
Unfortunately, did not solve the fragment issue. Is there any way I can easily debug the plugin to see the exact stable query string it's using?

Good catch!
I filtered out all the __typenames and now operations with selections work correctly. Unfortunately, did not solve the fragment issue. Is there any way I can easily debug the plugin to see the exact stable query string it's using?

Yes it is kinda simple plugin. You can put console.log in your node_modules on this line https://github.com/ilijaNL/graphql-codegen-signed-operation/blob/a958ffefc07e15025d646d37b6eef9255773a4eb/src/plugin.ts#L123
And then run gen.
Perhaps for more context, could you share your codegen configuration?

Great thank you so much! This helped me figure out the issue. For some reason, AppSync flips the order of the Query and the Fragments. I now have consistent hashes by removing __typename on the server side and swapping this line of code in plugin.ts.
https://github.com/ilijaNL/graphql-codegen-signed-operation/blob/a958ffefc07e15025d646d37b6eef9255773a4eb/src/plugin.ts#L123
to
const doc = parse([operation, ...requiredFragmentDefinitions].map(print).join('\n'));
Do you think this optionality is worth including in the plugin config? If so, I can make a pull request to add it.

Good to know you figured it out! Sure you can make a pr. Another good pr would be to addTypename option which automatically adds __typename to all entities but this requires using the ast visitor


@anyone => GI callout label width

Closes https://github.com/artsy/force/issues/1134

Removes appearance of linebreak in marketo form header

Share buttons will be addressed separately.

👍


Not able to add new entry

I'm just taking a look at this code, got it up and running in IOS emulator.  I'm not able to add a new entry, I can fill it out but the save button seems to be greyed out?  Is there something I'm missing?

My bad, I don't think i was actually clicking on expense in my ios emulator.


Endpoint for aborting/pausing/resuming the currently running task

All behaviours of a vanilla RunEngine, but should they be exposed in this service?

All behaviours of a vanilla RunEngine, but should they be exposed in this service?

I would say yes, this is key functionality that all Jobs, be they manual or automated will need access to

I would add, we should probably have an endpoint to query what the currently running task is - as a user, you may be waiting to run your task only to have an error saying something's already running. And maybe you want to know what it is.

T

I would add, we should probably have an endpoint to query what the currently running task is - as a user, you may be waiting to run your task only to have an error saying something's already running. And maybe you want to know what it is.

Yes, this should be of the form:
GET <base_url>/tasks/current
and should return some sort of task description response. It might also want to support query params to filter the detail that is returned or we could add /summary (or other extensions) to the end to get a reduced set of info

The form of this API element will need some discussion as it oughtt to operate on the specific task resource - i.e. <base_url>/tasks/<task_id>, but could also be seen as a separate 'task' that is applied to the existing one, in which case you could maybe create a task of the 'modifier' type that references the original one's id as a parameter. Alternatively you could do something like:
PUT/PATCH <base_url>/tasks/<task_id> supplying the task description with a 'state' field set to the requested run state


delivery_sandbox scope removed

They have removed this scope please update it to change

Thanks. Will add sandbox support via the new sandbox host.

On Aug 4, 2018, at 06:49, Ather Sajjad<EMAIL_ADDRESS>wrote:
They have removed this scope please update it to change
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Brother i have a question is this api deprecated . As all urls are giving 404 page not found in sandbox. I dont have real production credential


Add GpioCounter, a HardwareCounter implementation

GpioCounter implements HardwareCounter by utilizing the gpio interrupt
functionality of that class. On each interrupt event, the counter is
incremented.
Resolves #955

Superseded by #962


Remove references to otlpTraceEndpoint in documentation

Ensure that documentation reflects correct use of OTLP_TRACES_ENDPOINT instead

Closed as completed via #5325.


chore(main): release preact 0.1.0

:robot: I have created a release beep boop
0.1.0 (2023-05-16)
Features

initial commit (95d0fe7)

Bug Fixes

fix versions for initial release (4be171e)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/oddsdk/passkeys/releases/tag/preact-v0.1.0 :sunflower:


The search form(input and button) seems ugly when width of screen shrinked

version 4.1
The search form(input and button) seems ugly(not in one line, or not collapsed correctly ) when width of screen shrinked

Bug reports must include a live demo of the problem. Per our contributing guidelines, please create a reduced test case via CodePen/JS Bin or Stackblitz and report back with your link, Bootstrap version, and specific browser and OS details.
This is an automated reply

The docs examples aren't perfect given our sidebars. Suffice to say this doesn't happen in actual usage of the component.


Please add a proxy, I would be very grateful

Please add a proxy, I would be very grateful

@Soures888 Added socks5 proxy support. You will need to install requests[socks] and update the module. Check the examples for updated usage.


Medium feeds - no description tag, only content:encoded -> empty description

Hi again!
I found another edge case and this time it's Medium feeds being naughty. They contain no description tag, only content:encoded with HTML content.
Example: https://medium.com/feed/@ameliakusiak
Traditionally, it can be worked around with getExtraEntryFields.

@lwojcik let's me see. I remember that I've worked with some RSS from Medium before.

@lwojcik I've found the cause. Medium feed applies RSS 2.0 standard but it does not use description tag, but content:encoded tag as same as Atom standard. This has been fixed with v7.0.3 by some tweeks.

Updated to v7.0.3, problem solved. Thank you very much!


[incubator/haproxy-ingress] Made terminationGracePeriodSeconds configurable

Is this a new chart
No
What this PR does / why we need it:
It makes terminationGracePeriodSeconds of haproxy pod configurable and not hard coded to 60 seconds.
Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @xianlubird

/ok-to-test

/lgtm
/approve


Reload squid.conf

After editing squid.conf by adding http_access allow all as a quick test to allow all IP addresses to connect, how can the new conf be loaded? service squid3 reload does not seem to work as squid3 is not found as one of the "services"

@vertangelx kill -s  HUP 1 does the job

@vertangelx The image has be changed quite a bit now with the following changes:

configuration options have been removed
customized squid.conf should be mounted at /etc/squid3/squid.conf. This means that any changes to the squid.conf file can be reloaded using docker kill -s HUP squid

I am closing this issue. Please reopen if you have any issues.


Develop

Finished the develop branch, ready to merge to master!

In general the code looks OK to me. The problem with using battery included frameworks like Meteor is that it makes very hard for us to distinguish between the framework's code and your's.
Please try to answer the questions raised on the code. You can do it here in the PR. I'll let Cris know that I've raised them and he will look for your answers too.
Thanks.


[BUG] OpenSearchCon NA - speaker not displaying on Speakers page

Describe the bug
This talk: https://opensearch.org/events/opensearchcon/sessions/the-future-of-ingestion-is-streaming.html
Andriy Redko does not seem to be listed on the speakers page
https://opensearch.org/events/opensearchcon/2024/north-america/speakers/index.html
Expected behavior
Expect to see Andriy Redko listed:

Screenshots
No response
To Reproduce
No response
Additional Details
No response

Thanks Kris!

Solved via #3230

Thanks Nate!


Release version 0.0.8

Codecov Report
Patch and project coverage have no change.

Comparison is base (62ffa3d) 100.00% compared to head (962c4a6) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #414   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           19        19
  Lines         1688      1688
  Branches       176       176
=========================================
  Hits          1688      1688

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Composer version outdated

Repo composer says 1.2 but the project versions in composer include up to 1.1, and I also see a new release in GitHub 1.3 with interesting changes I would appreciate being pushed to composer.

Hey @msoffredi, sorry about that. It has a long time that I don't touch in this project. Feel free to help me out or even suggest something to make this better.
I don't know why the hell packgist is not updating the version, but you can use the dev-master version.

I did! Sure I will investigate why that is and propose a fix as a
contribution. Keep the issue open and I will take care of it.
Obrigado!
On Sat, Sep 15, 2018, 14:37 Junior Oliveira<EMAIL_ADDRESS>wrote:

Hey @msoffredi https://github.com/msoffredi, sorry about that. It has a
long time that I don't touch in this project. Feel free to help me out or
even suggest something to make this better.
I don't know why the hell packgist is not updating the version, but you
can use the dev-master version.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/arojunior/php-orm-pdo/issues/4#issuecomment-421605003,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ab5cYVBr34KbGC_l5nU8JYJBbVgeQ00-ks5ubTregaJpZM4Wpezd
.


Switch to github actions

Achieved by:
https://github.com/ExpediaGroup/kubernetes-sidecar-injector/pull/18


Compatibility with Pytket

What feature should we add?
Cross-compatibility with other libraries such as Qiskit, cirq etc. More specifically the ability to "import" and "export" circuits to and from QuanGuru or use the abilities of QuanGuru on circuits built elsewhere and vice versa. This functionality can be quickly achieved by interfacing with Pytket a package that provides access to many different backends from Qiskit to hardware. It can also build its circuits from other packages circuits as well as OpenQasm so it can provide the ability to transform other packages circuit design API into QuanGuru's circuit desgin API.
Proposed Solution

Add support to convert QuanGuru circuits to pytket. This pytket object should be directly interacted with. This may require tool to flattern QuanGuru circuits into flatter dictionaries.
Add support to use Pytket Circuits to perform simulation using a wrapper of pytket circuits in the form of a quanguru protocol
Add wrapper for some of the more simple functionalities so the user does not need to worry about the conversion (eg. add .draw method to visualise a Quanguru qSystem and .qasm to get qasm representation

To users this should appear as a simple quantumSystem.createPytketCircuit(self) call that returns a new pytket Circuit that has the same state as QuanGurus quantum system (plus subsystems). It could also be implemented in an entirely new class that acts as a wrapper to pytkets circuits.
Why/Motivation
There are specific types of simulation that QuanGuru is significantly better at (such as exact simulation for >2 qubit gates), similarly, QuanGuru is lacking features compared to some of the larger projects such as ability to graph and less optimised simulation in many cases.

First step is to create a wrapper around Pytket circuits so they can be represented as protocols within QuanGuru and contribute to simulations within QuanGuru.  It should  access properties of the Circuit and provide an interface that QuanGuru can understand.

Due to Pytekt Circuits not being from QuanGuru they do not have any Param Bounds — this means that if a pytket circuit is changed we cannot automatically inform the wrapper object. This is an issue since this means that the unitary and systems will not update when the circuit changes and so you will be working with an outdated version of the circuit.
Solution

add method for loading the current Circuit into the wrapper object. This must be run by the user when they want to update the wrapper to any changes to the circuit it holds.

Why This Solution

allows users to know exactly the state of the wrapper object
ensures the wrapper is updated before it is used
Gives extended flexibility to users -- users may have multiple protocols based off the same Circuit that are slightly different
In most cases a Circuit will be built then assigned to a protocol so this will not be necessary as it is done by default on initiation


Update for docutils 0.19

Description
Description mostly copied from m2r2's https://github.com/CrossNox/m2r2/pull/49:
ErrorString and SafeString are deprecated and have been removed in docutils 0.19. We could replace ErrorString with io.error_string and SafeString with Python's builtin str() (although this seems breaking for Python 2.x).
See docutils:HISTORY.txt and docutils:utils/error_reporting.py for more information.
Details
Trying to use sphinx-mdinclude with docutils 0.19, I got:
ImportError while loading conftest '/tmp/openapi/tests/conftest.py'.
tests/conftest.py:9: in <module>
    from sphinxcontrib.openapi import utils
.tox/py/lib/python3.10/site-packages/sphinxcontrib/openapi/__init__.py:13: in <module>
    from sphinxcontrib.openapi import renderers, directive
.tox/py/lib/python3.10/site-packages/sphinxcontrib/openapi/renderers/__init__.py:5: in <module>
    from ._httpdomain import HttpdomainRenderer
.tox/py/lib/python3.10/site-packages/sphinxcontrib/openapi/renderers/_httpdomain.py:11: in <module>
    import sphinx_mdinclude
.tox/py/lib/python3.10/site-packages/sphinx_mdinclude/__init__.py:12: in <module>
    from .sphinx import setup
.tox/py/lib/python3.10/site-packages/sphinx_mdinclude/sphinx.py:9: in <module>
    from docutils.core import ErrorString
E   ImportError: cannot import name 'ErrorString' from 'docutils.core' (/tmp/openapi/.tox/py/lib/python3.10/site-packages/docutils/core.py)
ERROR: InvocationError for command /tmp/openapi/.tox/py/bin/python -m pytest tests/ --strict (exited with code 4)

OS: Ubuntu 22.04
Python version: 3.10.4
Project version: sphinx_mdinclude==0.5.1
Can you repro on main?
Haven't tried, but the import is still here
Can you repro in a clean virtualenv?
Ran with tox, I'm not super familiar with Python's virtual environments but can help reproduce if it were necessary.

I used this following patch to get rid of the import errors:
diff --git a/sphinx_mdinclude/sphinx.py b/sphinx_mdinclude/sphinx.py
index 44e0f87..d006feb 100644
--- a/sphinx_mdinclude/sphinx.py
+++ b/sphinx_mdinclude/sphinx.py
@@ -6,10 +6,9 @@ import os
 import os.path

 from docutils import io, nodes, statemachine, utils
-from docutils.core import ErrorString
+from docutils.utils.error_reporting import ErrorString, SafeString
 from docutils.parsers import rst
 from docutils.parsers.rst import directives as rst_directives
-from docutils.utils import SafeString

 from . import RestMarkdown


Ability to check rules without Workflow

It would be nice to check for a single rule.
private static void Sample1()
{
	RulesEngine.RulesEngine rulesEngine = new RulesEngine.RulesEngine(new string[] { }, null);

	dynamic entity = new ExpandoObject();
	entity.Field1 = "Value1";
	entity.Field2 = 10;

	Rule rule1 = new Rule { RuleName = "Rule1", Expression = "input1.Field1 = \"Value1\"", ErrorType = ErrorType.Error, RuleExpressionType = RuleExpressionType.LambdaExpression };
	RuleResultTree ruleResult = rulesEngine.ExecuteRule(rule1, entity);
}

Also, it looks like ExecuteRule actually should be named ExecuteWorkflow, and that we should have a real ExecuteRule you can supply a Rule to which returns true/false or RuleResultTree :)
My current workaround is just adding a workflow with the name of "Workflow" and call it with rulesEngine.ExecuteRule("Workflow", entity)

@KoalaBear84 are you looking for Rule Evaluation or just Expression evaluation? As a part of recent changes, we are planning to expose our rule processor so you can evaluate an expression outside RulesEngine

That would be great.
The main thing I use is see if the entity/object matched the rules. I don't know if that is Rule Evaluation or Expression Evaluation? :)

Has this been implemented?

@glagace @KoalaBear84, this is available in v3 preivew. You can use RuleExpressionParser to evaluate an expression.

Thanks @abbasc52
Do you have an example of the usage of the RuleExpressionParser?
Something like this? (I see there is no RuleResultTree thing, so I'm lost) :) Or is it meant for something else?
RuleExpressionParser ruleExpressionParser = new RuleExpressionParser(new ReSettings());
List<RuleResultTree> resultList = ruleExpressionParser.Evaluate("entity.BooleanField == true", new RuleParameter("entity", entityValues));

it is just a parser so it will return u the result of expression. Also it is not limited to boolean expressions 😄
In your case it should be:
RuleExpressionParser ruleExpressionParser = new RuleExpressionParser(new ReSettings());
object output = ruleExpressionParser.Evaluate("entity.BooleanField == true", new RuleParameter("entity", entityValues));
if((bool)output){

}

OK, would this also work?
RuleExpressionParser ruleExpressionParser = new RuleExpressionParser(new ReSettings());
object output = ruleExpressionParser.Evaluate("entity.stringField == \"test\"", new RuleParameter("entity", entityValues));
if((bool)output){

}```

yes


Over resource limits on Streamlit Cloud

Hey there :wave: Just wanted to let you know that your app on Streamlit Cloud deployed from this repo has gone over its resource limits. Access to the app is temporarily limited. Visit the app to see more details and possible solutions.

I'm having the same problem, it's not working properly. Thanks.


Frame timestamps when transcoding must be set to None

I was able to replicate this issue with the following example:
from fractions import Fraction
import av
import logging
logging.basicConfig()

input_container = av.open('input.mp4')
video_stream = input_container.streams.video[0]

output_container = av.open('output.mp4', mode='w')
stream = output_container.add_stream('libx264', rate=Fraction(30000,1001))
stream.width = 512
stream.height = 512
stream.pix_fmt = 'yuv420p'

for frame in input_container.decode(video=0):
	packet = stream.encode(frame)
	output_container.mux(packet)

packet = stream.encode()
output_container.mux(packet)

output_container.close()

The fps of the file 'output.mp4' is 0.06 fps, and therefore the duration of the video is really high. I tried lots of things (changing the rate, time_base, bit_rate, max_bit_rate, ...  of the OutputContainer and the CodecContext), until I found out that to solve it, you simply have to set frame.pts and frame.time_base to None, to allow the encoder to generate it's own timestamps.
from fractions import Fraction
import av
import logging
logging.basicConfig()

input_container = av.open('input.mp4')
video_stream = input_container.streams.video[0]

output_container = av.open('output.mp4', mode='w')
stream = output_container.add_stream('libx264', rate=Fraction(30000,1001))
stream.width = 512
stream.height = 512
stream.pix_fmt = 'yuv420p'

for frame in input_container.decode(video=0):
	frame.pts = None
	frame.time_base = None
	packet = stream.encode(frame)
	output_container.mux(packet)

packet = stream.encode()
output_container.mux(packet)

output_container.close()

This error is very subtle but I wanted to remark it, because someone else may have a related issue.
I'm using the latest (31-01-2018) ffmpeg version N-89907-g293f24b, the PyAV version built from source under Ubuntu 16.04.

This should land in the documentation, as PyAV/FFmpeg are working as they need to.

Could this be due to the fact the frames had a bogus timebase until recently?

I ran the following, which worked fine using PyAV 0.5.1:
import av
import logging
logging.basicConfig()

input_container = av.open('input.mp4')
video_stream = input_container.streams.video[0]

output_container = av.open('output.mp4', mode='w')
stream = output_container.add_stream('libx264')
stream.width = 512
stream.height = 512
stream.pix_fmt = 'yuv420p'
stream.time_base = video_stream.time_base

for frame in input_container.decode(video=0):
    packet = stream.encode(frame)
    output_container.mux(packet)

output_container.close()

@jlaine It might have been the wrong timebase on the frames.
My comment from Mar. 21 was because I thought the timebase didn't match on the two streams (which it wouldn't), and so if you don't remap the pts from one to the other it will be wonky. But that is what the great time overhaul of v0.4.0 was supposed to do at all.
This could very likely be fixed, but I'm leaving the issue here as a signal to document that time needs your attention all the time.

the Pyav always create B frames when I use it in aiortc .
Can you tell me how to diable B frame in libx264 codec of pyav ?
It doesn't work even though I set the pts and time_base to None.
** pts 297 vlastpts 1403085 dts 296 kind video
*** pts 302 vlastpts 1406848 dts 297 kind video
*** pts 300 vlastpts 1424436 dts 298 kind video
*** pts 299 vlastpts 1430097 dts 299 kind video
*** pts 301 vlastpts 1431405 dts 300 kind video
*** pts 306 vlastpts 1432548 dts 301 kind video
*** pts 304 vlastpts 1434336 dts 302 kind video
*** pts 303 vlastpts 1437813 dts 303 kind video
*** pts 305 vlastpts 1441016 dts 304 kind video
*** pts 308 vlastpts 1444272 dts 305 kind video
*** pts 307 vlastpts 1449291 dts 306 kind video
*** pts 310 vlastpts 1452114 dts 307 kind video
*** pts 309 vlastpts 1456847 dts 308 kind video
*** pts 311 vlastpts 1460187 dts 309 kind video
*** pts 315 vlastpts 1464119 dts 310 kind video
*** pts 313 vlastpts 1469300 dts 311 kind video

I ran the following, which worked fine using PyAV 0.5.1:
import av
import logging
logging.basicConfig()

input_container = av.open('input.mp4')
video_stream = input_container.streams.video[0]

output_container = av.open('output.mp4', mode='w')
stream = output_container.add_stream('libx264')
stream.width = 512
stream.height = 512
stream.pix_fmt = 'yuv420p'
stream.time_base = video_stream.time_base

for frame in input_container.decode(video=0):
    packet = stream.encode(frame)
    output_container.mux(packet)

output_container.close()

As you can see:
* I didn't pass the `rate` parameter when opening the container, but copied `time_base` from the input to the output stream

* I didn't touch the frames' `pts` or `time_base`

* I didn't use the final `stream.encode()`, as this results in a packet with no PTS causing ffmpeg to bomb

The output file has the exact same framerate as my input.

I guess you need to encode a None and mux the output after finish decoding and before close the container, in order to flush the encoder?

To the best of my knowledge this is fixed


Fix cluster code in notebook

Fix to generate TCP cluster connection in the notebook template.
Contributor Checklist:

[x] I have added or updated my entry in the creators.json file
[ ] I have added a changelog entry for my contribution
[ ] I have added/updated documentation for all user-facing changes
[ ] I have added/updated test cases
[ ] I have included the rebuilt production build of the client (only if
changes were made to the GUI)

Hey @sk1p, I'm not sure why the test_hdf5.py fails, It's working fine on my system.

I'm not sure why the test_hdf5.py fails, It's working fine on my system.

I haven't seen that one before, either - it's possible this is caused by a new h5py version

Indeed, updating to h5py 3.0 I get the same error. Let me know if you want to investigate, or if I should have a look.

Let me know if you want to investigate, or if I should have a look.

Can you please look into it

Can you please look into it

This is now reported upstream at https://github.com/h5py/h5py/issues/1740 - maybe until a fix is released, you could catch SystemError in H5DataSet.detect_params, in addition to TimeoutError?

maybe until a fix is released, you could catch SystemError in H5DataSet.detect_params, in addition to TimeoutError?

Will do that :+1:

SystemError in H5DataSet.detect_params, in addition to TimeoutError?

Test is still failing, should I also catch SystemError in get_diagnostics ?

Test is still failing, should I also catch SystemError in get_diagnostics ?

Yeah, looks like that is needed, too.

Looking good to go! Thx @twentyse7en, congrats! :-)
Just requires the rebuilt client, right?

No client required after all! Thx everyone. :-)


Brotli API fix (Compression Level, enums)

Change some public enums to internal
Rename BrotliPrimitives
Change quality levels according to the standard  CompressionLevel.

@Vedin,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@dotnet-bot test Innerloop Ubuntu16.04 Release Build and Test

@dotnet-bot test Innerloop Ubuntu16.04 Debug Build and Test

@dotnet-bot test Innerloop Ubuntu16.04 Release Build and Test

@dotnet-bot test Innerloop Ubuntu16.04 Release Build and Test


[0.5/dx11] Bump libloading to 0.6

This bumps libloading in dx11 to 0.6, this isn't a breaking change as it is all internal.
We now directly depend on both libloading 0.6 (dx11) and 0.5 (d3d12-rs), however we have indirectly depended on both (ash uses 0.6) for a while, so this is no worse. Once d3d12 gets a new release, this issue will go away.

Blocked on d3d12-rs to update first

@cwfitzgerald d3d12 is ready, could you rebase this and prepare for landing?

Only took me a month, but we're rebased and ready to go. d3d12-rs was a minor version change and this isn't required, so I left its dependency/version as is.


Update Native Redis ISBSVC to Redis 7

Summary
Decision to update the Native Redis ISBSVC to version 7

Message from the maintainers:
If you wish to see this enhancement implemented please add a 👍 reaction to this issue! We often sort issues this way to know what to prioritize.

This is the list of incompatible changes in Redis 7.0 btw (and I noticed we're currently deploying 6.2.6 by default):

SCRIPT LOAD and SCRIPT FLUSH are no longer propagated to replicas. If you need to have some durability for scripts, we recommend you consider using Redis functions.
Pubsub channels are now blocked by default for new ACL users.
STRALGO command was replaced with the LCS command.
The format for ACL GETUSER has changed so that all fields show the standard access string pattern. If you had automation using ACL GETUSER, you should verify that it will handle either format.
The ACL categories for SELECT, WAIT, ROLE, LASTSAVE, READONLY, READWRITE, and ASKING have changed.
The INFO command now shows command stats per sub-command instead of in the top level container commands.
The return values of LPOP, RPOP, ZPOPMIN and ZPOPMAX commands have changed under certain edge cases. If you use these commands, you should check the release notes and evaluate if you are impacted.
The SORT and SORT_RO commands now require access to the entire keyspace in order to use the GET and BY arguments.

Release notes here

Here are the redis.conf and sentinel.conf settings for 7.0. I will confirm that our numaflow-controller-config.yaml settings are still valid.

After speaking with Derek yesterday, my process is this:

run latest Helm chart to see what's deployed wrt StatefulSet, ConfigMaps
compare to what we're running currently to see what needs to be modified as far as the StatefulSet and the ConfigMaps both.

I just deployed both the latest Helm chart and the oldest one I could find - chart version 16.11.2 which deploys Redis 6.2.7 (not too far off from the default version 6.2.6 we're using now). Unfortunately, I don't know which exact version of the
chart Derek deployed before. Anyway, my purpose was to determine what changed in the chart. I was able to do a diff using yamldiff.com. Attaching the two files.
redis-helm-16-11-2-default-node.statefulset.yaml.txt
redis-helm-17-8-5-default-node.statefulset.yaml.txt

For future upgrades, I'm adding a record for how to go about the process next time.
Deploy new Helm Chart with:
sentinel:
  enabled: true
volumePermissions:
  enabled: true

(Note that persistence should be enabled by default)
Compare StatefulSet, Services, and ConfigMaps for Health and Scripts to the existing ones. Add in what's missing. ConfigMap for Settings can also be compared, but recognizing that the existing Settings have been purposely selected.


Adding Terms of Service Page

Description:
Implement a comprehensive Terms of Service (ToS) page for your application. This page will outline the user's rights and responsibilities, governing the use of our platform.
Use Case:

Legal Compliance: Ensure adherence to relevant laws and regulations.
User Protection: Clearly define the expectations and boundaries for both the user and the platform.
Dispute Resolution: Provide a framework for addressing potential conflicts or misunderstandings.
Transparency: Build trust with users by openly communicating our policies and practices.

Benefits:

Reduced Legal Risks: Mitigate potential legal issues arising from user behavior or disputes.
Enhanced User Trust: Foster a sense of security and confidence among our user base.
Improved User Experience: Provide a clear understanding of platform usage, expectations, and limitations.
Streamlined Operations: Establish a foundation for future updates and policy changes.

@tushargupta1504 can you assign this issue to me with labels "gssoc-ext" with levels and "hacktoberfest-accepted";

@tushargupta1504 can you please review this issue

I would like to work on this issue. Could you please assign me this task


[BUG] Data prepper cannot start if otel-v1-apm-span index exists

Describe the bug
Data Prepper pods cannot (re)start (specifically the opensearch plugin) when there is a index named like an alias that is managed by data prepper. This bug occurs when no index alias exists (for example, if all OTel span indices were deleted), ingestion to data prepper is still ongoing and then data prepper restarts.
To Reproduce
Steps to reproduce the behavior:

Setup opensearch and data prepper
Ingest OTel traces/spans
Delete all otel-v1-apm-span-.* indices (otel-v1-apm-span alias is removed automatically when deleting the indices)
Ingest OTel traces/spans (which creates otel-v1-apm-span index)
Try to restart data prepper pods. Pods fail to start with the following error log (full stack trace below)
An index exists with the same name as the reserved index alias name [otel-v1-apm-span], please delete or migrate the existing index

Expected behavior
Data prepper should be able to start in situations where customers did not do anything obviously wrong.
One mitigation idea would be to automatically rename otel-v1-apm-span index to otel-v1-apm-span-000001 and add an otel-v1-apm-span alias pointing to the renamed index.
Stack trace
2023-09-13T12:55:45,750 [raw-pipeline-sink-worker-8-thread-1] ERROR org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink - Failed to initialize OpenSearch sink due to a configuration error.
org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException: An index exists with the same name as the reserved index alias name [otel-v1-apm-span], please delete or migrate the existing index
        at org.opensearch.dataprepper.plugins.sink.opensearch.index.AbstractIndexManager.checkAndCreateIndex(AbstractIndexManager.java:258) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.index.AbstractIndexManager.setupIndex(AbstractIndexManager.java:198) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink.doInitializeInternal(OpenSearchSink.java:180) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink.doInitialize(OpenSearchSink.java:145) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.model.sink.AbstractSink.initialize(AbstractSink.java:49) ~[data-prepper-api-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.isReady(Pipeline.java:195) ~[data-prepper-core-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.lambda$execute$2(Pipeline.java:243) ~[data-prepper-core-2.3.2.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
2023-09-13T12:55:45,756 [raw-pipeline-sink-worker-8-thread-1] ERROR org.opensearch.dataprepper.pipeline.common.PipelineThreadPoolExecutor - Pipeline [raw-pipeline] process worker encountered a fatal exception, cannot proceed further
java.util.concurrent.ExecutionException: java.lang.RuntimeException: An index exists with the same name as the reserved index alias name [otel-v1-apm-span], please delete or migrate the existing index
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
        at org.opensearch.dataprepper.pipeline.common.PipelineThreadPoolExecutor.afterExecute(PipelineThreadPoolExecutor.java:70) [data-prepper-core-2.3.2.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.RuntimeException: An index exists with the same name as the reserved index alias name [otel-v1-apm-span], please delete or migrate the existing index
        at org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink.doInitialize(OpenSearchSink.java:152) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.model.sink.AbstractSink.initialize(AbstractSink.java:49) ~[data-prepper-api-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.isReady(Pipeline.java:195) ~[data-prepper-core-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.lambda$execute$2(Pipeline.java:243) ~[data-prepper-core-2.3.2.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        ... 2 more
Caused by: org.opensearch.dataprepper.model.plugin.InvalidPluginConfigurationException: An index exists with the same name as the reserved index alias name [otel-v1-apm-span], please delete or migrate the existing index
        at org.opensearch.dataprepper.plugins.sink.opensearch.index.AbstractIndexManager.checkAndCreateIndex(AbstractIndexManager.java:258) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.index.AbstractIndexManager.setupIndex(AbstractIndexManager.java:198) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink.doInitializeInternal(OpenSearchSink.java:180) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.plugins.sink.opensearch.OpenSearchSink.doInitialize(OpenSearchSink.java:145) ~[opensearch-2.3.2.jar:?]
        at org.opensearch.dataprepper.model.sink.AbstractSink.initialize(AbstractSink.java:49) ~[data-prepper-api-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.isReady(Pipeline.java:195) ~[data-prepper-core-2.3.2.jar:?]
        at org.opensearch.dataprepper.pipeline.Pipeline.lambda$execute$2(Pipeline.java:243) ~[data-prepper-core-2.3.2.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        ... 2 more

Environment:

Version 2.1.1 (data prepper)

User experience is quite ugly: Users would assume complete loss of data as Opensearch Dashboards observability plugin shows "Trace Analytics not set up" because otel-v1-apm-span does not match otel-v1-apm-span-* pattern (which otel-v1-apm-span-000001 would match).
This is a huge blocker for us and the proposal by @KarstenSchnitter is looks quite nice to get some feedback.

@KarstenSchnitter , @juergen-walter , Thank you both for looking into this issue. If I understand the situation, it is:

Data Prepper runs and successfully indexes documents.
The index and index alias are deleted.
Data Prepper continues to run, but now _bulk requests are creating an index (not alias) with the name of the alias.
Restarting Data Prepper fails because the name of the alias is now used as an index.

I think the solution you proposed to use require_alias seems a good solution here. I ran a quick test and this will result in a failure to write the documents to the index at all. It may also be appropriate to use this failure condition (index not found) to re-create the index alias.
From an implementation perspective I think we'd want to connect this flag to the IsmPolicyManagementStrategy interface. This interface has two implementations - one for aliases and one for non-aliased indexes. So this should be what determines whether or not to set require_alias to true or false.


Revert "Simplify native attachment gallery paging context and improve code"

Reverts Expensify/App#34080
I accidentally merged the original PR without the reviewer checklist being completed and without all the platforms tested.
There is no need to test this, since it's a straight revert and we want it reverted before it gets pushed to staging.

Tim explained in the description why we are reverting this, not an emergency

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/pecanoro in version: 1.4.42-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.4.42-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


error Unauthorized: /rest-auth/registration/ [06/Jun/2019 19:08:58] "POST /rest-auth/registration/ HTTP/1.1" 401 27

I am tring to use the rest auth to create user but am getting error
Unauthorized: /rest-auth/registration/
[06/Jun/2019 19:08:58] "POST /rest-auth/registration/ HTTP/1.1" 401 27
logging in user with rest frameworks works fie my url is
path('rest-auth/registration/', include('rest_auth.registration.urls')),

I have a user getting the same 401 error when trying to create an account using that endpoint. My current theory is that it might be the result of sending a POST request and not submitting an auth token along with the request, but I can't see anywhere in the RegisterView() class that would return a 401.
I've only encountered one user having this error, but it seems strange and I can't trace it.


All RE Mods capping at 60 fps

Describe the bug
All REFramework games now capping at 60 fps.  Only.change on my end since last play was adding the new Nvidia App.
Upload logs and any crash dumps
Locate the re2_framework_log.txt in your game directory and upload it along with the issue.
If you crashed, upload the reframework_crash.dmp file as well.
Identify the REFramework version
Current
To Reproduce
Steps to reproduce the behavior:
Basic boot up from Virtual Desktop to Steam VR and game launch.  Even main menu is 60 fps (though when in Steam VR, I hit 90 target)
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Desktop and VR (please complete the following information):
Windows 11, VDFX, H264+, 300mbps
Steam Deck/Linux (please complete the following information):

Proton version

Virtual Reality (please complete the following information):
Quest 3

Runtime OpenXR

Additional context
Add any other context about the problem here.

New Nvidia App was set to 120 hz max framerate.  Set it to off and issue resolved.


Getting Issues in Batch Training  ~ IndexError

I have tried to batch train a data with a corpus.
While batch training I got error as below:
Fitted to 8691 vectors
Epoch 1/10
Traceback (most recent call last):
  File "TrainWithCorpus.py", line 98, in <module>
    magpie.batch_train(train_dir, vocabulary=labels,epochs=EPOCH_CUR,callbacks=[csv_logger,checkpoint,b])
  File "/home/Abc/TrialBatch/Version3.0/Scripts/magpieCNN/magpie/main.py", line 176, in batch_train
    verbose=verbose,
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/engine/training.py", line 1418, in fit_generator
    initial_epoch=initial_epoch)
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/engine/training_generator.py", line 181, in fit_generator
    generator_output = next(output_generator)
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/utils/data_utils.py", line 709, in get
    six.reraise(*sys.exc_info())
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/six.py", line 693, in reraise
    raise value
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/utils/data_utils.py", line 685, in get
    inputs = self.queue.get(block=True).get()
  File "/usr/lib/python3.5/multiprocessing/pool.py", line 608, in get
    raise self._value
  File "/usr/lib/python3.5/multiprocessing/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/home/Abc/TrialBatch/TrailVirtualEnvironment/lib/python3.5/site-packages/keras/utils/data_utils.py", line 626, in next_sample
    return six.next(_SHARED_SEQUENCES[uid])
  File "/home/Abc/TrialBatch/Version3.0/Scripts/magpieCNN/magpie/nn/input_data.py", line 105, in iterate_over_batches
    yield build_x_and_y(files, filename_it.dirname, **kwargs)
  File "/home/Abc/TrialBatch/Version3.0/Scripts/magpieCNN/magpie/nn/input_data.py", line 88, in build_x_and_y
    y_matrix[doc_id][index] = True
IndexError: index 1135 is out of bounds for axis 0 with size 1102
Can you please guide to  proceed further.

I have debugged somewhat get this info .
My labels has 1938 as length.
The length of    label_indices gets reduced to 1102 a this line.
File: magpie/nn/input_data.py
 y_matrix = np.zeros((len(filenames), len(label_indices)), dtype=np.bool_)
Later the below lines are causing error:
                for lab in labels:
                    index = label_indices[lab]
                    y_matrix[doc_id][index] = True
Need to analyse further.
Provide any suggestions/guide to fix this.

Lastly I found out, the issue  was due to Duplicate Data in Labels.
Because of that, the above issue arose .