What do we define as a breaking change?

This question emerged when @smoya wanted to make the channels field optional - https://github.com/asyncapi/spec/issues/661
This change, might not be a breaking change to the spec itself, however, for tooling that relies on the channels being required and always present, it would.
So when should a change in the spec be considered a breaking change?
I see two ways we can do this (and that is assuming we want to stay with semantic releases).
Only focusing on the spec
Agreeing that as long as the spec is backward compatible, it is not a breaking change.
Agreeing what is breaking changes
Agreeing on special cases would probably be possible to minimize breaking changes in tooling and spec.
My immediate thoughts are the following that would be questionable:
Non-breaking changes:

Adding a property

Breaking changes:

Making a property required
Making a property optional
Removing a property
Changing the type of a property in any way

Can you think of another possible solution?

You made a really good point here. I agree having in mind breaking changes also at tooling level is important.
I like the idea of treating breaking changes in different ways, depending on the context: A non-breaking change for the spec doesn't mean is not a breaking change for tooling and vice versa.
If we go in that direction, we should set obvious boundaries and consider only the tools under AsyncAPI umbrella (Code hosted on github.com/asyncapi) as implementations to check for breaking changes (unless the breaking change is clearly detected earlier).
Also, it would be nice if we build some quick tool we can run on CI to check for usages and, at least, list them on the PRs, like possible affected code. Github search is not very powerful for it.

Making a property required

@jonaslagoni making a property required is also a breaking change. If I use an AsyncAPI 2.2.0 document as the input for an AsyncAPI 2.3.0 tool, and we have made a property required in v2.3.0, it will be a breaking change. I mean, changing asyncapi: 2.2.0 to asyncapi: 2.3.0 would not be enough.
Regarding #682, if we're not sure about it, we can always postpone it to v3 now that we're working on it.

@jonaslagoni making a property required is also a breaking change. If I use an AsyncAPI 2.2.0 document as the input for an AsyncAPI 2.3.0 tool, and we have made a property required in v2.3.0, it will be a breaking change. I mean, changing asyncapi: 2.2.0 to asyncapi: 2.3.0 would not be enough.

You right, adapted suggestion!

Interesting one, as @jonaslagoni mentioned it really depends on context we talk about, spec and tools.
But I like what you mentioned @jonaslagoni , about Non-breaking changes: and Breaking changes: lists, they make sense to me.
Interesting what you mentioned @smoya about only AsyncAPI tools, I guess you have to stop somewhere, but maybe with @jonaslagoni lists and definitions then wouldn't really matter about the tools, as this kind of change would be breaking anyway.

maybe with @jonaslagoni lists and definitions then wouldn't really matter about the tools, as this kind of change would be breaking anyway.

Yeah, that's a really good point. I think we must work on defining those rules @jonaslagoni started. Specially after the conversation on https://github.com/asyncapi/spec-json-schemas/pull/146#issuecomment-1016290582

I think this issue should end up completing as addition document in the repo, guide for codeowners to always consult with when accepting changes. But for the future, we would not only have info that for example making required optional is breaking, but also an explanation why. I for example thought that it should not be considered as breaking, but tbh, I on my own, if I would know something is required, I would not protect my code from not getting the property 🤷🏼
and I would not say what is braking for spec and what for tools. Spec without tools is useless, so it is always about breaking tools really

Contributors are welcome 🙏🏼

I suggest we extend https://github.com/asyncapi/spec/blob/master/CONTRIBUTING.md with new section called Breaking Change vs Non Breaking Change and put it between Guiding Principles and RFC Contribution Champions.
Most of content is already provided
The specification is not much different than software. Some changes provided in the spec can cause breaking changes for tools that support it. For example, if one of the properties that was `required` becomes `optional`, it is considered a breaking change because some tools might depend on that property and fail if all suddenly it is not provided.

_Non-breaking changes:_
- Adding a property

_Breaking changes:_
- Making a property required
- Making a property optional
- Removing a property
- Changing the type of a property in any way

Anyone is welcome to open a PR and drive it until it is merged.
/gfi docs

/gfi docs

I suggest we extend https://github.com/asyncapi/spec/blob/master/CONTRIBUTING.md with new section called Breaking Change vs Non Breaking Change and put it between Guiding Principles and RFC Contribution Champions.
Most of content is already provided
The specification is not much different than software. Some changes provided in the spec can cause breaking changes for tools that support it. For example, if one of the properties that was `required` becomes `optional`, it is considered a breaking change because some tools might depend on that property and fail if all suddenly it is not provided.

_Non-breaking changes:_
- Adding a property

_Breaking changes:_
- Making a property required
- Making a property optional
- Removing a property
- Changing the type of a property in any way

Anyone is welcome to open a PR and drive it until it is merged.
/gfi docs

I will be happy to open a PR and drive it until it is merged, but I'm kind of confused about what to do. Don't know why I'm confused 😂

/help

@Dule-martins 😆 if you feel confused but you do not know why, I'm definitely not gonna be able to help you out 😆

@derberg now, I know my issue
I don't have clue of what to do and where to do what I need to do.
I have been reading comments for days yet still confused kindly help

@Dule-martins ok, basically ignore all comments except of https://github.com/asyncapi/spec/issues/688#issuecomment-1274493753 that summarizes what has to be done

Hello @derberg
How should I start with this? Now I know why I was confused, don't know where to start

Oh! Thanks, Boss ❤


[USM] refactored docker-compose testutil

What does this PR do?
Moved the protocols testutil to start docker-compose into a more global /pkg/util/testutil/docker pkg.
Introduced a generic API to support both docker and docker-compose invocation in UTs
Motivation
GPU-Monitoring is using this utility, moving to a more global scope for better dependencies and clear repo structure
Describe how to test/QA your changes
existing USM protocol UTs should still pass
Possible Drawbacks / Trade-offs
Additional Notes

GPU UTs will be refactored in a separate PR to use the new pkg
removed serverutils.RunHostServer as it was unused

Did you notice or tracked any change in the CI's runtime?

/merge


ARROW-8699: [R] Fix automatic r_to_py conversion

This appears to be the fix for https://github.com/rstudio/reticulate/issues/748
cc @kevinushey

LGTM!


Not able to call an attribute inside an attribute group (maybe related to ¤46)

I'm experiencing the behaviour that when an attribute is created within an attribute group, I am unable to call it for use in a formula, ie. "1d10 + @Dex" for initiative does not work if Dex is placed in an attribute group.

Could you elaborate on this? Attributes in groups should appear under their group name. So an attribute called dex in a group called group should appear under @group.dex in the roll data. Is the claim that this behaviour has changed and that attributes used to appear outside of their groups?

Ah, so the putting the value in a group changes the "global" name - you are simply not able to call eg. @dex if it's in a group, even if there is no other attribute called dex anywhere. Thanks.


Add required extensions to composer?

I tried to deploy this and failed due to missing extensions. It's possible to include these in the composer file.
Adding to the require as such
"require": {
    "ext-gmp": "*"
    // etc
}

Yes, this is possible. Though, we support both ext-bcmath and ext-gmp and we don't want to enforce either one. It's up to the developer to choose.


Fix: TxBuilder - pass txRecipient

What it solves
Resolves #3385
How this PR fixes it
The recipient field wasn't passed to the estimation endpoint in the Safe App Tx Review modal.
How to test it

Create a tx with the Tx Builder
Estimation should work

Note
A cool trick learned from @DiogoSoaress: you can filter the network request by method like so:
-method:OPTIONS estimations

Minus means exclude.

It works
The tx builder example that was given where it failed is not failing anymore
Also trying to upgrade the safe is not showing the error message anymore

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 33.65%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3167

Relevant Lines:
8449

💛  - Coveralls


When creating a resource, limit the namespace options based on filters in top nav

Summary
Fixes #6094

Occurred changes and/or fixed issues
Filtered NS options inside resource form, based on selection from top navigation filter.
Technical notes summary

Replaced component filtering logic with state getter
Added unit tests for the component and state
Moved logic for other filters

