Ratchet Websocket best practice

Hey,
I've build a Websocket chat based on ratchet that uses reactphp async mysql and just got a couple of questions to make sure I'm doing things right, as I couldn't really find any examples out there.
So, the Socket will be used by different applications, each of them has it's own database where the data has to be stored and published, which means there are multiple Lazy connections created, this is done by the Ratchet Pusher.
There is one database locally on the Websocket server that stores all connected interfaces in one table, out of there the connections are distributed.
The push-server starts the event loop and passes the mysql factory to the pusher constructor (push-server.php):
My first question is: Is it ok like that to pass the whole factory object directly to the pusher?

require dirname(__DIR__).'/websocket/vendor/autoload.php';

use React\MySQL\Factory;
use React\MySQL\QueryResult;

$loop = React\EventLoop\Factory::create();
$factory = new Factory($loop);
$pusher = new websocket01\Pusher($factory);

$webSock = new React\Socket\Server('<IP_ADDRESS>:8090', $loop);
$webServer = new Ratchet\Server\IoServer(
    new Ratchet\Http\HttpServer(
        new Ratchet\WebSocket\WsServer(
            new Ratchet\Wamp\WampServer(
                $pusher
            )
        )
    ),
    $webSock
);

$loop->run();

The Pusher then creates a lazy connection for each connected Interface in the constructor, and thats my second question: Is it better to create just one async db connection at all and keep it alive (like now), or is is better to reopen the connection at every client interaction ?
(Pusher.php):

    protected $connection;
    protected $subconnections = array();

    public function __construct($factory){
        //Main Websocket db
        $uri = 'localhost...';
        $this->connection = $factory->createLazyConnection($uri);

        //Create array with Connections to Sub dbs for every entry in the interface table
        $stream = $this->connection->queryStream('SELECT * from interfaces');

        $stream->on('data', function ($interface) use ($factory) {

                if (!array_key_exists($interface['interface_dbhost'], $this->subconnections)) {
                    $uri = "".$interface['interface_dbuser'].":".$interface['interface_dbpass']."@".$interface['interface_dbhost'].":".$interface['interface_dbport']."/".$interface['interface_dbname']."";

                    $this->subconnections[$interface['interface_dbhost']] = $factory->createLazyConnection($uri);
                }
        });
        $stream->on('end', function () {
            echo 'Completed.';
        });
    }

The main (local) database will still be used to save clients data, errors, verify tokens etc.
The right database connection will then be chosen in onopen, onsubscribe, onpublish... automatically out of the subconnections array, depending on the application the client comes from, and the action he wants to perfom, for e.g:

    public function onPublish(ConnectionInterface $conn, $conversation_id, $event, array $exclude, array $eligible) {
        $obj = json_decode($event);
        $interface = $obj->frontend;
        $channel = $obj->channel;

        $db = $this->selectDatabase($conversation_id, $interface); //Choose right database connection
        $clienthandler = new Clienthandler\Clienthandler($this->connection);

        $action = $this->processRequest($db,$obj, $conversation_id, $clienthandler, $operatorhandler, $channel);
    }

I'm also passing the local db connection to the clienthandler too, as I need it there to log actions.

    public function selectDatabase($conversation_id, $interface) {
            if(array_key_exists($interface, $this->subconnections)) {
                $dbconn = $this->subconnections[$interface];

                $dbconn->ping()->then(function () {
                    echo 'Connection alive' . PHP_EOL;
                }, function (Exception $e) {
                    echo 'Error: ' . $e->getMessage() . PHP_EOL;
                });
            }
        }
        return $dbconn;
    }

The clienthandler then saves the data and broadcasts it to all subscribers
Actually this is working perfect for now, but as I mentioned above, I'm not sure if this is the best way to do this if there are 1000+ Users connected at the same time.
I'm open for any advice :-)
Thank you for your help

Ok so looking at your question I won't go with passing in the factory. But by wrapping the factory in a pool that will open a connection when no idle connection can be reused. Make sure that pool is using a pool per database to avoid accidentally running queries in the wrong database.

Why would you need a child process for every database?

"Make sure that pool is using a pool per database" -
because I can only find documentations about React child-proccess-pools, can you please point me into the right direction here?

Ow so like that. So have one pool object, that internally keeps a list of connections per host+database (a pool per database) and looks in that host+database pool for an idle connection when you need to run a query.

ok now I got it, thanks a lot!


Implement an ls or list command

List the currently-tracked sheets for a COGS project.
I'm open to using ls, list, or some other name.

Good idea


Disable Knob redraw on screen Resize

Hi,
I have few dials on my screen. I have assigned width = 40px to all of them. but when the page loads the Div containing the dials is bigger than 40 px. Then if the user does a resize or goes for Full Screen mode the dials increase in size & persist the size even after the user has exited Full Screen mode.
Is there a way to disable this behaviour? The Function used is as follows:
$(this).knob({
                        'min': 0,
                        'fgColor': fgColorVal,
                        'bgColor': '#dddddd',
                        'readOnly': true,
                        'width': '40px',
                        'dynamicDraw': false,
                        'lineCap': 'round'
                    });

You should remove the width, it turns it responsive.


unify configuration (use environment variables) and dockerize

Sponsored by MadHouse Labs:tm:

added #22 here because this solves it by doing the exact opposite of what #22 suggests

almost ready for review; only issue currently standing is that assets are not copied over to the container

Man i should just merge this shoulndt i

@Jack5079 Oi

So damn true!

Lgtm

i dotn fgjuicking know just merge it

We can like fix the API mounting later right now idgaf