Areas or cases that should be tested
In resource NS filter inspect the list of the available values based on the conditions:

Filter by user NS
Display all NS
Filter by NS inside projects
Filter by single NS
Hide/show Rancher system NS
Local and provisioned clusters
Filter NS which are readonly as the user has no rights to create resources under them (does not contain links.update)
Filter NS for products (e.g. Harvester) which have flag hideSystemResources
Filter NS for Harvester NS with flag isFleetManaged

Areas which could experience regressions

Screenshot/Video
https://user-images.githubusercontent.com/5009481/225085965-f0cef244-41f2-4aa0-8ecf-27764a93147e.mov

For what is worth it, I noticed that the logic for customNamespaceFilter (which I still don't get where it's coming from) seems to be used also for ExplorerProjectsNamespaces, Header and NamespaceFilter components.
Here's an issue where we address and unify the logic for the filtering instead of have them in 4+ places.
https://github.com/rancher/dashboard/issues/8469


Why would you revert this when zunami.svg is the only correct icon path?

Why would you revert this when zunami.svg is the only correct icon path?
Originally posted by @philippe-git in https://github.com/curvefi/curve-external-integrations/pull/24#issuecomment-1742052200

?


Data Science with Python : Q Learning

Welcome to 'DSWP' Team, good to see you here
This issue will helps readers in gaining all the guidance that one needs to know about Q Learning. Tutorial to Q Learning and how it's applied using sample code.
To get assigned to this issue, add your serial numbers mentioned in the spreadsheet of "Data Science with Python", the approach one would follow and choice you prefer (Documentation, Audio, Video). You can go with all three or any number of options you're interested to work on.
If you had referred any resources, add them up in "DS Resources". Similarly if you had used datasets, include them in "DS Datasets".
Domain : Machine Learning
Mentors Assigned : Shivang Dubey / Peehu Saxena
Points to Note :
The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.
"Issue Title" and "PR Title should be the same. Include issue number along with it.
Changes should be made inside the Datascience_With_Python/ directory & Datascience_With_Python branch.
Follow Contributing Guidelines & Code of Conduct before start Contributing.
This issue is only for 'GWOC' contributors of 'DSWP' domain.
All the best. Enjoy your open source journey ahead. 😎

/assign
I would like to contribute in the documentation of this topic. I will give a overview of what is Q-learning, its applications in real world and other theory related to the topic. I will also try to include implementation of Q-learning in notebook and add some useful links at the end for further reading.
Vansh Sharma (Serial Number : 680, DS-Python Batch 18)

@vanshhhhh, I have to unassign you as bot says you have more than 3 open issues assigned on your name as part of GWOC.

@prathimacode-hub ma'am one pull request already merged but issue is opened because of other contributors (audio and video) - check here.
and the other one is under review for more than 48 hours

Ok, that's the reason bot didn't accept your assignment. Its fine I will do it manually.
Issue is assigned to @vanshhhhh for documentation

@prathimacode-hub Thanks for understanding ma'am.

It's all automated. So in such cases have to be done manually. @vanshhhhh

@vanshhhhh, audio or video contribution isn't done for this issue. So its kept open.

@prathimacode-hub , Please evaluate mam.

Hello, I am Deepthi M with serial number:172, Batch-5. I would like to do audio on this issue.
My approach: a detailed explanation


Use debug logging for normal operations in network setup

This reduces log rate by a good margin, while still keeping enough info in logs for debugging if and when errors occur.

Hi Matthias, we were recently going through the list of old PRs in draft status. Is this one still of any value or could you close it?


Seq error reporting for structural connectors

User Story
As a Speckle Engineer and Monitor of SEQ
I would like error reporting for structural connectors to be consistent with existing pattern (see below)
In order to be able to interrogate SEQ for errors in a comprehensive way that provides insight and enables root cause analysis
The scope could be limited to ETABS with other tickets.
Nascent A/C:

Same exercise as we did for Revit in 2.16, details TBC.
Move away from app object manipulation, consuming existing pattern for exception handling and reporting
Returning null patten should be changed to adopt throw pattern used elsewhere

Closing this ticket as we are moving to Jira to reduce noise. You can access it there.


Add details for ResourceFlavor concept and task steps for multiple flavors

What type of PR is this?
/kind documentation
What this PR does / why we need it:
Which issue(s) this PR fixes:
Part of #64
Special notes for your reviewer:

cc @cortespao

/hold
/lgtm

/hold cancel


THRIFT-4846. Topologically sort structs before generation

This adds a toposort step prior to emitting generating code for structs.
For many languages (eg Java) this isn't necessary as there is no
"ordering" in the generated code. However, with C and C++, it's
important to define structs prior to their inclusion in another struct.
This also makes Thrift fail when generating C/C++ code with cyclic
references as the toposort is impossible.
A new test includes some structs defined in the "wrong" order to ensure
that the sort produces working code.
I manually tested a file with a true cycle in it, and verified the error
output.

What's blocking this?

Not sure. I took a look at the failed test runs for a few minutes and couldn't find anything that indicated issues with this patch, but it's a wall of text and I'm not familiar enough with the test suite to be able to diagnose what went wrong.

I would suggest to start with the conflict :-)

@toddlipcon I took a look at one of the test outputs and saw this:
org.apache.thrift.TestUnsafeBinaries > testSubStructValidation FAILED
4046    junit.framework.AssertionFailedError
4047WARNING: An illegal reflective access operation has occurred
4048WARNING: Illegal reflective access by org.mockito.cglib.core.ReflectUtils$2 (file:/root/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-all/1.9.5/79a8984096fc6591c1e3690e07d41be506356fa5/mockito-all-1.9.5.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
4049WARNING: Please consider reporting this to the maintainers of org.mockito.cglib.core.ReflectUtils$2
4050WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
4051WARNING: All illegal access operations will be denied in a future release
4052
4053org.apache.thrift.TestStruct > testSubStructValidation FAILED
4054    junit.framework.AssertionFailedError at TestStruct.java:383
4055
4056org.apache.thrift.TestReuse > testSubStructValidation FAILED
4057    junit.framework.AssertionFailedError
4058
4059191 tests completed, 3 failed
4060
4061> Task :test FAILED
4062
4063FAILURE: Build failed with an exception.

testSubStructValidation failed for Java and this tests StructA and StructB which have been changed in this PR.


Can not dispatch job - Unable to JSON encode payload. Error code: 5

Laravel Version: 8.20.1
PHP Version: 8.0.0
Database Driver & Version: do not use DB; Redis 5:6.0.6 - php-redis 8.0

Description:
Can not dispatch job in my artisan console command, I'm always getting Illuminate\Queue\InvalidPayloadException: Unable to JSON encode payload. Error code: 5, even if payload was serialized with php serialize() function
Steps To Reproduce:
<?php

namespace App\Console\Commands;

use App\Jobs\convert as ConvertJob;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Storage;

class downloadByRequest extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'download:requested';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $files = Storage::cloud()->allFiles();

        $url = 'https://wallhaven.cc/api/v1/search';

        $start = Http::get($url)->json();
        $bar = $this->output->createProgressBar(240); // 24 items per page; 10 pages

        for ($i = 1; $i <= 10; $i++) {   // 10 pages to process
            $meta = $i == 1 ? $start : Http::get($url . "&page={$i}")->json();
            sleep(1); // Prevent throttling
            foreach ($meta['data'] as $el) {
                $pur = $el['purity'];
                $cat = $el['category'];
                $fn = basename($el['path']);
                $fpSD = "{$pur}/{$cat}/SD/{$fn}";
                $fpHD = "{$pur}/{$cat}/HD/{$fn}";
                $fpMob = "{$pur}/{$cat}/Mob/{$fn}";

                $existsSD = in_array($fpSD, $files);
                $existsHD = in_array($fpHD, $files);
                $existsMob = in_array($fpMob, $files);

                if (!$existsSD || !$existsHD || !$existsMob) {
                    Cache::put($fn, Http::get($el['path'])->body(), 60);
                    $imgW = $el['dimension_x'];
                    $imgH = $el['dimension_y'];

// --------- BEFORE THIS POINT EVERYTHING WORKS WELL

                    if (!$existsMob && $imgW >= 2340 && $imgH >= 2340) {
                        $pl = serialize([
                            'img' => $fn,
                            'x' => $imgW,
                            'y' => $imgH,
                            'path' => $fpMob
                        ]);
                        ConvertJob::dispatch($pl);
                    }

                    if (!$existsHD && $imgW >= 1920 && $imgH >= 1080 && $el['ratio'] >= 1) {
                        $pl = serialize([
                            'img' => $fn,
                            'x' => $imgW,
                            'y' => $imgH,
                            'path' => $fpHD
                        ]);
                        ConvertJob::dispatch($pl);
                    }

                    if (!$existsSD && $el['ratio'] >= 1) {
                        $pl = serialize([
                            'img' => $fn,
                            'x' => $imgW,
                            'y' => $imgH,
                            'path' => $fpSD
                        ]);
                        ConvertJob::dispatch($pl);
                    }
                }

                $bar->advance();
            }
        }

        $bar->finish();

        return 0;
    }
}

Each time I run the code, I get the error

You have currently thrown a huge code block at us. Could you reduce the code so that it can reproduce the problems without any extra code? Is it required to do http-calls, have a progress bar, store things in cache or dispatch three times to reproduce the problem? Once these things are removed, if they are unnecessary the reproduce the problem, then we will probably end up with a simple case to reproduce the problem. It will probably be just a call to serialize() and ConvertJob::dispatch().
Error code 5 is JSON_ERROR_UTF8 which indicate that some data that is json-encoded isn't valid UTF-8.


How Many Social Media icons should show in contact block

Case:
3 seems to be the limit of what fits nicely.

Suggestion:
Only show icons above 3 items. Tooltip them with their respective brand/service.

Decided to show all.


Error using .time()

I'm trying to validate the date and time, but when I use .time() I get this error. Is there any alternative to using .time() to validate the time?
export const appointmentSchema = z.object({
  clientHashId: z.string({ required_error: 'Client ID is required' }),
  employeeHashId: z.string({
    required_error: 'Employer ID is required',
  }),
  appointmentDate: z.coerce.date(),
  appointmentTime: z.string().time(),
})

Error: The 'time' property does not exist in the 'ZodString' type.
To validate the date/time I'm using date-fns in the form submit, but could it be validated in zod as well or not necessarily?
Thank you in advance for your help.

This functionality is now available in zod@beta

This has landed in Zod 3.23.
https://github.com/colinhacks/zod/releases/tag/v3.23.0


Vnext compose 1.13.0

Proposed changes
Merging changes in vnext-compose into master with the release of Compose 1.13.0
Reviewers
@shin- @dnephin @mstanleyjones  @johndmulhausen

Uh, I didn't mean for that to happen...


Would it be feasible to complete network on areas such as places or plaza?

Problem description
As described here: https://gis.stackexchange.com/questions/341204 I'm wondering if it would be possible to complete a network on some areas where incoming edges are not directly connected to each other, but only through that particular area, such a pedestrian plaza?

It's conceivably possible, but would be nontrivial and probably beyond the scope of the OSMnx project at this point.


add ERDDAP web logs analysis topic page for code sprint

Potential contributors: @ocepaf @abkfenris @jcermauwedu @fgayanilo @jenseva @ChrisJohnNOAA @7yl4r @srstsavage @joe-smithe-glos @mwengren
You all contributed to the original Issue discussion, do you want to be added to this sprint topic as participants or PIs?
Any suggestions/improvements to the text are welcome!

Thanks for starting this! I'm going to go ahead a merge this so we have a webpage to reflect the project. Folks can send in PRs to update the content as the idea flushes out.


assertion left == right failed

Encountered the following issue while running the ord server:
thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/redb-2.1.0/src/tree_store/page_store/region.rs:321:9:
assertion left == right failed
left: 1
right: 0
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
I am seeking possible solutions

Hi Robo - I've been following the conversation you've had today in the #tech-support channel with the Ordicord mods ETS and K4Bong.  I believe that your issue has been resolved.
In the future, please stick to the Ordicord for help requests like this.  The Github is more suitable for bug reporting or making enhancement requests.


Scoreboard white borders have some diagonal black pixels

If you look very very closely, you can see that the Scoreboard's diagonal while lines have some black-ish pixels on them, making it look really ugly if the background is clear enough.

This is actually not an issue with the image itself, but a new "issue" introduced in the latest version of OBS (v27) regarding alpha image handling. Now, the OBS guys have a very in-depth wiki page about it, but I was not able to figure out the actual problem here, as following the (Photoshop) instructions did not solve the issue.
This is something that also happens on the score up videos.
If, for example, you try to use any browser instead of OBS itself to see the scoreboard, you will not see this issue.
So yeah, if anybody knows what to actually do so OBS reads transparency correctly, please let me know!

This issue also extends to the recently introduced top bar (pronouns, [w/l] status), where sometimes the separations between border and background color will be sightly visible depending on the content's width.


Make only once abort or delay decision