error while creating account:
file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:151
  for (const [k, v] of headers) {
                       ^

TypeError: headers is not iterable
    at buildOutgoingHttpHeaders (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:151:24)
    at responseViaResponseObject (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:315:27)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

currently deployed at https://monofile.dev.madhouselabs.net/ go crazy

TypeError: AuthTokens.find is not a function
    at getToken (file:///usr/src/app/out/server/lib/auth.js:36:23)
    at Module.validate (file:///usr/src/app/out/server/lib/auth.js:39:12)
    at Module.getFromToken (file:///usr/src/app/out/server/lib/accounts.js:49:22)
    at getAccount (file:///usr/src/app/out/server/lib/middleware.js:9:33)
    at dispatch (file:///usr/src/app/node_modules/hono/dist/compose.js:29:23)
    at file:///usr/src/app/node_modules/hono/dist/compose.js:6:12
    at file:///usr/src/app/node_modules/hono/dist/hono-base.js:226:31
    at Hono.dispatch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:236:7)
    at fetch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:60:19)
    at Server.<anonymous> (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:362:13)

AAAAAAAAAAAAAAAAAAAAa

error while creating account:
file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:151
  for (const [k, v] of headers) {
                       ^

TypeError: headers is not iterable
    at buildOutgoingHttpHeaders (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:151:24)
    at responseViaResponseObject (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:315:27)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Pull latest commit to api-v1

deployed

TypeError: AuthTokens.find is not a function
    at getToken (file:///usr/src/app/out/server/lib/auth.js:36:23)
    at Module.validate (file:///usr/src/app/out/server/lib/auth.js:39:12)
    at Module.getFromToken (file:///usr/src/app/out/server/lib/accounts.js:49:22)
    at getAccount (file:///usr/src/app/out/server/lib/middleware.js:9:33)
    at dispatch (file:///usr/src/app/node_modules/hono/dist/compose.js:29:23)
    at file:///usr/src/app/node_modules/hono/dist/compose.js:6:12
    at file:///usr/src/app/node_modules/hono/dist/hono-base.js:226:31
    at Hono.dispatch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:236:7)
    at fetch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:60:19)
    at Server.<anonymous> (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:362:13)

Man i don't even know 😭

TypeError: AuthTokens.find is not a function
    at getToken (file:///usr/src/app/out/server/lib/auth.js:36:23)
    at Module.validate (file:///usr/src/app/out/server/lib/auth.js:39:12)
    at Module.getFromToken (file:///usr/src/app/out/server/lib/accounts.js:49:22)
    at getAccount (file:///usr/src/app/out/server/lib/middleware.js:9:33)
    at dispatch (file:///usr/src/app/node_modules/hono/dist/compose.js:29:23)
    at file:///usr/src/app/node_modules/hono/dist/compose.js:6:12
    at file:///usr/src/app/node_modules/hono/dist/hono-base.js:226:31
    at Hono.dispatch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:236:7)
    at fetch (file:///usr/src/app/node_modules/hono/dist/hono-base.js:60:19)
    at Server.<anonymous> (file:///usr/src/app/node_modules/@hono/node-server/dist/index.mjs:362:13)

Man i don't even know 😭

i was stupid and set tokens.json to " {} " and not " [] " my fault og
you should probably make it... make those files. if they dont exist

if it fails it just. doesn't gaf and sets the authtoken array to [] so like it'll happen eventually anywaaaay

We should really have just used SQL why didnt we monofile from scratch

Ok so yeah it basically works we can merge right

Switching to mogno

LGTM

@nbitzz mergeeeee

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

@Jack5079 Monobot for automatic deployments of monofile whwene>>
Maybe i should do that actually


IOS freezes with App Store version, Adhoc version works

As the title says, the image picker becomes unresponsive in the App Store version ("Select an Album" screen). Can't select an album, can't cancel. The Adhoc signed version works fine. NSCameraUsageDescription and NSPhotoLibraryUsageDescription is set.
Where should I start looking?

Solved. Was actually an issue with https://github.com/apache/cordova-plugin-inappbrowser

@fsalomon what was the issue if I may ask?


Add RBAC command support to Search

Related command

az search
Description

Adding support for RBAC to the search command
https://learn.microsoft.com/en-us/azure/search/search-security-rbac?tabs=config-svc-portal%2Croles-portal%2Ctest-portal%2Ccustom-role-portal%2Cdisable-keys-portal
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

This checklist is used to make sure that common guidelines for a pull request are followed.

[X] The PR title and description has followed the guideline in Submitting Pull Requests.

[X] I adhere to the Command Guidelines.

[X] I adhere to the Error Handling Guidelines.

This is broken right now - can you help me fix this?

@zhoxing-ms for awareness

@yanzhudd, could you please help to take a look the issue above?


Various changes to speed up the abbrivation processing.

Pull Request Description
What issue does this change request address?
What are the significant changes in functionality due to this change request?
Does more preprocessing to speed up the abbreviation processing.

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual.
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Regression tests have to complete successfully.
[ ] 5. If significant functionality is added, there must be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test.
[ ] 6. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.

PR is good to me


Add a "From" email address to email Report task

Currently there is no way to specify in the configuration what do you want email's from address to be. It assumes that the SMTP's username is the from address. But for SMTP service connections where username is not an actual email adddress (does not have @ or domain), this tasks fail at runtime.
This PR will Fix #42 by giving user an optional From email configuration field. If skipped, it will defer back to using SMTP's username. This has minimal impact.

Any idea when this PR can be merged. There is a definite need to fix this extension @fahadash

@LeahSchwartz or anyone else PLEASE can you approve the changes so this can be merged in, it's the ONLY extension that can email test results out from the Release pipeline.

I have sent an email to<EMAIL_ADDRESS>asking for help. Hoping for the best.

Any news on that PR ?

I never received a response from Microsoft OpenSource to my email. I am going to try tweeting to their twitter handle, you guys try it too.

I never received a response from Microsoft OpenSource to my email. I am going to try tweeting to their twitter handle, you guys try it too.

Alright, thanks for your answer, it will try it too. However, I don't want to be pessimistic, but it has been almost one year since they didn't release any new version of this extension. By the time this PR is merged and we see this improvement in prod, I think it's gonna take time.

Is there any update on this?  we require the ability to specify the "From" address when using an AWS SMTP service.

@fahadash Can you remove the review request from @ddeglin ?

@saikrishnav Please, take a look and help to resolve this one.
Thank you!

I think we may have to call Microsoft PSS to get their attention into this.

@ddeglin This PR is waiting on you again, could you look into this please?

@saikrishnav  Could you merge this PR please?

@fahadash Can we please get this PR merged, still running into this problem.

It turns out that we have to wait for a Build to occur before this PR can be merged.

@fahadash Any Idea how is build triggered? Should we expect any response on this?

@saikrishnav Could you get the build 10.x check taken care of?


preview zoom image on hover in popup windows

This is really good NG component.
I wonder, is there existed functionality to preview particular area of image on hover in a popup window.
For instance Amazon, popup windows shows zoom area of image.

Hi @ehsaanwelcome, unfortunately there is no option for that. You can make zoom only on whole image https://lukasz-galka.github.io/ngx-gallery-demo/#preview-with-zoom


Wurst Setup doesn't recall my Game Path (Windows 7 x64)

Whenever I open the wurstsetup - even if I haven't recently updated wurstsetup, I need to reselect Game Path

This is a shame because Game Path really is needed
Should the Game Path not discover default directories like Program Files (x86)\Warcraft III anyway?

This is a shame because Game Path really is needed

For what? The game path is only needed for the runmap command.

Should the Game Path not discover default directories like Program Files (x86)\Warcraft III anyway?

The game path detection is done by reading the windows registry. If the registry entries don't exist or you're not on windows, the path won't be detected.

For what?

For generating a good project environment when creating a new project. If you forget it, you have to go fill it in later, which requires either copy-pasting from an existing project metadata file, or understanding the schema. Both are not that user-friendly.
Maybe a good solution is to always create that metadata file, and instead use a commented-out GamePath configuration, with a comment that says what it's for and why it's commented out?

The game path detection is done by reading the windows registry

Which registry value is checked? It seems that 1.29+ don't set any value that points to Program Files (x86)\Warcraft III\ in HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III

For generating a good project environment when creating a new project. If you forget it, you have to go fill it in later, which requires either copy-pasting from an existing project metadata file, or understanding the schema. Both are not that user-friendly.

No, it simply requires importing the existing project and updating it with the gamepath.
Which registry value is checked? It seems that 1.29+ don't set any value
Does it write any?

No, it simply requires importing the existing project and updating it with the gamepath.

I hadn't thought of that. Now that I think of it, I didn't fully realize the value of import function.
I suspect this will naturally clear itself up as project dependencies become more widely used.

Does it write any?

It writes a path in Documents for maps, which is not that useful. It seems that the installer also writes a path, but that's under a different key. There could be more. I only had a quick ctrl+f through the registry.

I hadn't thought of that. Now that I think of it, I didn't fully realize the value of import function.
I suspect this will naturally clear itself up as project dependencies become more widely used.

Yea, probably needs to be more apparent to the user.

It writes a path in Documents for maps, which is not that useful. It seems that the installer also writes a path, but that's under a different key. There could be more. I only had a quick ctrl+f through the registry.

I guess a detection via path could be useful also, but limited.

I guess a detection via path could be useful also, but limited.

Do you mean by just checking the directory exists? I think that's perfectly reasonable

Do you mean by just checking the directory exists? I think that's perfectly reasonable

Yes, but many users (including me) install wc3 in non-default directories.

I think if you can infer path from registry then that's better.
But, if you can't, but you can say that even just half of users are installing in default directory, then I think detecting it is worthwhile

default install paths are now also checked.

Seen this working today :)


Insignificant characters appear in code completion

please complete the following information:

OS version: Mac Ventura 13.2
Editor: vscode
Editor version: 1.78.2 (Universal)
Programming language: Java
TabNine extension version: 3.6.46
Engine version (could be located within Tabnine Hub): 4.4.312-60

Issue Details:
The current code completion does not complete the code at all when it is a single line, it always completes a bunch of meaningless characters.

gz#23595(related to Zendesk ticket #23595)

I am a subscriber of the pro version. I've been running into this with one-line completions since sometime recently, and it's very annoying to use.

@KnightYin
Please send it to<EMAIL_ADDRESS>

@TzufTabnine The email has been sent.
Additionally, when I tested on another Win10 system computer, I found that there was no problem with one-line completion. I'm going to test my Macbook again tomorrow.

@TzufTabnine
Oh, I found out how to reproduce this situation. When that if statement is formatted and occupies 2 lines, there will be a completion problem below.
If the if statement only occupies one line, there is no problem without indentation. But, When deleting one or more indents, there may also be problems completing a line.
no delete, cursor position after 12 spaces:

delete 1 indent, cursor position after 8 spaces:

delete 3 indent, cursor position after 0 spaces:


Fix Issue #789: Select online tab before creating game when d2r switch to offline tab automatically

Added option online_char to params.ini.
Will check online tab status before creating games when online_char is 1.

Added option online_char to params.ini.
Will check online tab status before creating games when online_char is 1.

This is semi implemented with game_recovery.py
On botty start it saves online status and saves template of the character so if game crashes it'll reselect the correct character. Sounds like this function could be extended for this purpose.

Added option online_char to params.ini.
Will check online tab status before creating games when online_char is 1.

This is semi implemented with game_recovery.py
On botty start it saves online status and saves template of the character so if game crashes it'll reselect the correct character. Sounds like this function could be extended for this purpose.

This change reuses select_online_tab in character_select.py, which is also used by game_recovery.py. Something different on this issue:

Game does not crash.
It may switch back to offline even after you click the online tab. The first try always fails when it happens to me. Checking the active tab is always needed before clicking the play button.

Added option online_char to params.ini.
Will check online tab status before creating games when online_char is 1.

This is semi implemented with game_recovery.py
On botty start it saves online status and saves template of the character so if game crashes it'll reselect the correct character. Sounds like this function could be extended for this purpose.

This change reuses select_online_tab in character_select.py, which is also used by game_recovery.py. Something different on this issue:

Game does not crash.
It may switch back to offline even after you click the online tab. The first try always fails when it happens to me. Checking the active tab is always needed before clicking the play button.

Agree this logic needs fixing. But if we detect the online / offline status on startup why do we need a param for it?

game_recovery.py

I don't think game_recovery.py checks online/offline status. Currently checking online status is performed in on_select_character in bot.py only when restart_d2r_when_stuck is enabled.
Botty can also be started inside the game. What if BN disconnects after the first game?
Using restart_d2r_when_stuck to control online/offline status is also confusing.

game_recovery.py

I don't think game_recovery.py checks online/offline status. Currently checking online status is performed in on_select_character in bot.py only when restart_d2r_when_stuck is enabled.
Botty can also be started inside the game. What if BN disconnects after the first game?
Using restart_d2r_when_stuck to control online/offline status is also confusing.

Agree it's confusing. And you're right, it's not checked there, it's just checked on startup.
Would this solve everything?
    def on_select_character(self):
-        if Config().general['restart_d2r_when_stuck']:
            # Make sure the correct char is selected
            if character_select.has_char_template_saved():
                character_select.select_char()
            else:
                character_select.save_char_online_status()
                character_select.save_char_template()
        self.trigger_or_stop("create_game")

Would this 1-liner solve everything?
No. This assumes your online/offline tab status is correct on your first game creation. This is not guaranteed since you are allowed to start botty inside the game.

Imagine you start botty in a game. The server lags and brings you to offline chars after exit. Botty sticks to offline thereafter.

Fixes #789

[0.7.3-dev 2022-06-08 15:55:35,564] INFO       Character select failed. Shut down botty
Exception in thread Thread-7 (start):
Traceback (most recent call last):
File "threading.py", line 1009, in _bootstrap_inner
File "threading.py", line 946, in run
File "bot.py", line 163, in start
File "bot.py", line 183, in trigger_or_stop
File "transitions\core.py", line 899, in _get_trigger
File "transitions\core.py", line 401, in trigger
File "transitions\core.py", line 1201, in _process
File "transitions\core.py", line 426, in _trigger
File "transitions\core.py", line 435, in _process
File "transitions\core.py", line 272, in execute
File "transitions\core.py", line 1123, in callbacks
File "transitions\core.py", line 1144, in callback
File "bot.py", line 226, in on_init
File "bot.py", line 192, in restart_or_exit
File "utils\restart.py", line 21, in safe_exit
File "utils\restart.py", line 25, in kill_game
File "utils\restart.py", line 14, in process_exists
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 2: invalid start byte
I have a utf8 character and I get this error when I run the botty after the update today.


go-ethereum: 1.11.6 -> 1.12.0

Description of changes
Release notes:
https://github.com/ethereum/go-ethereum/releases/tag/v1.12.0
Couldn't run NixOS test(s) outside of Linux: nix-build -A nixosTests.geth gives error: assertion '(stdenv).isLinux' failed.
Things done

Built on platform(s)

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

[x] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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

[x] 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
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[x] (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

[x] Fits CONTRIBUTING.md.

Couldn't run NixOS test(s) outside of Linux: nix-build -A nixosTests.geth gives error: assertion '(stdenv).isLinux' failed.

ofborg should have run them for you

Thanks, the Darwin ones were skipped but the Linux ones ran.


Cannot specify "quantity" when calling the prediction API of "add-to-cart"

Hi there,
We are using your client library to connect to the Retail API to get the recommendations. When we call the function client.predict(payload), the library is complaining about the missing quantity of the product which already been specified. The same payload works with cURL and normal HTTP request with fetch library. I suspect there is something wrong with protobuf serialisation or the schema. Thank you for looking into it.
Here is the payload:
{
  "placement": "projects/aaa/locations/global/catalogs/default_catalog/placements/recommended-for-you",
  "filter": "filterOutOfStockItems",
  "validateOnly": false,
  "userEvent": {
    "eventType": "add-to-cart",
    "visitorId": "1111",
    "userInfo": {
      "userId": "222"
    },
    "productDetails": [
      {
        "product": {
          "id": "333"
        },
        "quantity": 1
      }
    ]
  }
}

Here is the error message:
/Users/xxx/Downloads/yyy/node_modules/@grpc/grpc-js/build/src/call.js:31
    return Object.assign(new Error(message), status);
                         ^

Error: 13 INTERNAL: Request message serialization failure: .google.cloud.retail.v2beta.ProductDetail.quantity: object expected

Environment details

OS: OSX
Node.js version: 16.13.1
npm version: 8.1.2
@google-cloud/retail version: 1.7.0

We encountered the same serialization issue when using google.cloud.retail.v2.PredictRequest, and attempting to set the params.returnProduct to be true.
It appears the solution was to format the request with the following structure, which seems to follow a camel-cased version of the google.protobuf.Value
params: {
    returnProduct: {
        boolValue: true,
    },
}

So I'd suggest for your scenario @hemmachat you may well want the following payload:
"productDetails": [
      {
        "product": {
          "id": "333"
        },
        "quantity": {
          "numberValue": 1
        },
    ]
  }

Certainly not intuitive, and likely a bug, but thought I'd share the workaround.


gap alias error: "bash: syntax error: unexpected end of file"

Example Error output
$ gap 1
bash: syntax error: unexpected end of file
#
# On branch: some-branch  |  [*] => $e*
#
➤ Changes not staged for commit
#
#      modified: [1] README
#

After running a git bisect I have identified 5e507af74795ffbe43f1523695a5205eedd0ef23 as the first commit that causes this error.
My environment
$ bash --version
GNU bash, version 4.2.20(2)-release (x86_64-unknown-linux-gnu)
$ git --version
git version 1.7.9

I've just pushed a change that should fix this. Thanks for the bug report!
On Tue, Jan 31, 2012 at 1:04 AM, Will Walthall <
<EMAIL_ADDRESS>
wrote:

Example Error output
$ gap 1
bash: syntax error: unexpected end of file
#
# On branch: some-branch  |  [*] => $e*
#
➤ Changes not staged for commit
#
#      modified: [1] README
#

After running a git bisect I have identified
5e507af74795ffbe43f1523695a5205eedd0ef23 as the first commit that causes
this error.
My environment
$ bash --version
GNU bash, version 4.2.20(2)-release (x86_64-unknown-linux-gnu)
$ git --version
git version 1.7.9

Reply to this email directly or view it on GitHub:
https://github.com/ndbroadbent/scm_breeze/issues/16

Works! Awesome!


Webinar Participant Report

Adds ability to get webinar participants report.

All of the other files in the PR are just boilerplate for future tests as the other methods get implemented.


Option to Auto-Collapse Build Folders on Load

Any idea which files would need to be edited to allow it have option to collapse build folders on program start instead of opening every build folder?

I don't think we need this option. You can collapse them yourself. That information is already stored so when you start the program again, it will collapse what you collapsed before. This is not saved often enough on the release version, but I fixed that (it is now saved on close).

Thanks


feat: experimental auto import translation functions

🔗 Linked issue

#1644

❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[x] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
Resolves #1644
Adds experimental.autoImportTranslationFunctions, which when enabled adds $t, $d and $n to globalThis.
I did add the option to the docs but it's the bare minimum, not sure where and how to describe it in a clearer way 🤔, I suppose it's not that big of a deal while it's an experimental feature?

📝 Checklist

[x] I have linked an issue or discussion.
[x] I have added tests (if possible).
[x] I have updated the documentation accordingly.

Great work!
I am glad you have improved nuxt i18n dx!
Another implementation way for auto impot is to use AST in the bundler transform, which implements nuxt auto-import, or macros such as unplugin-auto-import, or like Vue 3 defineProps macro way, so we can  generate useI18n executable code.

auto-import: https://github.com/unplugin/unplugin-auto-import
vue-macro: https://github.com/vue-macros/vue-macros

This method is advanced and difficult to implement, but by injecting the transformed code into the script setup, we don't have worry about releases.

Another implementation way for auto impot is to use AST in the bundler transform, which implements nuxt auto-import, or macros such as unplugin-auto-import, or like Vue 3 defineProps macro way, so we can generate useI18n executable code.

This method is advanced and difficult to implement, but by injecting the transformed code into the script setup, we don't have worry about releases.

Ah yes! I never considered this approach, I'll close this PR for now and see if I can work out a solution using this method. This will give us more control where this functionality is injected, and I'm interested in learning more about this anyway 😄.


Move all layout code out of View (and Toplevel) into a layout helper class

Refactor to a LayoutEngine class or just another file that's just a partial of View
Break unit tests apart further

Fixed by #2544


Updated ProxyFactory to generate proxies compatible with PHP 7 TypeHint

Actual ProxyFactory don't works well with PHP7 type hint et return type.
Examples :
public function getId(): ?string {   return $this->id; }
Old generator gives :
public function getId() {   $this->__load();   return parent::getId(); }
This lead to a compilation error because getId() is not compatible with he original getId() (no return type).
With this patch, the result is :
public function getId(): ?string {   $this->__load();   return parent::getId(); }
No more compilation error. It's backward compatible with the existing code and PHP < 7 (not tested).

Any plan to merge this pull request one day ?


can't clone your repository - it has a submodule to which I don't have access rights.

Hi, I cloned the repo, but it didn't bring with it its submodule.
So, naturally, I tried
git submodule init
git submodule update
and it failed because I didn't have "access rights" to the submodule.
Above this - you set your Xcode project "Base SDK" to 10.9, which no longer exists in recent Xcode releases (Xcode 6.4, Xcode 7.x)
Can you please verify your repository is still usable?

Seems like FSArgumentParser moved. I have updated .gitmodules and tested it. All should work now.
Thanks!

tried again to clone your repo, using

git clone https://github.com/alexzielenski/optool.git

Right after cloning, the project is un-buildable (for lack of sources).
and any subsequent “pull” with —recursive (to update submodules) still  yells about me not having the right private key to access the submodule.
Maybe your FSArgumentParser submodule isn’t open-accessed at all?
I re-created the issue, sorry for the hassle - I just need the optool :)
Is it possible to have at least the “.zip” downloadable archive of your project to be internally complete and build able ?

On 5 בינו׳ 2016, at 19:08, Alex Zielenski<EMAIL_ADDRESS>wrote:
Seems like FSArgumentParser moved. I have updated .gitmodules and tested it. All should work now.
Thanks!
—
Reply to this email directly or view it on GitHub https://github.com/alexzielenski/optool/issues/4#issuecomment-169063850.


adds security policy to repository

Pull Request Test Coverage Report for Build ead667e7ee1b5f0c09f06c82b3119b611760519f-PR-53

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 100.0%

Totals

Change from base Build fe00aa619b4aabd220a082d891501fecebc10820:
0.0%

Covered Lines:
302

Relevant Lines:
302

💛  - Coveralls


GEODE-9052: rename the geode-redis module

rename the geode-redis module to geode-apis-compatible-with-redis. this
is so that this name doesn't end up in a customer-facing location that
may cause us to violate Redis's copyright
Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[x] Have you written or updated unit tests to verify your changes?

[x] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, check Concourse for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

This line in execute_tests.sh also needs to be updated:
if [ "${GRADLE_TASK}" = ":geode-redis:redisAPITest" ] && ! grep -q redisAPITest geode/geode-redis/build.gradle ; then

Right now the RedisTest is printing:
redisAPITest is not applicable for 1.13 and earlier

because it is still looking for the redisAPITest task in the geode-redis module

I'm not sure if it needs to be manually re-fly-ed.
no manual involvement needed, the geode pipeline has been self-reflying since Dec 2017.

I'm not sure if it needs to be manually re-fly-ed.
no manual involvement needed, the geode pipeline has been self-reflying since Dec 2017.

😲 🚀


[RELAY][PASS] Fix expr subst and CombineParallelConv2D

The entry in the substituion map may refer to substituded nodes. We need to recursively visit the result after subsitution.
Benchmark of CombineParallelConv2D
Inception-V3 (float32, CUDA 1080ti, batch=1) :
Before: 6.267070 ms
With CombineParallelConv2D: 5.989514 ms
cc @masahi @tqchen

Is CombineParallelConv2D result obtained after AutoTVM tuning? I assume weight concat will introduce new workloads.

Yes I tuned the new workload

@vinx13 This is not necessarily the most efficient way to do it, as subst will always get expanded every time it get referred to, is it possible to memomize?

@tqchen Could you elaborate a bit? Since ExprMutator::VisitExpr does memorization.

Sorry, my mistake


Feature Targeting

Description
Adds Feature Targeting to Spring Provider. Feature Targeting is a Special Feature Filter that allows Targeting a User, Group(s), or a random percentage of users have a feature enabled or disabled. The Targeting Filter allows Targeting over multiple requests.
Updates to the READMEs are in a separate PR https://github.com/microsoft/spring-cloud-azure/pull/701

Codecov Report

Merging #700 into master will increase coverage by 1.49%.
The diff coverage is 86.06%.

@@             Coverage Diff              @@
##             master     #700      +/-   ##
============================================
+ Coverage     55.94%   57.43%   +1.49%
- Complexity      757      816      +59
============================================
  Files           181      188       +7
  Lines          3207     3371     +164
  Branches        237      265      +28
============================================
+ Hits           1794     1936     +142
- Misses         1277     1288      +11
- Partials        136      147      +11

Impacted Files
Coverage Δ
Complexity Δ

...e/spring/cloud/feature/manager/FeatureManager.java
79.10% <33.33%> (-2.15%)
20.00 <0.00> (+1.00)
:arrow_down:

...ring/cloud/feature/manager/TargetingException.java
50.00% <50.00%> (ø)
1.00 <1.00> (?)

...g/cloud/config/AppConfigurationPropertySource.java
63.55% <77.14%> (+6.41%)
17.00 <0.00> (+4.00)

...ature/manager/feature/filters/TargetingFilter.java
87.50% <87.50%> (ø)
28.00 <28.00> (?)

...nager/entities/FeatureFilterEvaluationContext.java
100.00% <100.00%> (ø)
7.00 <2.00> (+2.00)

...ring/cloud/feature/manager/targeting/Audience.java
100.00% <100.00%> (ø)
7.00 <7.00> (?)

.../cloud/feature/manager/targeting/GroupRollout.java
100.00% <100.00%> (ø)
5.00 <5.00> (?)

...ud/feature/manager/targeting/TargetingContext.java
100.00% <100.00%> (ø)
5.00 <5.00> (?)

.../manager/targeting/TargetingEvaluationOptions.java
100.00% <100.00%> (ø)
3.00 <3.00> (?)

...ure/manager/targeting/TargetingFilterSettings.java
100.00% <100.00%> (ø)
3.00 <3.00> (?)

... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b006852...bf89ad6. Read the comment docs.

@ZhijunZhao can you take a look at this

Codecov Report

Merging #700 into master will increase coverage by 1.40%.
The diff coverage is 82.60%.

@@             Coverage Diff              @@
##             master     #700      +/-   ##
============================================
+ Coverage     55.94%   57.34%   +1.40%
- Complexity      757      821      +64
============================================
  Files           181      188       +7
  Lines          3207     3357     +150
  Branches        237      255      +18
============================================
+ Hits           1794     1925     +131
- Misses         1277     1288      +11
- Partials        136      144       +8

Impacted Files
Coverage Δ
Complexity Δ

...ring/cloud/feature/manager/TargetingException.java
50.00% <50.00%> (ø)
1.00 <1.00> (?)

...e/spring/cloud/feature/manager/FeatureManager.java
79.36% <62.50%> (-1.89%)
22.00 <3.00> (+3.00)
:arrow_down:

...g/cloud/config/AppConfigurationPropertySource.java
63.71% <71.73%> (+6.57%)
20.00 <10.00> (+7.00)

...ature/manager/feature/filters/TargetingFilter.java
86.74% <86.74%> (ø)
28.00 <28.00> (?)

...nager/entities/FeatureFilterEvaluationContext.java
100.00% <100.00%> (ø)
7.00 <2.00> (+2.00)

...ring/cloud/feature/manager/targeting/Audience.java
100.00% <100.00%> (ø)
7.00 <7.00> (?)

.../cloud/feature/manager/targeting/GroupRollout.java
100.00% <100.00%> (ø)
5.00 <5.00> (?)

...ud/feature/manager/targeting/TargetingContext.java
100.00% <100.00%> (ø)
5.00 <5.00> (?)

.../manager/targeting/TargetingEvaluationOptions.java
100.00% <100.00%> (ø)
3.00 <3.00> (?)

...ure/manager/targeting/TargetingFilterSettings.java
100.00% <100.00%> (ø)
3.00 <3.00> (?)

... and 9 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b006852...f439f10. Read the comment docs.


fix(server): http.CloseNotifier is deprecated

[x] Fix deprecated
[ ] Add more tests

Coverage increased (+0.5%) to 43.182% when pulling 4bc372f9c9e788bd37b9f6d10e19c3f1e2ac9ec8 on feature/context-done into f26b8792a3c6c4ba8638b061d4c1be0c01de256c on master.


How to open trace files without display server?

I am trying to show the trace of one of the trace files, 463.trace.zip. This is the command I am using:
unzip 463.trace.zip -d 463_trace
xvfb-run playwright show-trace 463_trace

It has been sitting for several hours. Is this expected, or is there a better way to extract the trace?
Thanks!

I'm not sure, but you can try https://trace.playwright.dev/


Add True Positive

Hi @meirwah! Adding a tool that I've built for case management.

@meirwah Hey Meir - have you looked at this PR? It's just a one line change; you should be able to review it and merge it within 10 seconds!

Hey @veeral-patel ,
Usually I add to the project open source project that have serious traction (like many github stars)
or free projects/tools which have showed massive usage from the community.
Can you show either of those in the project you suggest ?

@meirwah Hey - the product is closed-source but it has a free tier (like Demisto). It doesn't have massive usage, but it's a useful tool for the community, and adding it would make this list more useful!

Ok, so let's do this..
give it some time to gain traction, post here some evidence for that traction , and reopen this ticket once you have those...
For now will close the ticket..


Hardware > PI Does not shut down, only restarts when case is put together.

I'm not sure where else to raise this issue since I can't find a support email, but maybe it will help someone else.
I was having an issue where the safe shutdown was only ever restarting the PI only when the case was put together whether or not the power switch was on or off, if this happens to you it's probably not the issues with the shutdown script but the little circuit board that takes in power for the case. Mine had been touching the PI itself on the power contactors and causing a short circuit which would constantly keep it powered. Just throw some electrical tape on that little board and it should be fine after that.

Interesting observation. Do you mind providing a photo of where exactly you believe it short circuits or comes in contact with? I might be having the same issue here.

Interesting observation. Do you mind providing a photo of where exactly you believe it short circuits or comes in contact with? I might be having the same issue here.

Interesting observation. Do you mind providing a photo of where exactly you believe it short circuits or comes in contact with? I might be having the same issue here.

Sorry for the wait, here are some images of the issue I was getting. Though I am not sure if maybe my PI board itself was a little warped or if the solder joints were just a little tall.

Interesting observation. Do you mind providing a photo of where exactly you believe it short circuits or comes in contact with? I might be having the same issue here.

Sorry for the wait, here are some images of the issue I was getting. Though I am not sure if maybe my PI board itself was a little warped or if the solder joints were just a little tall.

Hey, I appreciate the photos. I think you have a different version of my case. I have the Nes Pi 4 Case and my case doesn't have that part. Interesting nonetheless.
I realized enabling the default fan in raspi configuration will interfere with one of the GPIO pins used for the circuit board of the POWER / RESET buttons.  That's what fixed it for me and disconnecting stuff and slowly connecting it together helped me recognize that my pi couldn't receive the "shutoff" signal.

Hey, I appreciate the photos. I think you have a different version of my case. I have the Nes Pi 4 Case and my case doesn't have that part. Interesting nonetheless.
I realized enabling the default fan in raspi configuration will interfere with one of the GPIO pins used for the circuit board of the POWER / RESET buttons.  That's what fixed it for me and disconnecting stuff and slowly connecting it together helped me recognize that my pi couldn't receive the "shutoff" signal.

No problem! Ah mine is the 3b+ version, so it must work completely differently. I'm glad you got your issue figured out though! Hopefully this issue and your comment can help someone else!

No problem! Ah mine is the 3b+ version, so it must work completely differently. I'm glad you got your issue figured out though! Hopefully this issue and your comment can help someone else!

Thanks and likewise, yours definitely helped me look into the right direction
-------- Original message --------From: Alex Hofer<EMAIL_ADDRESS>Date: 1/27/21  2:48 PM  (GMT-08:00) To: RetroFlag/retroflag-picase<EMAIL_ADDRESS>Cc: ChromeFox<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [RetroFlag/retroflag-picase] Hardware > PI Does not shut down, only restarts when case is put together. (#109)
No problem! Ah mine is the 3b+ version, so it must work completely differently. I'm glad you got your issue figured out though! Hopefully this issue and your comment can help someone else!
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks and likewise, yours definitely helped me look into the right direction
-------- Original message --------From: Alex Hofer<EMAIL_ADDRESS>Date: 1/27/21  2:48 PM  (GMT-08:00) To: RetroFlag/retroflag-picase<EMAIL_ADDRESS>Cc: ChromeFox<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [RetroFlag/retroflag-picase] Hardware > PI Does not shut down, only restarts when case is put together. (#109)
No problem! Ah mine is the 3b+ version, so it must work completely differently. I'm glad you got your issue figured out though! Hopefully this issue and your comment can help someone else!
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.


Download raws from Crunchyroll?

I wonder if you can download the raws videos by HLS. It is much faster than RTMP.
I can lose the series in several languages crunchyroll.py editing the file but I can not download the raw.
if someone could help me I would appreciate it.
Languages that work:
es_MX:
API_DEFAULT_LOCALE = "es_MX"
API_USER_AGENT = "Mozilla / 5.0 (iPhone; iPhone OS 8.3.0; esMX {})"
Languages that do not work:
API_DEFAULT_LOCALE = "ja_JP"
API_USER_AGENT = "Mozilla / 5.0 (iPhone; iPhone OS 8.3.0; jaJP {})"

Why bother when Horriblesubs already does it?

I'm on a page we do something like making HS but in Spanish. the problem is that with the rtmpdump takes too long compared to HS your videos go to 2-4 minutes after CR.
I thought that HS HDS can use instead of RTMP.


Is this compatible with angular 1?

Title suggests:

Highly configurable jalali (shamsi, khorshidi, persian) date picker built for Angular ( 2 or 4 ) applications

Is it also compatible with angular 1 too?

Hi,
It is possible but its not easy and recommended
search about "How to use angular 2 component in angular 1"

thanks


QM drip DLC

About the PR

Adds new formal suit for the QM as well as a QM themed beret that both spawn in their dresser. I designed both
to look good with the mantle as A. the QM's mantle did not go with any existing jumpsuits or outfits and B. to add
variety to the outfits the QM can be seen in. The Beret is a good choice for the QM that doesn't want the same hat
as their employees but dyed another colour and the formal suit is the perfect choice for the QM that wants to look
equal to the other Dept. heads in the fashion department.
Why / Balance

I noticed the QM was lacking any outfits that matched their mantle, so I created a new jumpsuit and a new hat.
The Quartermaster's formal suit and the QM's Beret respectively.
Technical details

Added new formal jumpsuit for the QM and new beret for the QM which both now spawn in the QM's filled dresser.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

add: Due to multiple complaints from quartermasters about "variety" in headware, Nanotrasen will supply a new hat across all stations, the QM's beret!
add: Due to, in no way shape or form a bribe from a wealthy quartermaster, Nanotrasen will now stock formal suits for all
those inclined to master the quarters.

the white feels a bit too bright imo

the white feels a bit too bright imo

Take a gander at the outfit when it is not in neon white light

did you add these to the uniform printer?

really just doesn't seem to mesh well with the Quartermaster's Mantle

did you add these to the uniform printer?

 If you didn't have any issues with it, then it looks good to merge to me!


Improve message when the cursor in pagination is invalid

Raise GraphQL error when the cursor is invalid.

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

Task linked: SALEOR-4914 Improve message when the cursor in pagination is invalid.


Add support for Path in module

Add path into module, so we prepare environment into particular sub path.
Signed-off-by: Dinar Valeev<EMAIL_ADDRESS>

@kuritka done

@ytsarev fixed those.
Agree test routing should be part of PR test. I'll focus on it next.


[bug]: table options are not being displayed in tree correctly - missing data

Do I have the most recent version of AxonOps Workbench installed?

[X] I am using the most recent beta release

AxonOps Workbench Version
v1.0.0-beta-20240828
Is there an existing issue for this?

[X] I have searched the existing issues

Operating System
MacOS
Operating System Version
14.6.1 (23G93)
Apache Cassandra Version(s)
5.0-rc1
Bug Description

Steps to Reproduce
N/A
Expected Behavior
N/A
Actual Behavior
N/A
Severity
Low
Further Information
N/A

Working on that

@millerjp  fixed, it was due to a latest change for the CDC option

Thanks @mhmdkrmabd - great!


DOMContentLoaded vs load

DOMContentLoaded:

The DOMContentLoaded event is fired when the document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading (the load event can be used to detect a fully-loaded page).

load:

The load event fires at the end of the document loading process. At this point, all of the objects in the document are in the DOM, and all the images, scripts, links and sub-frames have finished loading.

document.readystatechange readyState：

loading: The document is still loading.
interactive: The document has finished loading and the document has been parsed but sub-resources such as images, stylesheets and frames are still loading.
complete: The document and all sub-resources have finished loading. The state indicates that the load event has been fired.

-DOMContentLoaded

load
GlobalEventHandlers.onload
Document.readyState
StackOverflow
Microsoft
When is a stylesheet really loaded?

https://github.com/billfeller/billfeller.github.io/issues/106


History data when live trading

I'm submitting a ...
[ ] bug report
[x] feature request
[ ] question about the decisions made in the repository

I have done a lot of backtest and trying few strategy live recently, one of the best strategies I have tried is RSI_BULL_BEAR_ADX on the forum, in the default setting this strategy uses 1000 candles to calculate long term MA, in this case, if candle size set to 6 mins then it takes around 6000 mins(100 hours) to make the long-term MA calculated properly, I'm thinking since Gekko has the ability to get historical data from exchange, is it possible Gekko can get the warm up data it needs before the time it start live trading?
Sometimes server or network die randomly, it's very long time to wait until it finishes warm up again!
Thanks!

i am wondering about the same thing. i fetched the backtest data for the given pair i want to livetrade later on but it did not use it. just the data from a marketwatcher.
also when you update gekko or the strat parameters it would be very convenient. i use 15 min candles this takes 1.5 weeks

If you use the commandline interface Gekko will stitch the data from local and exchange data. Meaning if you require a 1000 candles and you have them locally Gekko will start your strat right away.
This will be supported in the UI as well in the next major UI release.
closing as dup of #1744.

That's good to know, I'll learn to use CLI and looking forward to the next version of UI comes out :)
Thanks!


fix(autohide): Rename attribute to hideContainerWhenNoResults

BREAKING CHANGE: Widget attribute is now named
hideContainerWhenNoResults instead of hideWhenNoResults to be more
explicit on what it is really doing.
Also internally renamed the autoHide decorator to
autoHideContainer
Fixes #325

This is just simple search and replace.


An error occurred during installation

Hi, I just downloaded the latest 2.0.2 version from the link provided here, but I am unable to install it and the error simply says "Your system has not been modified. Click "Close" to exit the Setup Wizard". What does that even mean and how do I solve it? Thank you.

Are you familiar with running something in cmd.exe?
You can run "TwitchLeecher_2.0.2.exe -l log.txt" in order to get 2 logfiles from the installation process. Post the contents here and maybe I can help.

It seems like the problem resolved itself... Sorry I could not provide the log to find out what the problem was. All I did was shutdown my pc, go to bed and it successfully installed next morning. Tried restarting pc before that, but that didn't work. Anyway, thank you for the help and I really appreciate you creating this program. This is honestly the best twitch vod downloader.


pubsub: respect total expiration while modacking

Previously we use total expiration only to decide whether to send
new modacks. If we send modacks close to the expiration, we might
extend the lease beyond the total expiration time.
This commit shortens the lease when we approach the expiration time
so we never go over.
@mdietz94

@mdietz94 PTAL


Gym option build time

Thanks for contributing to fastlane! Before you submit your pull request, please make sure to check the following boxes:

[x] Run bundle exec rspec from the root directory.
[x] Run bundle exec rubocop -a to ensure the code style is valid
[x] Read the Contribution Guidelines
[x] We currently don't accept new actions, please publish a plugin instead, more information in Plugins.md

New option in gym: https://github.com/fastlane/fastlane/issues/7584
Work in progress. Do not merge.

still need to test this locally. Getting error when I run bundle exec fastlane in my test project directory.

I am not sure. Need to test that.

Cool, thanks for the update. Is it ready for review? If so, please remove the WIP in the title 👍

This is ready for review. Updated the title.

Is there any other issues in merging this?

I signed it!

@RishabhTayal I guess there are issues that need to be fixed before merging.
I've left a comment, which is still pending (I assume it shows up as a change request).
Secondly, even after I escape it properly, the command would not work anyway, here's the full command

set -o pipefail && xcodebuild -workspace PROJ.xcworkspace -scheme PROJ -sdk 'iphoneos' -destination 'generic/platform=iOS' -archivePath archive/PROJ.xcarchive BUILD_NUMBER=1 OTHER_SWIFT_FLAGS="$(inherited) -Xfrontend -debug-time-function-bodies" | grep .[0-9]ms | grep -v ^0.[0-9]ms | sort -nr > culprits.txt archive | tee /Users/grebenma/Projects/PROJ/build/PROJ-PROJ.log | xcpretty
The archive action is part of xcodebuild command, but now it's sitting after the pipes added by new option, so the command fails.

Hey @RishabhTayal, thanks for your contribution - please update the PR as per feedback provided. I'll close the PR for now as it's been inactive for a while now. Feel free to re-open it, or submit a new one, so we can continue the discussion 👍

I will update the PR soon. Thanks for reminding. I use this option in my project recently and it helped me shave about 75% build time. This PR will be really helpful to other. 👍

That's awesome @RishabhTayal 👍 Yeah, let us know if you need any help

@KrauseFx I will probably need some help to figure out why this issue is happening now. This PR was gyming fine earlier. Not it stopped working.


Website or wiki?

Riffing on the "port to website" in the README TODO, maybe we should think about whether it would be better to structure it as wiki? That said, I don't really know how much more difficult that might be to do than a standard static website (which is the extent of my experience).
The World Bank's Development Impact Evaluation (DIME) has a wiki that might be nice to help visualize what it could look like.
Another idea is maybe folding things into Nick Huntington-Klein's Library of Statistical Techniques? Or do you think having just a dedicated website/wiki for DiD would be more useful?

I like the LOST setup but this needs something simpler. I will add a section on Stata code so it will be great if that can be sectioned from the setup. If you want to jump in to sort this out please feel free to do so! I won't be able to do much on this end till I get some free chunk of time.

As long as it's cool that there will be R code as well, I don't want to start a war on here seeing as you're responsible for bringing a bunch of these methods to Stata :P
I'm on the market this year so time is a little tight here but I can certainly contribute whenever possible! When you say "jump in and sort this out" do you mean starting on the website/researching how building a wiki might work (just want to know what I should work on when I have time to do so)?

I am fine with R :) I just don't use it! So if you want to setup an R section it is fine with me.
Regarding the website stuff, I would just fill up the readme for now and sort it out later. As long as the stuff is sectioned out, it can be partitioned easily later in some Jekyll theme. So this is low priority for me right now.
Also good luck with the job market!

Perfect, that makes sense.
And thank you!

OK. I have added you as a contributor. Just add stuff at your leisure.


ImportError: cannot import name 'crop_to_bbox' from 'acvl_utils.cropping_and_padding.bounding_boxes

how show I do

hi! I'm getting the same error , and it didn't happen before

This should be related to this issue.
Apparently an update to an nnUNet dependency broke nnUNet itself.
You can fix this by setting the version of acvl-utils to 0.2:
pip install acvl-utils==0.2
I will be watching the issue, if they dont update it in the next few days we should probably lock the version number in the MRSegmentator requirements.


WIP Browser testing

Follow-up for #341 but still WIP!

@broofa I would be interested in some preliminary feedback on this one (it's not ready for approval yet).
Here's what it currently does:

define a separate github workflowx
build all examples/
set up an http-server to serve this directory
set up browserstack-local make the local http server available to browserstack.
load the html files from the examples through browserstack using selenium webdriver and run assertions on the rendered output: https://github.com/kelektiv/node-uuid/pull/348/files#diff-fc9324a2435c78be81668dd578da863c

That way we should get end-to-end assertions that uuid works as expected when used with webpack/rollup/etc. in the browser.
Open questions:

Currently the examples install uuid from npm (in the current state it's even a github repo where I uploaded the npm package content just for testing, but I would change that to an npm package version). How would we run the test before releasing a new version to npm?
What do you think about the approach of rendering uuid() output into html and the running assertions on it through selenium?

What I don't really struggle with, but still have to do:

Define a browser matrix and run the test for the browser we want to support.
Maybe extract the setup and teardown code.
Maybe only run this on master/next but not for PRs from forks.

@broofa I think I've done quite some progress on this one now and I believe it's ready for a more serious review!
What we get here is:

a basic test of the module API when used with webpack and rollup
all tests run in a set of browser that we intend to support (minimum and latest versions)
tests are run in Browserstack, with all browsers running in parallel

When defining the browser support matrix I somewhat arbitrarily chose the minimum browser version that supports both let/const and crypto.getRandomValues().
Since the tests do take quite a while (~7-15 mins) to run the only thing I'm still wondering is when to execute these tests. I have also experienced that these test, when run from Github actions, sometimes time out which I haven't experienced yet when running them from my local machine.
So all in all running them on every single pull requests seems wasteful and potentially a bit brittle, after all we mostly want to ensure that we don't introduce regressions, so maybe running them before each release would be enough? If so, how would we achieve that? What do you think?


The APEX version?

Hi when I run your pretraining code, I encounter the following error which seems caused by APEX. Can you share your APEX version? Thank you.
File "/opt/conda/envs/cclm/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/opt/conda/envs/cclm/lib/python3.8/site-packages/torch/nn/modules/linear.py", line 103, in forward
return F.linear(input, self.weight, self.bias)
File "/opt/conda/envs/cclm/lib/python3.8/site-packages/apex-0.1-py3.8.egg/apex/amp/wrap.py", line 21, in wrapper
File "/opt/conda/envs/cclm/lib/python3.8/site-packages/apex-0.1-py3.8.egg/apex/amp/utils.py", line 97, in cached_cast
IndexError: tuple index out of range

Hi,
Sorry for my late reply.
I don't know the version of APEX (it is always 0.1...)
I downloaded it on 2022-04-01 for Pytorch 1.10. Maybe this info can help.


Add epsilon to Basics

Defining an epsilon value is pretty basic need when dealing with arithmetic, especially to define an approximately equal operation (due to floating point errors).
While this can perfectly live in a library, I think it's worth being in the core library in the Basics module.
In JS, Number.EPSILON is defined as 2.2204460492503130808472633361816E-16, or 2-52.
This is not well supported accross browsers, as such, it's worth defining it as a constant directly.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON

Consolidated all the math related stuff into the #721 meta issue. Follow along there!


Large Objects (feature request)

Are there any plans to create a interface for postgres large object?

No plans.

A patch would be welcome? :)

Don't know, never used that part of the API.

@avkhozov Perhaps if you proposed an interface or at least a feature set it would be easier to figure out if it's going to be a good idea?

I think access to large object data (Mojo::Pg::LO or Mojo::Pg::File) must have an interface similar to IO::File. Thus it can be used in conjunction with Mojo::Asset::File and conveniently serve static files using reply->asset helper or using slurp to processing data in memory.

Some interfaces in ruby:
https://github.com/diogob/carrierwave-postgresql/blob/master/lib/carrierwave/storage/postgresql_lo.rb
http://deveiate.org/code/pg/PG/Connection.html#method-i-lo_close

The first one appears to be rails-specific and just being -just- file-like enough for an upload handler.
The second one appears to be entirely equivalent to calling the originally existing DBD::Pg methods.
Have you looked at the DBD::Pg API that already exists? Given that, what, specifically, are you proposing Mojo::Pg provides that you don't already have?
"I think X must have an interface like Y" needs to be backed up with sufficient use cases to justify the extra complexity, especially given there's an already-extant interface you could, y'know, just call :)


add compact album view

In issue https://github.com/xou816/spot/issues/180 I raised the idea that the album layout should change when spot is on a mobile device to make better use of the screen real estate. This also applies to https://github.com/xou816/spot/issues/162
I wanted to give this issue a shot, but unfortunately as a back end focused engineer, I don't have the skills, or time to acquire the skills, to complete this.
I figured I'd push up the layout changes that I made so that someone else could use them as a starting place.
Changes

Adds album_compact.ui
Changes in album.rs to make the size of the album art work better on mobile. (These values are hard-coded and should be changed based off of the width of the window)

If anyone does pick this up, I'd love to be tagged in your PR so I can hopefully learn a bit more and perhaps make more substantial contributions in the future. Thanks!

Hi! Thanks for taking the time to do this :) this might help to kickstart things indeed!


Pre-commit Initial Format

Description
Use pre-commit to autoformat the repo and prevent git diff messiness due to formatting inconsistencies

To fix the failure we can either remove the ruff hooks and have separate precommit configs across each repo, or have one pre-commit config and remove the meta hook to fail on unnecessary hooks. Either is fine with me, just depends how we want to structure things


Fix XVR_Direct time out

follow up of #25243
the test had chance of timeout for a while. This change reduced duplicate task for XVR postcommit tests and bump the timeout for XVR_Direct.

Bump XVR_Direct timeout to 2h

Only run GoUsingJava test suite once

Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

run seed job

Run XVR_Direct PostCommit

Run CommunityMetrics PreCommit

Run Java_Kafka_IO_Direct PreCommit

Run Java_Pulsar_IO_Direct PreCommit

different test failures in two run
Java_PreCommit
first run:
org.apache.beam.runners.flink.FlinkRequiresStableInputTest.testParDoRequiresStableInputPortable
org.apache.beam.runners.flink.FlinkRequiresStableInputTest.testParDoRequiresStableInputStatefulPortable

second run:
org.apache.beam.runners.fnexecution.ServerFactoryTest.urlFactoryWithPortSupplier
org.apache.beam.runners.fnexecution.ServerFactoryTest.defaultServerWithPortSupplier

Kafka_IO_Direct: org.apache.beam.sdk.io.kafka.KafkaIOIT.testWatermarkUpdateWithSparseMessages known flake, entered #25261
otherwise merging for now


Remove dev dependancies from NOTICE.txt

These are dev dependancies in https://github.com/mattermost/desktop/blob/master/package.json and not bundled with the release build like regular dependancies.
@yuya-oc please confirm if any of these should be considered dependancies instead of dev dependancies
https://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies
PS: Not urgent to review, any time in the next week or two before the v4.0 release.

At least dependencies of src/package.json should be listed. Unless we have mistake at two package.json, they and their nested dependencies are bundled into compiled JavaScript by webpack.

@yuya-oc Yes, I kept those in NOTICE.txt and only removed the devDependancies of package.json.

@jasonblais Okay, looks good to me.


Dependency for terra.js updated to latest version

This should resolve the issues with terra classic contract executions/queries in terra station mobile since the L1 changes/patches have been merged into terra.js 3.1.10

Thank you for merging.


[Service Bus] Implement self-cleanup feature for expiredMessageSessions store

@ramya0820 commented on Mon Feb 11 2019
Scenario:
User creates a session.
Allow session to expire which populates the expiredMessageSessions with an entry.
User creates a different session.
The entry in expiredMessageSessions dictionary never gets cleared, resulting in potential memory leak.
Deliverables

Implement fix to address this issue.

Implementation recommendation:
Consider using the ConcurrentExpiringMap<TKey> type.

On looking into this further, the idea of having expiredMessageSessions was for users to receive appropriate error that session has expired while they are working with session receivers in an application.
Since expiration is per session session receiver, closing it on close() is sufficient.
Ran manual tests and verified:
const lockDurationInMilliseconds = 60000;

let snapshotIntervalID: any;

let receivedMessage: ServiceBusMessage;

let receiverClient: QueueClient;
let senderClient: QueueClient;

let sender: Sender;

async function main(): Promise<void> {
  const ns = ServiceBusClient.createFromConnectionString(connectionString);
  try {
    senderClient = ns.createQueueClient(queueName);
    sender = senderClient.createSender();

    receiverClient = ns.createQueueClient(queueName);
    snapshotIntervalID = setInterval(snapshot, 60000); // Every 60 seconds
    await sendMessage("session-1");
    await sendMessage("session-2");
    await sendMessage("session-3");
    await receiveMessage("session-1");
    await receiveMessage("session-2");
    await receiveMessage("session-3");
  } finally {
    clearInterval(snapshotIntervalID);
    await senderClient.close();
    await receiverClient.close();
    await ns.close();
  }
}

async function sendMessage(sessionId: string): Promise<void> {
  const message: SendableMessageInfo = {
    messageId: `test ${sessionId}`,
    body: "test",
    label: `test`,
    sessionId: sessionId
  };

  await sender.send(message);
}

async function receiveMessage(sessionId: string): Promise<void> {
  const onMessageHandler: OnMessage = async (brokeredMessage) => {
    receivedMessage = brokeredMessage;

    console.log("Received message: ", receivedMessage.messageId);

    await delay(lockDurationInMilliseconds + 2000);
    // await brokeredMessage.complete();
    console.log("Completed message: ", receivedMessage.messageId);
  };

  const onErrorHandler: OnError = (err) => {
    console.log("swallowing");
    console.log(err);
  };

  const receiver = receiverClient.createReceiver(ReceiveMode.peekLock, {
    sessionId: sessionId,
    maxSessionAutoRenewLockDurationInSeconds: 0
  });
  receiver.registerMessageHandler(onMessageHandler, onErrorHandler, {
    autoComplete: false
  });
  await delay(lockDurationInMilliseconds + 5000);
  await receiver.close();
}

function snapshot(): void {
  console.log("Time : ", new Date());
  console.log("Processing message:");
  console.log("MessageId: ", receivedMessage.messageId);
  console.log("Delivery count: ", receivedMessage.deliveryCount);
  console.log("LockedUntilUTC: ", receivedMessage.lockedUntilUtc);
  console.log("Sequence number: ", receivedMessage.sequenceNumber);
  console.log("TimeToLive: ", receivedMessage.timeToLive);
  console.log("Message content: ", receivedMessage);
  console.log("\n");
}

@ramya-rao-a @AlexGhiondea

Closed with https://github.com/Azure/azure-sdk-for-js/pull/2415

@ramya0820 I just realized that the fix we have put in as part of #2415 isnt helping us much.
Below is a snapshot of the fix

The delete statement is only executed when the session receiver is closed due to any reason other than session expiry.
But, in that case, why would this._context.expiredMessageSessions would even have an entry for such a session?
I believe we need to go back to the original solution suggested for this issue (self clean-up using ConcurrentExpiringMap) or re-visit the need to have this map
Re-opening the issue to continue this discussion

Ok, looks like the user can close() on the session receiver which will call close() on the messageSession even if it is already closed. That is the scenario where the delete will be successful.
Nevermind, false alarm

Here are my observations on the expiredMessageSessions map and possible memory leaks.
Quick Recap for anyone not familiar with the expiredMessageSessions map

When a session lock expires, we add an entry to this map for the session id
When user tries to settle a message and we fail to find a receiver to carry out the operation, we check this map. If an entry exists for the current sessionId, we return an error The session lock has expired on the session with id .... else we return the error Failed to complete/abandon/defer/deadletter the message as it's receiver has been closed.

There are only 2 scenarios where we remove an entry for a session from the expiredMessageSessions map.

If users close a session receiver after they encounter the SessionLockLostError, then the fix in #2415 will handle the cleanup
If users create a new session receiver after they encounter the SessionLockLostError, then we already ensure to do the cleanup

When working on a small set of sessions, this wouldnt be a problem, but imagine a case where I have an application that sends data with sessionId as the date of the day that the message was sent.
Now, this is an ever increasing number of sessions.
Say, my receiving application creates a new session receiver each day, to receive the messages from that day and I never close the session receiver of the previous day.
This will result in the expiredMessageSessions map getting built-up.
This is a scenario that I just made up, but I believe there are other scenarios which would be similar and cause build up in expiredMessageSessions map when the user doesn't close old receivers
Therefore, I still believe there is merit in using the ConcurrentExpiringMap for this map so that it self cleans periodically or remove the need for expiredMessageSessions altogether.
Effects of removing expiredMessageSessions altogether:

When settling a message after session expires users would see Failed to complete/abandon/defer/deadletter the message as it's receiver has been closed. instead of The session lock has expired on the session with id ....

I believe this is not a big trade-off
@AlexGhiondea, @bterlson Thoughts?
If we decide to use the ConcurrentExpiringMap, I would propose to re-open this issue.
If we decide to remove expiredMessageSessions altogether, I would propose to create a new issue to track that work.


Ego_states - attributes

Thanks for such a great work !
I was trying to generate pickle files by running UniAd. I almost generated everything but theres a lot of miss match.

Ego_states: how to obtain those 9 values from UniAd. Exactly from where?
Vx,vy = velocity of sdc? From where I can get it? Canbus?
Cx,cy = what does these mean? Center of SDC?
Similarly kappa, streering, v-yaw?
Hiw about ego length and width?

I tried to generate traj, future-traj-ego, past-traj-ego , number does not match with pickle files.

Can you please explain a but into detail? I would really appreciate it.

You may refer to the code here. Hope it can help.

Thanks for your help.
First of all did you guys copy the values of ego past trajectory from gt or output of trackformer?
We tried to reproduce your result (past/future) trajectories but could never generate it. So, two questions:

Source of past trajectories of ego? [Gt or what]
What postprocessing you did on the top of past trajectories of ego?


Exclude balancer retries against upstream from Kong latency

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
2.7.1
Current Behavior
The kong_latency metric that's reported by the Datadog plugin includes the time spent waiting for an upstream to respond for failed and retried requests.
We use this metric to alert the team administering Kong that they need to take action, e.g. fix a misbehaving plugin. However the current behaviour means that these alerts aren't actionable because they include upstream failures that are outside of their control and mask Kong's own latency.
Expected Behavior
The kong_latency metric (and other log processors that depend on the same underlying data) to only include latency that Kong itself is adding to the request, excluding balancer retries.
This would be a partial revert of https://github.com/Kong/kong/pull/2494 (although the code has changed a lot since then). My understanding is that it could still include the last balancer try, but not the previous tries. Though maybe that's not useful, if the balancer is always quick and the comment about DNS lookups happening in the access phase is still true?
Steps To Reproduce

Configure an upstream that accepts requests and doesn't respond
Configure the Datadog plugin (can use statsd-logger)
Make a request against Kong and the upstream
Observe that the kong_latency metric includes timed out and retried requests against the upstream

Anything else?
N/A

Could we get some feedback on this?
Although the reproduction uses Datadog and the issue with tagged with plugins/datadog, it would affect other plugins like logging and tracing.

Dear contributor,
We're closing this issue as there hasn't been any update to it for a long time. If the issue is still relevant in the latest version, please feel free to reopen it. We're more than happy to revisit it again.
Please have a look at our pledge to the community for more information.
Sincerely,
Kong Gateway Team

Hey team - we are facing the same issue, would greatly appreciate if this issue could be revisited 🙏
@dcarley did you end up finding a workaround or resolution?


Bluetooth: Mesh: Check SegN when receiving Transaction Start PDU

When receiving Transaction Start PDU, assure that number of segments
needed to send a Provisioning PDU with TotalLength size is equal to SegN
value provided in the Transaction Start PDU.
Signed-off-by: Pavel Vasilyev<EMAIL_ADDRESS>

@PavelVPV note that the backport PRs will not be merged until there is a matching bug report issue for them (that's part of the acceptance criteria for any backport PRs)


Surface layer error with over 1e7 vertices

🐛 Bug
When a surface layer is created with more than 1e7 vertices, an unexpected error shows up. I think napari is trying to do some magic with setting contrast limits, but fails before getting to it due to wrong indexing.
To Reproduce
import numpy as np
from napari.layers import Surface
Surface((np.zeros((100000000, 3)), np.zeros((1, 3), dtype=int)))

Error raised:
~/.local/lib/python3.9/site-packages/napari/layers/surface/surface.py in __init__(self, data, colormap, contrast_limits, gamma, name, metadata, scale, translate, rotate, shear, affine, opacity, blending, visible)
    168         self._gamma = gamma
    169         if contrast_limits is None:
--> 170             self._contrast_limits_range = calc_data_range(self._vertex_values)
    171         else:
    172             self._contrast_limits_range = contrast_limits

~/.local/lib/python3.9/site-packages/napari/layers/utils/layer_utils.py in calc_data_range(data, rgb)
     38         if (
     39             np.prod(data.shape[-offset:]) > 1e7
---> 40             and data.shape[-offset] > 64
     41             and data.shape[-offset + 1] > 64
     42         ):

IndexError: tuple index out of range

Expected behavior
I'm not sure if this is supposed to fail and the error is just hard to interpret, or if it's unwanted behaviour.
Environment
napari: 0.4.8
Platform: Linux-5.12.8-arch1-1-x86_64-with-glibc2.33
System: Arch Linux
Python: 3.9.5 (default, May 24 2021, 12:50:35) [GCC 11.1.0]
Qt: 5.15.2
PyQt5: 5.15.4
NumPy: 1.20.3
SciPy: 1.6.3
Dask: 2020.12.0
VisPy: 0.6.6

OpenGL:
- GL version: 4.6.0 NVIDIA 465.31
- MAX_TEXTURE_SIZE: 16384

Screens:
- screen 1: resolution 1920x1080, scale 1.0
- screen 2: resolution 1920x1200, scale 1.0

Plugins:
- animation: 0.0.2
- console: 0.0.3
- mrcfile-reader: 0.1.2
- napari-em-reader: 0.1.0
- napari-properties-plotter: 0.1.dev2+g2734460.d20210520
- ndtiffs: 0.1.1
- scikit-image: 0.4.8
- svg: 0.1.5

@brisvag : I think this is effectively duplicate of #3672 (though predates), which was fixed by #3683. I could reproduce this at v0.4.8, but couldn't reproduce this with the example above on main, so I'm closing this. Feel free to reopen if you disagree!


Put local site modules first in modulepath

Saw this issue referenced in @glarizza's PuppetConf 2016 talk (raised by @alvagante). https://youtu.be/RYMNmfM6UHw?t=33m52s.  Our (TE Connectivity) implementation reflects this.

I think this is correct... ( I'm not sure why I put modules before site in the first place ).  My only question would be since this is kind of a backwards incompatible change then do we need to do something special to indicate that?
I'm considering a new section of the README that is just "How we update the control-repo."  From there it will say that we do not consider backwards compatibility so we can continually update for best-practices and it is the user's responsibility to check the commit history before including changes from the repo.
If we go that route or not I think my only concern is that we get a more specific commit message around why we're making the change.  And maybe a link to the PuppetConf talk and a rough starting time of the conversation.
@aharden thanks for putting this up and no action is needed from you.  I'm just thinking out loud and any changes we need made I think we can make to your PR ourselves.  I know I can add commits to a PR, I've never tried editing a commit message before though so we'll see if that works.

The link to the discussion I referenced: hhttps://youtu.be/RYMNmfM6UHw?t=33m52s.

@npwalker I'm going to merge this in.
I agree that there should be some sort of "how we do upgrades" section, and I think we should just continually update and act a reference for a basic control-repo. But for now, this PR needs to be merged because it fixes a valid concern.