Signed-off-by: wbpcode<EMAIL_ADDRESS>Description:
In the original logic of fault filter, when the header contains the x-envoy-downstream-service-cluster, fault filter will execute the decision whether to abort or delay twice. As a result, the actual abort or delay ratio does not meet expectations. The expectations is p and the actual value will be 2p-p^2.
For example, when the abort ratio is configured as 50%, if the header contains x-envoy-downstream-service-cluster, the actual abort ratio is 75%.
This problem can be reproduced by enabling add_user_agent. The current PR fixes this problem.
@alyssawilk
Risk Level: Low
Testing:
Docs Changes:
Release Notes:
[Optional Fixes #Issue]
[Optional Deprecated:]

Let me know when this is ready and I'll take a look!

It is ok and only a few lines of code have been modified. @alyssawilk

the tests appear to be failing though.  Mind taking a look?

This is my negligence, I forgot to fix the test and check the results of the test. It's ok now.

It is done.


Add first class Javascript/Typescript support to the Mill build tool

https://github.com/com-lihaoyi/mill/issues/3927
Checklist

[x] example/jslib/module

[x] common-config/
[x] resources/
[x] custom-tasks/
[x] override-tasks/
[x] compilation-execution-flags/
[x] executable-config

I've taken a glance at this and it isn't really sufficient. Please look at the Java/Kotlin/Scala equivalents of these pages and see what is expected

example.javascriptlib.basic[3-custom-build-logic].local.test appears to be failing in CI

Fixed failing tests

Some last few comments, otherwise just need to flesh out the documentation for all the build.mill files and include them in a page in docs/modules/ROOT/pages/javascriptlib/linting.adoc

I think the code looks good enough for now. Please fix up the docs to include proper english explanations of every example, and ensure that the test-docs CI job passes, then we can merge it

Thanks @monyedavid! Can transfer the bounty immediately or defer it, up to your preference


Introduce list (table) view in addition to tile view

Is your feature request related to a problem? Please describe.
Tile view not suitable for larger number of managed assets
Describe the solution you'd like
Either drop the tile view or add a toggle switch to activate a list / table view with capabilities of:

sorting
filtering
adding/removing properties (columns)

Describe alternatives you've considered
there are no alternatives

We have a list view for admins which allows setting assets to be published and featured. This view should be enhanced to add delete and maybe other admin type functions. The list view here is mostly to enable bulk-updates.
For non-admin users a list view does not currently exist. We did not need one yet since we only have a small set of curated assets.

Adding a wontfix label for now to indicate a lower priority. We can tackle this on at a later date.

thanks @ckadner and @drewbutlerbb4 will close for now and update/reopen once needed


Input on invoke node disappears when removing an edge

Expected Behavior
When removing an edge that connects to an invoke node, the input to the invoke node should stay, so that you can reconnect an edge to the input.
Actual Behavior
When removing an edge that connects to an invoke node, the input to the invoke node disappears.
In this board, it happens to the invoke node's inputs: stopSequences and context. This also happens to the invoke node's outputs: text and context
Steps to Reproduce the Problem

Visit https://breadboard-ai.web.app/?mode=build&board=%2Fgraphs%2Fagent.json
Remove the edge that connects input-1/stopSequences to invoke(generate)/stopSequences.
The input stopSequences to the node invoke(generate) disappears.

Specifications

Version: Chrome Version 122.0.6261.128 (Official Build) (x86_64)
Platform: Mac OS X 14.4

I looked into the JSON representation of the graphs and it looks like the invoke node doesn't have complete information on its inputs and outputs (configuration doesn't have information that stopSequences is an input) (code). So to be rendered in the Breadboard UI, the inputs and outputs have to inferred from the edges.
I also found that this bug happens with the jsonata node (https://breadboard-ai.web.app/?mode=build&board=%2Fgraphs%2Fagent.json). And similarly, the configuration attribute of the node is blank.
Interestingly, the invoke node in this board has information that text is an input. Thus, when the edge that connects to the text input is disconnected, the text input doesn't disappear.
configuration: {
   "text": "unused"
}

Can the input/output information be included in the configuration for the invoke and jsonata nodes?


added an error message if parameters are not loaded

This addresses #342
Needs to be Tested

[ ] hardware
[ ] SIL

Cool. I'm wondering though if changing the message to something like "Reverting to default parameters" would be more informative?

Actually, it looks like this doesn't work in its current form because of initialization order:
void ROSflight::init()
{
  // Initialize the arming finite state machine
  state_manager_.init();

  // Read EEPROM to get initial params
  params_.init();

  // Initialize Mixer
  mixer_.init();

  /***********************/
  /***  Hardware Setup ***/
  /***********************/

  // Initialize PWM and RC
  rc_.init();

  // Initialize MAVlink Communication
  comm_manager_.init();

  // ...
}

Is it worth adding some sort of latched warning/error mechanism?

Hmm.  Darn, I was hoping to avoid that.
Okay, well what module do you think would be responsible for that?  Maybe the CommLink?  He could have a buffer of messages to send when he gets a connection
That would mean that the CommLink would have to be initialized first.  I can't remember if that is possible or not.  However, based on this discussion, I think it needs to be first, anyway.

One possible method: The comm manager could keep a small circular buffer of log messages to send. Right now in the log() function, the message is immediately sent. We could change it so that if the comm manager has not yet been initialized and received a heartbeat (which indicates a connection has been made) it caches the message, otherwise it sends it immediately. Then in the heartbeat callback, the first time it's called it sends any cached log messages.
This is very similar to how the hardfault handling is currently implemented. It's a bit of work for a fairly small increase in functionality, but it probably improves the user experience pretty significantly so may be worth it. What do you guys think?

Yeah, I was thinking about a buffer, so I like that idea. I can take care of that.
How many messages are we willing to buffer? 3 or 4? (x 50 bytes).

the buffer seems to work, but it is being filled with messages from rc_.init():
[ INFO] [1561839984.939654203]: Got HEARTBEAT, connected.
[ERROR] [1561839984.939723851]: Autopilot ERROR: Invalid mixer
[ERROR] [1561839984.939766135]: Autopilot ERROR: Uncalibrated IMU
[ WARN] [1561839984.939798835]: Autopilot now in ANGLE mode
[ INFO] [1561839984.945727113]: Firmware version: v1.1.0-302-g39909ef9-dirty
[ WARN] [1561839984.945767485]: [Autopilot]: Unable to load parameters; using default values
[ERROR] [1561839984.945792273]: [Autopilot]: Invalid Mixer Choice
[ERROR] [1561839984.945812382]: [Autopilot]: Invalid Mixer Choice
[ INFO] [1561839984.945832998]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.945852901]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.945871821]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.945890041]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.945911454]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.945933887]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.945954122]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.945982013]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946007121]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946034664]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946061603]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946082490]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946115968]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946146040]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946172349]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946191956]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946211599]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946237081]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946263330]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946283270]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946308967]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946329878]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946348287]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946366364]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946392342]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946420082]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946439581]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946458171]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946476209]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946495276]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946513882]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946533325]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946557489]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946579345]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946598547]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946616877]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946635557]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946654358]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946672604]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946690602]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946708987]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946728389]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946748759]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946773379]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946793325]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946814139]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946839241]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946865820]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946885548]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946905901]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946925119]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.946945743]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.946974421]: [Autopilot]: ARM switch not mapped
[ INFO] [1561839984.946996219]: [Autopilot]: ATTITUDE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.947022290]: [Autopilot]: THROTTLE OVERRIDE switch mapped to RC channel 4
[ INFO] [1561839984.947044430]: [Autopilot]: ATTITUDE TYPE switch not mapped
[ INFO] [1561839984.947064420]: [Autopilot]: Booting

This would require a buffer of ~60 messages (300 bytes) to see the params warning log.
Maybe a better question is are the RC messages necessary / can they be sanely throttled?

I think that throttling these messages makes a lot of sense, and I'm wondering if this is related to our getting the ARM_CHANNEL parameter every time we change any parameter from rosflight_io.  I wonder if there is some sort of weird loop in the RC parameter settings.

It appears that these messages are getting sent so often because all of the parameter callbacks for the RC module are getting called at startup, which then call init_rc() a bunch of times and sends those messages. We could probably clean that up to solve this problem

The issue with the RC module re-initializing for every parameter callback it subscribes to (and spamming the messages as a result) should be fixed by #337

cool, I'll take a look at it


hyprpolkitagent: init at 0.1.1

Closes https://github.com/NixOS/nixpkgs/issues/350916
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Currently build fails with
[ 91%] Building CXX object CMakeFiles/hyprpolkitagent.dir/build/.qt/rcc/qrc_hyprpolkitagent_raw_qml_0.cpp.o
/build/source/src/core/Agent.cpp:4:10: fatal error: print: No such file or directory
    4 | #include <print>
      |          ^~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/hyprpolkitagent.dir/build.make:180: CMakeFiles/hyprpolkitagent.dir/src/core/Agent.cpp.o] Error 1

@JohnRTitor needs gcc14Stdenv to build.


[Refactor] move state listener out of GlobalStateMgr, and rename it to state change executor

What type of PR is this：

[ ] bug
[ ] feature
[ ] enhancement
[x] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

run starrocks_fe_unittest

[FE PR Coverage Check]
:disappointed: fail : 65 / 89 (73.03%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/StarRocksFE.java
0
5
00.00%
[115, 116, 118, 119, 121]

:large_blue_circle:
com/starrocks/server/GlobalStateMgr.java
6
10
60.00%
[1058, 1084, 3089, 3090]

:large_blue_circle:
com/starrocks/ha/StateChangeExecutor.java
58
73
79.45%
[48, 49, 50, 60, 61, 62, 63, 64, 100, 120, 139, 153, 154, 155, 156]

:large_blue_circle:
com/starrocks/ha/BDBStateChangeListener.java
1
1
100.00%
[]

run starrocks_fe_unittest

run starrocks_fe_unittest

[FE PR Coverage Check]
:disappointed: fail : 67 / 91 (73.63%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/StarRocksFE.java
0
5
00.00%
[114, 116, 117, 119, 121]

:large_blue_circle:
com/starrocks/server/GlobalStateMgr.java
8
12
66.67%
[1060, 1086, 3092, 3093]

:large_blue_circle:
com/starrocks/ha/StateChangeExecutor.java
58
73
79.45%
[48, 49, 50, 60, 61, 62, 63, 64, 100, 120, 139, 153, 154, 155, 156]

:large_blue_circle:
com/starrocks/ha/BDBStateChangeListener.java
1
1
100.00%
[]

[FE PR Coverage Check]
:disappointed: fail : 66 / 90 (73.33%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/StarRocksFE.java
0
5
00.00%
[115, 116, 118, 119, 121]

:large_blue_circle:
com/starrocks/server/GlobalStateMgr.java
7
11
63.64%
[585, 586, 1073, 1099]

:large_blue_circle:
com/starrocks/ha/StateChangeExecutor.java
58
73
79.45%
[48, 49, 50, 60, 61, 62, 63, 64, 100, 120, 139, 153, 154, 155, 156]

:large_blue_circle:
com/starrocks/ha/BDBStateChangeListener.java
1
1
100.00%
[]

run starrocks_admit_test

run starrocks_admit_test


Fix and enhance component buttons

This is to address issue https://github.com/clearlydefined/website/issues/946.
-Viewing components (Inspect) is supported in workspace and curation.
-Adding source component, switching to other version, and adding more versions are now supported in workspace.
-Deleting component is also enabled in workspace

Component buttons in workspace

View Component (inspect)

Version select

@disulliv @mpcen ready for review


Enabled strict mode in tsconfig

Fixes #9.
Changes

Enabled strict mode in tsconfig.json.
Updated interface in src/GifProvider.ts to use primitive types.
Updated yarn generate-docs script to properly use the minimal theme available in TypeDoc.

Sure, I just committed the requested changes.


How to change the configuration for concealed text when using Vimtex?

Hello! I've recently started using Vimtex to write Latex files and one of the plugins features is to use conceal to substitute equations and symbols syntax by their respective characters. Example here.
However, when this feature is enabled using Nightfox, the replaced symbols are stylised in dark-grey on a dark background, making them barely visible.
Could someone help me configuring this to render as normal text?
Thanks!

You can refer to the syntax highlighting section of the readme to figure out what the name of the highlight group. You can then override that highlight group.
I am guessing that the highlight group is Conceal. Here is an example of overriding it.
  require("nightfox").setup({
    groups = {
      all = {
        -- Some examples, make sure only to define Conceal once
        Conceal = { link = "Comment" }, -- link `Conceal` to another highlight group
        Conceal = { fg = "syntax.comment" }, -- link `Conceal` to a spec value
      }
    }
  })

Thanks so much for the quick answer!


VPC effective public source ip address changes

ISSUE TYPE

Bug Report

COMPONENT NAME
VPC

CLOUDSTACK VERSION
4.15.2

CONFIGURATION
Advanced Zone
OS / ENVIRONMENT
ACS - Centos 8
Hypervisor - VMware <IP_ADDRESS>
SUMMARY
When one network that belongs to a VPC goes down (shutdown), effective public src ip address changes (source-nat) to a different allocated ip address. Workaround: Reboot Virtual Router.
STEPS TO REPRODUCE

Login to the UI.
Create a VPC with two (2) networks (A and B)
Create at least one VM on each network (A and B)
Add e configure additional ip address for each VM
Run #curl ifconfig.me (at VR console)
Stop all VMs using the network A
Wait until network shuts down (network.gc.wait)
Run #curl ifconfig.me (at VR console)

EXPECTED RESULTS
External source ip should always be the same, i.e., the ip shown as source-nat in cloudstack should show always be returned in steps 5 and 8.
ACTUAL RESULTS
At step 8 a different ip address is shown as source ip.

might be fixed by #5532

We tested backporting 4.15.2 with PR #5532. Its working fine.


Unable to read entire parquet directory

System information

Ubuntu 19.04
pipenv install modin:
Modin version: 0.5.0
Python version: 3.7.3
Exact command to reproduce: pd.read_parquet('parquet-out/foo/')

Describe the problem

It seems that read_parquet cannot read an entire directory of parquet files i.e. partitioned parquet directory.
Source code / logs

~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/modin/pandas/io.py in read_parquet(path, engine, columns, **kwargs)
27     return DataFrame(
28         query_compiler=BaseFactory.read_parquet(
---> 29             path=path, columns=columns, engine=engine, **kwargs
30         )
31     )
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/modin/data_management/factories.py in read_parquet(cls, **kwargs)
49     @classmethod
50     def read_parquet(cls, **kwargs):
---> 51         return cls._determine_engine()._read_parquet(**kwargs)
52
53     @classmethod
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/modin/data_management/factories.py in _read_parquet(cls, **kwargs)
53     @classmethod
54     def _read_parquet(cls, **kwargs):
---> 55         return cls.io_cls.read_parquet(**kwargs)
56
57     @classmethod
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/modin/engines/ray/generic/io.py in read_parquet(cls, path, engine, columns, **kwargs)
149
150         if not columns:
--> 151             pf = ParquetFile(path, memory_map=False)
152             columns = [
153                 name
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py in init(self, source, metadata, common_metadata, memory_map)
127                  memory_map=True):
128         self.reader = ParquetReader()
--> 129         self.reader.open(source, use_memory_map=memory_map, metadata=metadata)
130         self.common_metadata = common_metadata
131         self._nested_paths_by_prefix = self._build_nested_paths()
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/_parquet.pyx in pyarrow._parquet.ParquetReader.open()
~/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/error.pxi in pyarrow.lib.check_status()
ArrowIOError: Arrow error: IOError: Error reading bytes from file: Is a directory

Hi @ddutt, thanks for reporting!
How was this directory created? Is this directory working to read into pandas?
From my understanding, this wouldn't work in pandas, so it could be a good addition to our experimental API. The goal of that API is to make clear what are "augmentations" on top of the pandas API where the behavior diverges.

Hi,
Appreciate the prompt response.

Hi @ddutt, thanks for reporting!
How was this directory created? Is this directory working to read into pandas?

Yes, the directory can be read in Pandas.

From my understanding, this wouldn't work in pandas, so it could be a good addition to our experimental API. The goal of that API is to make clear what are "augmentations" on top of the pandas API where the behavior diverges.

Nope, it does work in pandas correctly. Showing the ipython snippet below:
In [5]: df = pd.read_parquet('parquet-out/foo')
In [6]: df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 454 entries, 1 to 4
Data columns (total 20 columns):
...
And an ls to show that there is more dir under parquet-out/foo:
$ ls -l parquet-out/foo/
total 56
drwxrwxr-x 13 ddutt ddutt 4096 May  5 09:39 a1
drwxrwxr-x 24 ddutt ddutt 4096 May  5 09:39 a2
drwxrwxr-x 24 ddutt ddutt 4096 May  5 09:39 a3
drwxrwxr-x  7 ddutt ddutt 4096 May  5 09:39 b1
drwxrwxr-x 30 ddutt ddutt 4096 May  5 09:39 b2
drwxrwxr-x 30 ddutt ddutt 4096 May  5 09:39 b3
drwxrwxr-x 30 ddutt ddutt 4096 May  5 09:39 b4
drwxrwxr-x 30 ddutt ddutt 4096 May  5 09:39 b5
drwxrwxr-x  9 ddutt ddutt 4096 May  5 09:39 c1
drwxrwxr-x  9 ddutt ddutt 4096 May  5 09:39 d1
drwxrwxr-x  9 ddutt ddutt 4096 May  5 09:39 d2
drwxrwxr-x  9 ddutt ddutt 4096 May  5 09:39 d3
drwxrwxr-x 14 ddutt ddutt 4096 May  5 09:39 e1
drwxrwxr-x 14 ddutt ddutt 4096 May  5 09:39 e2
Please let me know if you need further info from me. I can have many parquet files and so I'd very much like the ability to read in parallel an entire directory. Alternately, is there any other way to read the files in parallel?
Thanks for providing this software in open source.
Dinesh

Meanwhile, I found the workaround as: pa.ParquetDataSet(folder).read().to_pandas().
Dinesh

Thanks @ddutt, sorry I am traveling today and have limited WiFi until this evening.
We are using parquet in the partitions, so it should be a quick fix. Link to relevant code here: https://github.com/modin-project/modin/blob/master/modin/engines/ray/pandas_on_ray/io.py#L54

Hi @ddutt, I was unable to reproduce the error of what you had exactly. I got a ArrowIOError: Memory mapping file failed: Invalid argument and it was resolved with #632. Could try again with #632 and let me know if that fixes your issue? Thanks!

Hi, I left a comment on the other thread. If I add just your fixes to the files I got via pip install modin, I get a different error. I've turned off memory map and so the problem you have doesn't arise. What I get instead is this new error:
RayTaskError: ray_worker (pid=31117, host=ddutt-yoga)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/engines/ray/pandas_on_ray/io.py", line 55, in _read_parquet_columns
df = pq.read_pandas(path, columns=columns, **kwargs).to_pandas()
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 1144, in read_pandas
use_pandas_metadata=True)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 1123, in read_table
use_pandas_metadata=use_pandas_metadata)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/filesystem.py", line 181, in read_parquet
use_pandas_metadata=use_pandas_metadata)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 985, in read
use_pandas_metadata=use_pandas_metadata)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 535, in read
table = reader.read(**options)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 211, in read
columns, use_pandas_metadata=use_pandas_metadata)
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 261, in _get_column_indices
for descr in index_columns
File "/home/ddutt/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/parquet.py", line 262, in
if descr['kind'] == 'serialized']
TypeError: string indices must be integers

@ddutt, I am unable to recreate your new issue. It works for me when I write the parquet files using
import pyarrow.parquet as pq
import pyarrow as pa
table = pa.Table.from_pandas(pandas_df)
pq.write_to_dataset(table, root_path='test')

or
import pandas
pandas_df.to_parquet('test', engine='pyarrow', partition_cols=['col1'])

The second method is causing some issues similar to #633 that I am currently fixing.
For reference,
import pandas
pandas_df = pandas.DataFrame({"col1": [1,2,3], "col2": [4,5,6], "col3": [7, 8, 9]})

Could you provide me with how you are writing your parquet files and some sample data (including columns and index)?

Here is the code I use to write the parquet files:
`
table = pa.Table.from_pandas(df, schema=data['schema'],
preserve_index=False)
    pq.write_to_dataset(table, root_path=cdir,
                        partition_cols=data['partition_cols'],
                        version="2.0",
                        flavor='spark')`

@ddutt sorry for the multiple fixes but I am still unable to recreate the TypeError: string indices must be integers error. However, #632 might now fix your error. The previous fix did not handle partition_cols properly, but now #632 adds support for handling partitioned parquet files with specified partition_cols.

I'll take out the version and flavor options from my parquet write and see if that fixes the problem. Nevertheless, its surprising that pandas has no problems reading but modin does.

Nope, same problem.

I even took out the preserve_index=False option. No joy.

hmm ok i'll look more into it later tonight. sorry for the delay!

Hi @ddutt, sorry I've been away from the thread. I'm at a conference this week.
Is this data you can share? Since we're having such difficulty reproducing the error, it seems like sharing the file is the only way we can fix it.

I believe I can. Let me see what I can do. Thanks again to both of you for all your help. One last q. I've been writing with pyarrow not from the ray distribution, but from the original pyarrow distribution. Do you think that could be a cause. I can try that option as well.

I think I tried it with pyarrow from the ray distribution and from the pip installed version and there was no difference. Though I will try it again tonight and try writing the data from the spark version as well

OK, when I tried to write with the pyarrow version from ray (by adding import modin.pandas as pd first), my write fails with:
Traceback (most recent call last):
File "q.py", line 166, in
_main(userargs)
File "q.py", line 114, in _main
loop.run_until_complete(asyncio.gather(*tasks))
File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
return future.result()
File "writer.py", line 94, in run_output_worker
worker.write_data(data)
File "writer.py", line 53, in write_data
table = pa.Table.from_pandas(df, schema=data['schema'])
File "pyarrow/table.pxi", line 1139, in pyarrow.lib.Table.from_pandas
File "/home/ddutt/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/pandas_compat.py", line 471, in dataframe_to_arrays
convert_types)]
File "/home/ddutt/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/pandas_compat.py", line 470, in
for c, t in zip(columns_to_convert,
File "/home/ddutt/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/pandas_compat.py", line 466, in convert_column
raise e
File "/home/ddutt/.local/share/virtualenvs/foo-cFmMv4Vf/lib/python3.7/site-packages/ray/pyarrow_files/pyarrow/pandas_compat.py", line 460, in convert_column
return pa.array(col, type=ty, from_pandas=True, safe=safe)
File "pyarrow/array.pxi", line 173, in pyarrow.lib.array
File "pyarrow/array.pxi", line 36, in pyarrow.lib.sequence_to_array
File "pyarrow/error.pxi", line 81, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: ('Could not convert True with type numpy.bool: tried to convert to boolean', 'Conversion failed for column active with type bool')

So, at first glance it seems the problem has to do with the pyarrow version in ray.

@ddutt If it is the pyarrow version in ray, we can easily fix that. Do you have some sample data (not necessarily this data + the exact call) that can reproduce the issue?
Also what is your environment pyarrow version?

pyarrow version is 0.12.1.
I'll be back a bit later to try and get you the data.

Would you be able to try it with 0.13? There may have been some parquet updates that broke some backwards compatibility.

I switched to pyarrow 0.13 and now I get a different error:
In [3]: df
Out[3]: ---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/IPython/core/formatters.py in __call__(self, obj)
    700                 type_pprinters=self.type_printers,
    701                 deferred_pprinters=self.deferred_printers)
--> 702             printer.pretty(obj)
    703             printer.flush()
    704             return stream.getvalue()

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/IPython/lib/pretty.py in pretty(self, obj)
    400                         if cls is not object \
    401                                 and callable(cls.__dict__.get('__repr__')):
--> 402                             return _repr_pprint(obj, self, cycle)
    403
    404             return _default_pprint(obj, self, cycle)

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
    695     """A pprint that just redirects to the normal repr function."""
    696     # Find newlines and replace them with p.break_()
--> 697     output = repr(obj)
    698     for idx,output_line in enumerate(output.splitlines()):
    699         if idx:

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/pandas/dataframe.py in __repr__(self)
     89         num_cols = pandas.get_option("max_columns") or 20
     90
---> 91         result = repr(self._build_repr_df(num_rows, num_cols))
     92         if len(self.index) > num_rows or len(self.columns) > num_cols:
     93             # The split here is so that we don't repr pandas row lengths.

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/pandas/base.py in _build_repr_df(self, num_rows, num_cols)
     48
     49         if not hasattr(self, "columns") or len(self.columns) <= num_cols:
---> 50             head_front = head.to_pandas()
     51             # Creating these empty to make the concat logic simpler
     52             head_back = pandas.DataFrame()

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/backends/pandas/query_compiler.py in to_pandas(self)
    485         else:
    486             ErrorMessage.catch_bugs_and_request_email(
--> 487                 len(df.index) != len(self.index) or len(df.columns) != len(self.columns)
    488             )
    489             df.index = self.index

~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/error_message.py in catch_bugs_and_request_email(cls, failure_condition)
     36         if failure_condition:
     37             raise Exception(
---> 38                 "Internal Error. "
     39                 "Please email<EMAIL_ADDRESS>with the traceback and command that"
     40                 " caused this error."

Exception: Internal Error. Please email<EMAIL_ADDRESS>with the traceback and command that caused this error.

In other words, the read_parquet error is gone. But I get a different error when I attempt to display the contents of the dataframe. I've hand patched the fixes @williamma12 provided.

On debugging further, it seems that when modin splits the read of the partitioned parquet directory, it adds back the columns and names that are in the partitioned directory wrongly. For example, if I create a partitioned parquet read, and I have the structure topdir/var1=a/var2=b/foo.parquet, and the columns in foo.parquet are var3, var4, var5, the new columns after modin reads is like this: var3, var1, var2, var4, var1, var2, var5, var1, var2. Here is the debug statement that I see:
~/.local/share/virtualenvs/a-cFmMv4Vf/lib/python3.7/site-packages/modin/backends/pandas/query_compiler.py in to_pandas(self)
    485         else:
    486             ErrorMessage.catch_bugs_and_request_email(
--> 487                 len(df.index) != len(self.index) or len(df.columns) != len(self.columns)
    488             )
    489             df.index = self.index
ipdb> df.index
RangeIndex(start=0, stop=12, step=1)
ipdb> self.index
RangeIndex(start=0, stop=12, step=1)
ipdb> df.columns
Index(['var3', 'var1', 'var2', 'var4', 'var1', 'var2',
       'var5', 'var1', 'var2'], dtype='object')
ipdb> self.columns
Index(['var3', 'var4', 'var5'], dtype='object')

Ah yes that should be fixed in the newest version of #632. Sorry about that I pushed some more commits earlier today to resolve that issue. You should be able to install it with
pip install git+https://github.com/williamma12/modin.git@io/parquet_partitions

YES! It works on applying the additional patch.
Thank you so much @williamma12 for so diligently working on the problem. You can mark the bug fixed at least from the perspective of the way I reported it.
Best wishes,
Dinesh

Yay! Thanks for working so closely with us on getting this bug fixed @ddutt. We'll continue looking into what happened between ray's pyarrow, which is built off of 0.12.1, pyarrow 0.12.1, and pyarrow 0.13.

@pcmoritz Do you think we could update the version of Pyarrow shipped with Ray?

The pyarrow version shipped with ray is now upgraded in https://github.com/ray-project/ray/pull/4858


Fix backdrop "Cannot read property 'removeChild' of null" when removed from body

Hi!
This fixes #33946
Here is a reproducer: https://weaverryan.github.io/bootstrap-modal-close-reproducer/
Code: https://github.com/weaverryan/bootstrap-modal-close-reproducer/blob/main/index.html#L34-L46

Click "Launch demo modal"
Click "Save changes" in the modal.

Then in the console you'll see:

TypeError: Cannot read property 'removeChild' of null
(backdrop.js:119)

This occurs if you hide() a backdrop, but then the HTML of the backdrop is removed from the body while its animation is finishing. From the reproducer:
bootstrap.Modal.getInstance(document.querySelector('#exampleModal')).hide();
document.body.innerHTML = 'Page content changed';

When would this happen? It happens, for example, if you're using Turbo. For example, if you close a modal, then immediately "visit" another page, in reality, that just swaps the body.innerHTML for the page, which causes backdrop to error when it can't find its parent (after the animation).
Please let me know if you need any more clarification or tweaks to the PR :).
Thanks!

/CC @alpadev @rohit2sharma95
this is similar to #33727. We have the asynchronous process error
The script that triggers that causes the problem, deletes everything without wait for transitionend
document.querySelector('#save-changes').addEventListener('click', (event) => {
      bootstrap.Modal.getInstance(document.querySelector('#exampleModal')).hide(); // THIS IS AN ASYNC PROCESS
      document.body.innerHTML = 'Page content changed (e.g. faking an AJAX navigation). Check the console for the error.'; //THIS remove everything (plus parentElement) synchronously
  });

Proposal: as alert, tooltip, backdrop, use the same process and checks, isn't safer to extract the functionality to utils or to Manipulator.remove() instead to make inline checks?

Proposal: as alert, tooltip, backdrop, use the same process and checks, isn't safer to extract the functionality to utils or to Manipulator.remove() instead to make inline checks?

I see what you're talking about - it looks like it's already handled correctly for the other spots:

tooltip
alert

So at least we know this PR is consistent with behavior elsewhere.
As far as extracting it to util/, I'm fine either way. Are you thinking... like a removeElementFromParent(element) function - in index.js?
Cheers!

@weaverryan , agreed with Rohit.
Lets fix it here, and you can open a next pr, gathering all these

I've just made the updates and rebased :).
Unfortunately, it looks like there are some pesky test problems. I can't repeat them locally, but each time the tests run here, the same test fails on 1 or 2 of the jobs - sometimes its Node 12, sometimes 14, etc :/.
Here's an example: https://github.com/twbs/bootstrap/pull/34014/checks?check_run_id=2640394953
I can't figure out how the new behavior would be affecting this other test :/

The flakyness can be explained by jasmine running the tests in random order. So if some certain test is ran before the other, things could fail that wouldn't fail in a different order.
I suspect the problem here:
https://github.com/twbs/bootstrap/blob/e0b81f331dc60ddac1e6e881b49dc3696fca16c5/js/tests/unit/util/backdrop.spec.js#L144
This will remove our fixture element and may lead to problems.


I created a google chrome extension that creates links to my favorite sites

The video is inside the video folder https://github.com/antosha-85/2020-04-29-script-runner/tree/master/Video_project
I didn't use any script runners only HTML, CSS and Manifest.json

I don't see your javascript code anywhere.

I don't see your javascript code anywhere.

Hey. I didn't use javascript. I actually didn't need it. The extension is working without js.

Nice idea for extension, maybe it would be good to have option to remove and add links to extension through user interface.


Website does not scale well on high res displays

I need to zoom in 150-200% to make the site comfortably usable.

What is this, a website for ANTS!?

(For reference I'm using a 1440p monitor)


Stale request object

Hello there.
We are using this cool library you made to perform resilient calls from a GraphQL API to some other APIs.
To perform the HTTP Calls we made a NestJS Service that is just wrapping the nestjs/axios library and accessing the request object in order to extract some information we need to perform the request (such as a token).
The thing is, I found out that even though every provider is request scoped (because they depend the HttpService which is request scoped), when I use the @UseResilience(new CircuitBreakerStrategy(someOptions)) in the methods that uses the HttpService we then get old requests objects (actually the first request object that hit the server).
Let me share some code:
Class that uses the CircuitBreaker
import { HttpService } from '@addi/http-client/feature-http/nest';
import { Injectable, Logger } from '@nestjs/common';
import { BackendClient } from './client.interfaces';
import { CircuitBreakerStrategy, UseResilience } from 'nestjs-resilience';

export interface GetClientParams {
  clientId: string;
}

@Injectable()
export class ClientRepository {
  constructor(
    private readonly httpService: HttpService,
  ) {}

  private readonly logger = new Logger(ClientRepository.name);
  private readonly serviceBaseUrl = 'dummyurl.com';
  private static readonly GET_CLIENT_PATH = '/clients/{clientId}';

  @UseResilience(new CircuitBreakerStrategy())
  async getClient(params: GetClientParams): Promise<BackendClient> {
    const url = this.buildGetClientUrl(params);
    const { data } = await this.httpService.get<BackendClient>(url);
    return data;
  }

  private buildGetClientUrl(params: GetClientParams): string {
    return `${this.serviceBaseUrl}${ClientRepository.GET_CLIENT_PATH}`.replace(
      '{clientId}',
      params.clientId
    );
  }
}

HttpService constructor
@Injectable({ scope: Scope.REQUEST })
export class HttpService implements IHttpService {
  private readonly logger = new Logger(HttpService.name);

  constructor(
    private readonly nestHttpService: NestHttpService,
    @Inject(MODULE_OPTIONS_TOKEN) protected readonly options: HttpModuleOptions,
    @Inject(CONTEXT) private context: { req: HttpRequest }
  ) {}

That context.req is stale when using @UseResilience(new CircuitBreakerStrategy()) and it's fresh when avoiding it, this is also reflected on the context_id.
Any thoughts on what might be happening? Let me know if I can provide more information.

So, looks yours value was cached by  circuit breaker... Or maybe it broke request-scoped features.
Can you create minrepro for debug?

So, looks yours value was cached by circuit breaker... Or maybe it broke request-scoped features. Can you create minrepro for debug?

Hey @SocketSomeone , thank you for your response.
I've created this mini repo, you can find in the description steps for reproducing the bug.

@fhosen Thank you!
https://github.com/SocketSomeone/nestjs-resilience/releases/tag/2.1.2

@fhosen Thank you! Fixed by https://github.com/SocketSomeone/nestjs-resilience/releases/tag/2.1.2

On the contrary, thank you for fixing this so quickly.


Add \SensitiveParameter attribute to params with any secret or key material

Hi, this attribute is used to mark a parameter that is sensitive and should have its value redacted if present in a stack trace. (verbatim copy from the PHP manual)
The redaction will be performed only on PHP 8.2 and newer but the attribute itself and the syntax is backwards compatible so using the class with let's say PHP 7.4 will still work as it did before.
I have added the attribute to all params that hold the secret, or the 2FA code, or strings that will contain parts of either of them.
Compare the call stacks, before:

and after the attribute has been added:

Thanks.

Hey @spaze, thanks for this PR. We just need you to sign your commits in order to approve it:
https://docs.github.com/articles/about-gpg/
https://dev.to/zahrakhadijha/git-fixing-unsigned-gpg-commits-phn

Hey, sorry missed the check. All commits now signed, thanks!

Hey @antonioribeiro, would you please consider releasing a new version so the attribute is available? Thanks!

Hi @antonioribeiro , could you please tag a new release so this can be used with versioned releases? Thanks you!

Hi @antonioribeiro, do you need help maintaining the lib? I'd volunteer to help you with the lib if you'd like to :-)


[Candidate 1v1 AKAs Magic ZH v1] There are many obstacles on the terrain that can be driven through but not clicked on

Issue Description
There are many obstacles on the terrain that can be driven through but not clicked on. They are visually ambiguous. One could assume that units should not drive and shoot through. It is not possible to click on the terrain under these ruins.
Expected behavior
All tall ruins are placed on impassable terrain only.
Screenshots

Fixed on next version, impassable terrain added under all the ruins.

This could backfire if ruins can be removed with scaffolds. I will see. Impassable areas on main path ways will perhaps make this map unplayable.

Xezon you just made me spend 1 hour adding impassable terrain under all these ruins without thinking it through first. You need to start thinking longer and harder before raising these ridiculous blockers.
Next you're gonna say that ruins can be cleared and impassable remains, therefore all ruins get banned... which is ridiculous and we are not banning that.
If these ruins can be cleared, then we need to allow ruins and units to go through them. Because there's 1000s of other objects on other maps already that get played everyday and no player ever complains. So I hope we can solve this.

As far as I know these ruins are special because they cannot be clicked into. So they affect gameplay negatively, beside being visual distractions. It is important to test what is placed on maps and consider their impact. My advice is to not put unnecessary things into maps that make it
a) slow
b) crowded
c) difficult to play on
This map was created by Adriane. Perhaps it is a good idea to involve him here to find proper solutions for the problems.

But what's the issue now? All your fixes have been implemented

I have not tested your edit yet. The way I would have fixed it is move all ruins to the side of path ways to not obstruct the play ground - or replace them with low things that do not affect clicking. I can give another update when I looked at changes.

AKAs Magic.zip
Removed some ruins as I agree its making the map too bunkery.
I also figured you cannot remove the ruins with a scaffold, with the impassable terrain underneath. So we are making progress.
Please test this new version, delete old.

AKAs Magic.zip
new version is here with all the fixes, believe map is finished now

I have just gotten an updated INI file which is now included in the above map version, this fixes the buildings disappearing in the fog.


Delay in printing tool calls output

clio version - v0.1.4
Steps to reproduce the problem:

Launch clio
Execute the following script

for i in {1..15}
do
    echo "output: $i"
    sleep 60
done
ls

Notice that after the exec call is mode there i no output for the first 1 minute after which we would see the following 2 lines

   ┌───────────┐
    │ output: 1 │
    │ output: 2 │

Expected Behavior:
Should be able to see the output from the tool call immediately.

This issue is not seen when testing with gptscript version - v0.0.0-dev-a7509b0d-dirty
Will wait for the fix to be made available in clio before closing this issue.


Numbers >= 10

At this time, it looks like %N doesn't go above 9.
Instead of numbering 9, 10, 11, 12 it returns 9, 0, 1, 2.
Edit: I know that using %NN includes leading zeros etc. but I think that the above is still true and should not go back to 0 after 9.

Is there a solution to this yet? Any workarounds?

The workaround is to use the %NN. I'm working on a fix


Update RequestHandler types in Cloudflare Pages example

What is it?

[ ] Feature / enhancement
[ ] Bug
[X] Docs / tests

Description
Update RequestHandler types in Cloudflare Pages example. The type seems to have been updated to be a generic and the example import no longer exists.
I'm running:
<EMAIL_ADDRESS>"0.18.1",
<EMAIL_ADDRESS>"0.2.1",

Use cases and why

Accessing platform data in endpoint with TS types

Checklist:

[x] My code follows the developer guidelines of this project
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[ ] Added new tests to cover the fix / functionality

Hi @OzzieOrca 👋
Very nice! Thanks a lot for this adjustment! 🙏
Imo we need to adjust afterwards the example of netlify (and plain node) as well.
@shairez / @adamdbradley : ✅


Add gas_price to staking tx & creating app tx

Now we can set gas_price during initialization (staking tx & creating app tx)

Could you update the gas price in the sample config to 500 (min_gas_price)?

Looks good! PTAL! @liayoo

Thanks! Now merging!


Create default dependent resources using controller when create a LLM Application

For now, it's some complex to write a LLM application yaml, something we can do to simplify it.

Create default dependent resources(CRDs) using controller, not by user, such as Prompt, LLMChain, RetrievalQAChain, KnowledgeBaseRetriever. We can use default settings or even leave it empty, and the user can fill them in later, leave it to UI or runtime(error, event, log etc for troubleshooting)
Use the same name as the Application, and add owner reference to this Application CR.
Similar as GPTs, we can have a LLMChain and RetrievalQAChain template, and let user input some simple config, like role, description. Then let LLM generate some better context info to fill in the Application, and get a better GPT/AI Agent.

Maybe we can just place some must required fileds like

llm
llm_call_options
knowledgebase
other fields...

And generate the nodes automatically in application controller.
For the relations betwee nodes ,we set/update at application's annotation or a seperate configmap.
The appruntime can init based on the annotations .


readme lacks use cased

This piece of code looks impressive.
However, it is not obvious for a new comer what can be done with it.
Do you have any example of application that has been built on top of it ?
It would worth to mention that in the readme.
Regards

@setop are you more curious about low-/code-level use-cases, or about high-level questions like what kinds of projects it is a good fit for?
Only answering as a user, but this pair from the bashup org may be your best bet for mature, documented public projects that use this events module:

https://github.com/bashup/.devkit

https://github.com/bashup/.devkit/blob/master/dk.md

https://github.com/bashup/doco

https://github.com/bashup/doco/blob/master/Config.md
https://github.com/bashup/doco/blob/master/Services.md

AFAIK the only other public projects so far are mine, but they aren't very accessible as references (still ~early, unreleased, and undocumented).

Also, Imposer and Mantle use it.  In general, it's a tool for creating configurable and extensible tooling frameworks in shell script, where the tool handles basic structures but different actions need to be injected on a per-project basis.  (Which really covers all of these examples.)
Leaving the ticket open for now, especially in case anybody has any other examples to suggest.  :)


add basic history support

add history save/add api to DSState

also add load api

add HISTCMD in commit 43dc7b34aa5fc0c3de84927101217ad52c173b74


[Do not merge until discussion] Remove 99.9% of rllab

With the exception of one file whose purpose I'm confused about (examples/aimsun/stabilizing_the_ring.py) RLlab has been removed.

We don't need the aimsun file. And I'm definitely pro this is we want to do it. We can make it part of the 0.4.1 release

I'd like to check before we do this if it's possible to just convert our current rllab support into support for Garage. I don't think it's a super popular library but since we've built the support out anyways...

+1, perhaps we can sample a few folks who are using Garage and get a sense
of what their primary use cases are (vs baselines, RLlib, etc). then we can
see if the folks using Garage may benefit from Flow and vice versa.

Personally am pro replacing rllab with stable-baselines more so than any other RL library. I will resolve merge conflicts in this PR and replace the remainign 0.1%, and if we are happy with this then let's feel free to merge

Pull Request Test Coverage Report for Build 4131

3 of 3 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 91.931%

Totals

Change from base Build 4104:
0.03%

Covered Lines:
8761

Relevant Lines:
9530

💛  - Coveralls

If no one has any objections I can approve.

Thanks! I'll merge this simultaneous with the new RL library, so we always have an easy to use one + RLlib

@AboudyKreidieh, is it good to you now?