Problem while using Encounter Constraints with SparkQuery

Using the provided notebook, I tried adding EncounterConstraints with typeCode.
patient_query.encounter_constraints(typeCode=['5021b1a1-e7f6-44b4-ba02-da2f2bcf8718'])
flat_enc_df = patient_query.get_patient_encounter_view(BASE_URL)
flat_enc_df.head()

But, looks like the flattenning is not sufficient, since type.code.coding is nested at an extra level. I get the following error.
AnalysisException                         Traceback (most recent call last)
Input In [6], in <cell line: 8>()
      1 # Add encounter location constraint
      2
      3 #x = patient_query._flatten_encounter(BASE_URL)
      4 #x = patient_query._enc_df.select('type').where()
      7 patient_query.encounter_constraints(typeCode=['5021b1a1-e7f6-44b4-ba02-da2f2bcf8718'])
----> 8 flat_enc_df = patient_query.get_patient_encounter_view(BASE_URL)
      9 flat_enc_df.head()

File ~/fsf/openmrs-fhir-analytics/dwh/query_lib.py:402, in _SparkPatientQuery.get_patient_encounter_view(self, base_url, force_location_type_columns)
    400 self._make_sure_patient()
    401 self._make_sure_encounter()
--> 402 flat_enc = self._flatten_encounter(base_url + 'Encounter/',
    403                                    force_location_type_columns)
    404 column_list = ['encPatientId']
    405 if self._enc_constraint.has_location() or force_location_type_columns:

File ~/fsf/openmrs-fhir-analytics/dwh/query_lib.py:441, in _SparkPatientQuery._flatten_encounter(self, base_encounter_url, force_location_type_columns)
    437   column_list += [
    438       F.col('typeFlat.coding.system').alias('encTypeSystem'),
    439       F.col('typeFlat.coding.code').alias('encTypeCode')]
    440 print(flat_df.select(column_list))
--> 441 return flat_df.select(column_list).where(self._enc_constraint.sql())

File ~/fsf/openmrs-fhir-analytics/.env38/lib/python3.8/site-packages/pyspark/sql/dataframe.py:1731, in DataFrame.filter(self, condition)
   1706 """Filters rows using the given condition.
   1707
   1708 :func:`where` is an alias for :func:`filter`.
   (...)
   1728 [Row(age=2, name='Alice')]
   1729 """
   1730 if isinstance(condition, str):
-> 1731     jdf = self._jdf.filter(condition)
   1732 elif isinstance(condition, Column):
   1733     jdf = self._jdf.filter(condition._jc)

File ~/fsf/openmrs-fhir-analytics/.env38/lib/python3.8/site-packages/py4j/java_gateway.py:1321, in JavaMember.__call__(self, *args)
   1315 command = proto.CALL_COMMAND_NAME +\
   1316     self.command_header +\
   1317     args_command +\
   1318     proto.END_COMMAND_PART
   1320 answer = self.gateway_client.send_command(command)
-> 1321 return_value = get_return_value(
   1322     answer, self.gateway_client, self.target_id, self.name)
   1324 for temp_arg in temp_args:
   1325     temp_arg._detach()

File ~/fsf/openmrs-fhir-analytics/.env38/lib/python3.8/site-packages/pyspark/sql/utils.py:117, in capture_sql_exception.<locals>.deco(*a, **kw)
    113 converted = convert_exception(e.java_exception)
    114 if not isinstance(converted, UnknownException):
    115     # Hide where the exception came from that shows a non-Pythonic
    116     # JVM exception message.
--> 117     raise converted from None
    118 else:
    119     raise

AnalysisException: cannot resolve 'encTypeCode['code']' due to data type mismatch: argument 2 requires integral type, however, ''code'' is of string type.; line 1 pos 0;
'Filter ((true AND encTypeCode#492[code] IN (5021b1a1-e7f6-44b4-ba02-da2f2bcf8718)) AND true)
+- Project [encounterId#460, subject#87.patientId AS encPatientId#467, period#92.start AS first#468, period#92.end AS last#469, locationFlat#471.location.LocationId AS locationId#479, locationFlat#471.location.display AS locationDisplay#480, typeFlat#482.coding.system AS encTypeSystem#491, typeFlat#482.coding.code AS encTypeCode#492]
   +- Project [subject#87, id#74, location#98, type#85, period#92, encounterId#460, locationFlat#471, typeFlat#482]
      +- Generate explode(type#85), true, [typeFlat#482]
         +- Project [subject#87, id#74, location#98, type#85, period#92, encounterId#460, locationFlat#471]
            +- Generate explode(location#98), true, [locationFlat#471]
               +- Project [subject#87, id#74, location#98, type#85, period#92, regexp_replace(id#74, Encounter/, , 1) AS encounterId#460]
                  +- Project [subject#87, id#74, location#98, type#85, period#92]
                     +- Relation [id#74,meta#75,implicitRules#76,language#77,text#78,contained#79,identifier#80,status#81,statusHistory#82,class#83,classHistory#84,type#85,priority#86,subject#87,episodeOfCare#88,incomingReferral#89,participant#90,appointment#91,period#92,length#93,reason#94,diagnosis#95,account#96,hospitalization#97,... 3 more fields] parquet

I think the problem is the type of type as show here. Notice, that type.code which gets flattened in _flatten_encounter does not flatten.
 |-- type: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- id: string (nullable = true)
 |    |    |-- coding: array (nullable = true)
 |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |-- id: string (nullable = true)
 |    |    |    |    |-- system: string (nullable = true)
 |    |    |    |    |-- version: string (nullable = true)
 |    |    |    |    |-- code: string (nullable = true)
 |    |    |    |    |-- display: string (nullable = true)
 |    |    |    |    |-- userSelected: boolean (nullable = true)
 |    |    |-- text: string (nullable = true)

You can try this and notice that we need to use array_contains to make this query work:
x = patient_query._flatten_encounter(BASE_URL)
x.select('encTypeCode').where('encTypeCode is not null').where('array_contains(encTypeCode, "5021b1a1-e7f6-44b4-ba02-da2f2bcf8718")').show()

I think the solution is to change
https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics/blob/master/dwh/query_lib.py#L150
to
type_code_str = 'array_contains(encTypeCode, {})'.format(temp_str)

FIxing this as part of https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics/pull/256

Thanks for finding/flagging this bug @gdevanla. I finally managed to take a look and I think the proper fix for this is to do another explode_outer on typeFlat.coding before here. The idea for these flat views was that each output column would be a simple data type (i.e., not nested and not repeated). So for example for location, we remove the repeated element here and then create an alias for sub-elements of locationFlat. We want to do the same for typeFlat but as you pointed out typeFlat.coding is still a repeated field which needs to be flattened as well.


Simplify Controller / controllerAs implementation

It seems easier to use @JsExportAll to expose the contents of Controllers rather than using a macro, and  methods defined in a controller can be used from a template, where the macro expansion failed to do that properly (names are exposed in the scope with additional $)
Branch controller-reworks contains this rewrite.

You're right, JSExportAll is much simpler.
However, I can't get the following example to work with your changes:
@JSExportAll
class FooCtrl extends Controller {
  val name = "Bar"
}

module.controllerOf[FooCtrl]

Hello {{ctrl.name}}

name is not set on ctrl (it's actually an empty object); this is probably due to the fact, that the constructor function in ControllerMacros.createScopeController() now is of type js.Function instead of js.ThisFunction? Or do you propose to drop the "controllerAs" syntax altogether?


Icon.Button has margin right by default

When using Icon.Button, the icon has marginRight: 10 by default - which means in order for the icon to be in the center of the container, you have to add a margin or padding to the left, or remove the marginRight (by specifying iconStyle={{marginRight: 0}} on the Icon.Button).
As seen in https://github.com/oblador/react-native-vector-icons/blob/master/lib/icon-button.js#L19
I assume this is because if Text is inserted as a child to the Icon.Button the Icon needs to be moved left, to create spacing between the Icon and the Text
Is there any built in way to center an Icon within an Icon.Button?
Or does this need to be fixed?

we can pass use it
<Icon.Button
name="arrow-forward"
iconStyle={{marginRight:0}}
backgroundColor={APP_PLACE_HOLDER}
color="#ffffff"
size={35}
></Icon.Button>

@sakethaquarterlyai Well yes, you can. But don't you think it should be a part of the component's responsibility to create that spacing only if there's text? Instead of you, the one using the component, checking that yourself and adding/removing the spacing within your code?

Just adding that this was an issue I experienced as well, specifically with ionicons when used in the header bar.

Closing as Icon.Button is being removed from the next version of RNVI


2D Streaming

Quality and latency are obviously much better compared to BigScreen.
Streaming 2D games would be a nice addition to the streaming of VR games.

2 solutions for you:
a) Use vorpx with ALVR (costs $) to play 2D games + 2D->3D games in cinema mode.
b) Download phonecast + moonlight on your phone. Run moonlight from within phonecast and play 2D games without ALVR.

As I only own a Oculus GO solution a sounds cool. Have you tested vorpox with ALVR?

Try this with the GO: https://www.reddit.com/r/OculusGo/comments/8mc64q/moonlight_for_go_stream_your_pc_gamesdesktop_to_a/

This is not the scope of ALVR. I recommend to use other apps (with or without ALVR).
Virtual Desktop works well with ALVR for me. And you can also use Oculus TV with SteamLink or Splashtop.
https://www.reddit.com/r/OculusGo/comments/8wrn2v/since_steam_link_runs_sideloaded_on_oculus_tv_we/
It is said that vorpx works with ALVR. #51

Best free option was using ALVR with Bigscreen VR mode, not making a room but turn on bigscreen checkbox, turn off all other monitors.  Good quality, low latency.  Bigscreen alone isn't good quality and has a lot of lag the way they want you to use it with the app.

Thx for info :)


[Task]: Fix flakiness of cypress/e2e/Regression/ClientSide/Linting/ErrorReporting_spec.ts

SubTasks
Ref: https://theappsmith.slack.com/archives/C06FWBV74GH/p1715864802943759?thread_ts=1715842923.212549&cid=C06FWBV74GH
Because of update has not finished and same warnings on the body when js body was replaced warnings moved because of replacement and annotation were displaced
Failure Runs: https://internal.appsmith.com/app/cypress-dashboard/run-details-65890b3c81d7400d08fa9ee5?workflowId=9110516373&attempt=2&selectiontype=test&testsstatus=failed&specsstatus=fail

Hey team! Please add your planning poker estimate with Zenhub @AmanAgarwal041 @carinanfonseca @rishabhrathod01 @rohan-arthur @sneha122

@RakshaKShetty the cypress dashboard failure run attached in this test does not have any screenshots or video available?
Do we delete the media files of the old runs? How can I check the media files of this run?

As per discussion with @yatinappsmith, since this run is from 2 months ago and we only store the media files for last 15 days of cypress runs, there is no way to check the recordings or screenshot back.

The test is passing in the CE and EE PRs.
CE Run 1
CE Run 2
EE Run 1
EE Run 2
This is not flaky and was fixed in the PR https://github.com/appsmithorg/appsmith/pull/33545
Confirmed with @dvj1988

@yatinappsmith @RakshaKShetty can we please remove this (cypress/e2e/Regression/ClientSide/Linting/ErrorReporting_spec.ts) test from the list of flaky cypress tests.


worker: merge Leviathan Options and RuntimeConfiguration

These objects contain a lot of the same configuration, yet are subtlely
divergent for no apparent reason. Merge them into RuntimeConfiguration
and replace all references with the new object.
Change-type: patch
Signed-off-by: Joseph Kogut<EMAIL_ADDRESS>

@balena-ci rebase


[Improvement][K8s] Support resource storage when fs.defaultFS=file:///

What is the purpose of the pull request
Support resource storage when fs.defaultFS=file:///
So the api pod and all worker pods can share the resource storage when fs.defaultFS=file:///
This pr is just a cherry-pick of #4700
Brief change log

Add pvc-dolphinscheduler-fs-file.yaml for resource storage when fs.defaultFS=file:///

Verify this pull request
This change added tests and can be verified as follows:
(example:)

Manually verified the change by testing locally.

Video check: https://recordit.co/5DTjdj8nQt
Gif check:

Codecov Report

Merging #4777 (acfd800) into dev (fef1a7e) will decrease coverage by 0.19%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev    #4777      +/-   ##
============================================
- Coverage     45.41%   45.22%   -0.20%
+ Complexity     3411     3394      -17
============================================
  Files           537      537
  Lines         23078    23078
  Branches       2690     2690
============================================
- Hits          10482    10437      -45
- Misses        11662    11713      +51
+ Partials        934      928       -6

Impacted Files
Coverage Δ
Complexity Δ

.../server/master/runner/DependentTaskExecThread.java
51.57% <0.00%> (-16.85%)
10.00% <0.00%> (-5.00%)

...ver/master/consumer/TaskPriorityQueueConsumer.java
43.33% <0.00%> (-10.00%)
16.00% <0.00%> (-4.00%)

...olphinscheduler/server/utils/DependentExecute.java
61.84% <0.00%> (-9.22%)
17.00% <0.00%> (-4.00%)

...olphinscheduler/plugin/alert/email/ExcelUtils.java
78.18% <0.00%> (-3.64%)
8.00% <0.00%> (-1.00%)

...inscheduler/server/master/config/MasterConfig.java
42.42% <0.00%> (-3.04%)
11.00% <0.00%> (-1.00%)

...org/apache/dolphinscheduler/remote/utils/Host.java
13.43% <0.00%> (-2.99%)
5.00% <0.00%> (-1.00%)

...e/dolphinscheduler/remote/NettyRemotingClient.java
52.11% <0.00%> (-1.41%)
12.00% <0.00%> (-1.00%)

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 fef1a7e...acfd800. Read the comment docs.


Support for Chinese Simplified Language

I would like to be a volunteer.

would like to be a volunteer.

Thanks! I've added empty zh templates: https://github.com/home-assistant/intents/tree/main/sentences/zh
Please start with _common.yaml and the homeassistant_*.yaml files.
Did I get the correct native name for Simplified Chinese? 中文

I'm contributing sentences for Chinese and have a little problem.
In Chinese, 打开 is used for both turn on light and open curtain, which makes one intent match multiple sentences.
See the example below:
# cover_HassOpenCover.yaml
language: zh
intents:
  HassOpenCover:
    data:
      - sentences:
          - "打开 [<area>] <name>"
        slots:
          name: all
      - sentences:
          - "打开车库门"
        slots:
          device_class: garage_door
      - sentences:
          - "打开 [<area>] 窗帘"
        slots:
          device_class:
            - blind
            - curtain
            - shutter

# homeassistant_HassTurnOn.yaml
language: zh
intents:
  HassTurnOn:
    data:
      - sentences:
          - "打开 <name>"

# cover_HassOpenCover.yaml
language: zh
tests:
  - sentences:
      - "打开左侧窗帘"
    intent:
      name: HassOpenCover
      slots:
        domain: cover
        name: cover.curtain_left

E               AssertionError: For '打开左侧窗帘' expected intent HassOpenCover, got HassTurnOn
E               assert 'HassTurnOn' == 'HassOpenCover'
E                 - HassOpenCover
E                 + HassTurnOn
tests/test_language_sentences.py:53: AssertionError

$ python3 -m script.intentfest parse --language zh --sentence '打开左侧窗帘'
{
  "text": "打开左侧窗帘",
  "match": true,
  "intent": "HassTurnOn",
  "slots": {
    "name": "cover.curtain_left",
    "domain": "fan"
  }
}

$ python3 -m script.intentfest parse --language zh --sentence '打开卧室的左侧窗帘'
{
  "text": "打开卧室的左侧窗帘",
  "match": true,
  "intent": "HassTurnOn",
  "slots": {
    "area": "bedroom",
    "name": "cover.curtain_left",
    "domain": "fan"
  }
}

@al-one This is similar to Urdu. I have a solution that I will try to get merged very soon. This will add the ability to restrict an intent match to a specific domain, and the test entities will have their domain with them.
I'll update here when it's ready :+1:

@synesthesiam  Thanks for your great work.


Firebase project [myproject_name] not configured

its a bizarre exception
Kreait\Laravel\Firebase\FirebaseProjectManager::configuration vendor/kreait/laravel-firebase/src/FirebaseProjectManager.php:41
 throw new InvalidArgumentException("Firebase project [{$name}] not configured.");
`
but when i changing default configuration at config > firebase.php
from :
'projects' => [         'app' => [....] ]
to:
'projects' => [         'myproject_name' => [....] ]
it works fine.
in my .env i have
FIREBASE_CREDENTIALS=/path/abcd/firebase_cred.json
FIREBASE_PROJECT=myproject_name
now i want to know am i doing wrong anywhere in configuration?
or something i missed to put in .env

This does look correct from what I can see, so currently I'm as confused as you are 😅. Could you please share the contents of your config/firebase.php file, and also which versions of the kreait libraries you have installed? composer show | grep kreait

@jeromegamez
after omposer show | grep kreait :
kreait/clock                         1.1.0              A PHP 7.0 compatible clock abstraction kreait/firebase-php                  5.21.0             Firebase Admin SDK kreait/firebase-tokens               1.16.0             A library to work with Firebase tokens kreait/laravel-firebase              3.1.0              A Laravel package for the Firebase PHP Admin SDK
in config/firebase.php i have :
`<?php
declare(strict_types=1);
return [
/*
* ------------------------------------------------------------------------
* Default Firebase project
* ------------------------------------------------------------------------
*/
'default' => env('FIREBASE_PROJECT', 'airshipt-dcb94'),
/*
 * ------------------------------------------------------------------------
 * Firebase project configurations
 * ------------------------------------------------------------------------
 */
'projects' => [
    'myproject_name' => [
        /*
         * ------------------------------------------------------------------------
         * Credentials / Service Account
         * ------------------------------------------------------------------------
         *
         * In order to access a Firebase project and its related services using a
         * server SDK, requests must be authenticated. For server-to-server
         * communication this is done with a Service Account.
         *
         * If you don't already have generated a Service Account, you can do so by
         * following the instructions from the official documentation pages at
         *
         * https://firebase.google.com/docs/admin/setup#initialize_the_sdk
         *
         * Once you have downloaded the Service Account JSON file, you can use it
         * to configure the package.
         *
         * If you don't provide credentials, the Firebase Admin SDK will try to
         * auto-discover them
         *
         * - by checking the environment variable FIREBASE_CREDENTIALS
         * - by checking the environment variable GOOGLE_APPLICATION_CREDENTIALS
         * - by trying to find Google's well known file
         * - by checking if the application is running on GCE/GCP
         *
         * If no credentials file can be found, an exception will be thrown the
         * first time you try to access a component of the Firebase Admin SDK.
         *
         */
        'credentials' => [
            'file' => env('FIREBASE_CREDENTIALS', env('GOOGLE_APPLICATION_CREDENTIALS')),

            /*
             * If you want to prevent the auto discovery of credentials, set the
             * following parameter to false. If you disable it, you must
             * provide a credentials file.
             */
            'auto_discovery' => true,
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Auth Component
         * ------------------------------------------------------------------------
         */

        'auth' => [
            'tenant_id' => env('FIREBASE_AUTH_TENANT_ID'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Realtime Database
         * ------------------------------------------------------------------------
         */

        'database' => [
            /*
             * In most of the cases the project ID defined in the credentials file
             * determines the URL of your project's Realtime Database. If the
             * connection to the Realtime Database fails, you can override
             * its URL with the value you see at
             *
             * https://console.firebase.google.com/u/1/project/_/database
             *
             * Please make sure that you use a full URL like, for example,
             * https://my-project-id.firebaseio.com
             */
            'url' => env('FIREBASE_DATABASE_URL'),
        ],

        'dynamic_links' => [
            /*
             * Dynamic links can be built with any URL prefix registered on
             *
             * https://console.firebase.google.com/u/1/project/_/durablelinks/links/
             *
             * You can define one of those domains as the default for new Dynamic
             * Links created within your project.
             *
             * The value must be a valid domain, for example,
             * https://example.page.link
             */
            'default_domain' => env('FIREBASE_DYNAMIC_LINKS_DEFAULT_DOMAIN'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Cloud Storage
         * ------------------------------------------------------------------------
         */

        'storage' => [
            /*
             * Your project's default storage bucket usually uses the project ID
             * as its name. If you have multiple storage buckets and want to
             * use another one as the default for your application, you can
             * override it here.
             */

            'default_bucket' => env('FIREBASE_STORAGE_DEFAULT_BUCKET'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Caching
         * ------------------------------------------------------------------------
         *
         * The Firebase Admin SDK can cache some data returned from the Firebase
         * API, for example Google's public keys used to verify ID tokens.
         *
         */

        'cache_store' => env('FIREBASE_CACHE_STORE', 'file'),

        /*
         * ------------------------------------------------------------------------
         * Logging
         * ------------------------------------------------------------------------
         *
         * Enable logging of HTTP interaction for insights and/or debugging.
         *
         * Log channels are defined in config/logging.php
         *
         * Successful HTTP messages are logged with the log level 'info'.
         * Failed HTTP messages are logged with the the log level 'notice'.
         *
         * Note: Using the same channel for simple and debug logs will result in
         * two entries per request and response.
         */

        'logging' => [
            'http_log_channel' => env('FIREBASE_HTTP_LOG_CHANNEL'),
            'http_debug_log_channel' => env('FIREBASE_HTTP_DEBUG_LOG_CHANNEL'),
        ],

        /*
         * ------------------------------------------------------------------------
         * HTTP Client Options
         * ------------------------------------------------------------------------
         *
         * Behavior of the HTTP Client performing the API requests
         */
        'http_client_options' => [
            /*
             * Use a proxy that all API requests should be passed through.
             * (default: none)
             */
            'proxy' => env('FIREBASE_HTTP_CLIENT_PROXY'),

            /*
             * Set the maximum amount of seconds (float) that can pass before
             * a request is considered timed out
             * (default: indefinitely)
             */
            'timeout' => env('FIREBASE_HTTP_CLIENT_TIMEOUT'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Debug (deprecated)
         * ------------------------------------------------------------------------
         *
         * Enable debugging of HTTP requests made directly from the SDK.
         */
        'debug' => env('FIREBASE_ENABLE_DEBUG', false),
    ],
],

];
`

This does look correct from what I can see, so currently I'm as confused as you are . Could you please share the contents of your config/firebase.php file, and also which versions of the kreait libraries you have installed? composer show | grep kreait

@jeromegamez
after omposer show | grep kreait :
kreait/clock                         1.1.0              A PHP 7.0 compatible clock abstraction kreait/firebase-php                  5.21.0             Firebase Admin SDK kreait/firebase-tokens               1.16.0             A library to work with Firebase tokens kreait/laravel-firebase              3.1.0              A Laravel package for the Firebase PHP Admin SDK
in config/firebase.php i have :
`declare(strict_types=1);
return [
/*
* ------------------------------------------------------------------------
* Default Firebase project
* ------------------------------------------------------------------------
*/
'default' => env('FIREBASE_PROJECT', 'airshipt-dcb94'),
/*
 * ------------------------------------------------------------------------
 * Firebase project configurations
 * ------------------------------------------------------------------------
 */
'projects' => [
    'myproject_name' => [
        /*
         * ------------------------------------------------------------------------
         * Credentials / Service Account
         * ------------------------------------------------------------------------
         *
         * In order to access a Firebase project and its related services using a
         * server SDK, requests must be authenticated. For server-to-server
         * communication this is done with a Service Account.
         *
         * If you don't already have generated a Service Account, you can do so by
         * following the instructions from the official documentation pages at
         *
         * https://firebase.google.com/docs/admin/setup#initialize_the_sdk
         *
         * Once you have downloaded the Service Account JSON file, you can use it
         * to configure the package.
         *
         * If you don't provide credentials, the Firebase Admin SDK will try to
         * auto-discover them
         *
         * - by checking the environment variable FIREBASE_CREDENTIALS
         * - by checking the environment variable GOOGLE_APPLICATION_CREDENTIALS
         * - by trying to find Google's well known file
         * - by checking if the application is running on GCE/GCP
         *
         * If no credentials file can be found, an exception will be thrown the
         * first time you try to access a component of the Firebase Admin SDK.
         *
         */
        'credentials' => [
            'file' => env('FIREBASE_CREDENTIALS', env('GOOGLE_APPLICATION_CREDENTIALS')),

            /*
             * If you want to prevent the auto discovery of credentials, set the
             * following parameter to false. If you disable it, you must
             * provide a credentials file.
             */
            'auto_discovery' => true,
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Auth Component
         * ------------------------------------------------------------------------
         */

        'auth' => [
            'tenant_id' => env('FIREBASE_AUTH_TENANT_ID'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Realtime Database
         * ------------------------------------------------------------------------
         */

        'database' => [
            /*
             * In most of the cases the project ID defined in the credentials file
             * determines the URL of your project's Realtime Database. If the
             * connection to the Realtime Database fails, you can override
             * its URL with the value you see at
             *
             * https://console.firebase.google.com/u/1/project/_/database
             *
             * Please make sure that you use a full URL like, for example,
             * https://my-project-id.firebaseio.com
             */
            'url' => env('FIREBASE_DATABASE_URL'),
        ],

        'dynamic_links' => [
            /*
             * Dynamic links can be built with any URL prefix registered on
             *
             * https://console.firebase.google.com/u/1/project/_/durablelinks/links/
             *
             * You can define one of those domains as the default for new Dynamic
             * Links created within your project.
             *
             * The value must be a valid domain, for example,
             * https://example.page.link
             */
            'default_domain' => env('FIREBASE_DYNAMIC_LINKS_DEFAULT_DOMAIN'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Firebase Cloud Storage
         * ------------------------------------------------------------------------
         */

        'storage' => [
            /*
             * Your project's default storage bucket usually uses the project ID
             * as its name. If you have multiple storage buckets and want to
             * use another one as the default for your application, you can
             * override it here.
             */

            'default_bucket' => env('FIREBASE_STORAGE_DEFAULT_BUCKET'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Caching
         * ------------------------------------------------------------------------
         *
         * The Firebase Admin SDK can cache some data returned from the Firebase
         * API, for example Google's public keys used to verify ID tokens.
         *
         */

        'cache_store' => env('FIREBASE_CACHE_STORE', 'file'),

        /*
         * ------------------------------------------------------------------------
         * Logging
         * ------------------------------------------------------------------------
         *
         * Enable logging of HTTP interaction for insights and/or debugging.
         *
         * Log channels are defined in config/logging.php
         *
         * Successful HTTP messages are logged with the log level 'info'.
         * Failed HTTP messages are logged with the the log level 'notice'.
         *
         * Note: Using the same channel for simple and debug logs will result in
         * two entries per request and response.
         */

        'logging' => [
            'http_log_channel' => env('FIREBASE_HTTP_LOG_CHANNEL'),
            'http_debug_log_channel' => env('FIREBASE_HTTP_DEBUG_LOG_CHANNEL'),
        ],

        /*
         * ------------------------------------------------------------------------
         * HTTP Client Options
         * ------------------------------------------------------------------------
         *
         * Behavior of the HTTP Client performing the API requests
         */
        'http_client_options' => [
            /*
             * Use a proxy that all API requests should be passed through.
             * (default: none)
             */
            'proxy' => env('FIREBASE_HTTP_CLIENT_PROXY'),

            /*
             * Set the maximum amount of seconds (float) that can pass before
             * a request is considered timed out
             * (default: indefinitely)
             */
            'timeout' => env('FIREBASE_HTTP_CLIENT_TIMEOUT'),
        ],

        /*
         * ------------------------------------------------------------------------
         * Debug (deprecated)
         * ------------------------------------------------------------------------
         *
         * Enable debugging of HTTP requests made directly from the SDK.
         */
        'debug' => env('FIREBASE_ENABLE_DEBUG', false),
    ],
],

];
`

Alright, this actually makes sense - the value in default refers to a key in the projects array.
If we look at the default config:
return [
	'default' => env('FIREBASE_PROJECT', 'app'),
	'projects' => [
		'app' => [
			// ...
		]
	]
];

by default, the FIREBASE_PROJECT environment variable is not set, so it will default to app and find the configuration in the ['projects']['app'] field.
When you set the FIREBASE_PROJECT env variable to my_project_name, you will need a corresponding ['projects']['my_project_name'] field in the array:
# config/firebase.php
return [
	'default' => env('FIREBASE_PROJECT', 'app'),
	'projects' => [
		'app' => [
			// ...
		],
		'my_project_name' => [
			// ...
		]
	]
];

and in your particular case, you would need:
# config/firebase.php
return [
	'default' => env('FIREBASE_PROJECT', 'airshipt-dcb94'),
	'projects' => [
		'airshipt-dcb94' => [
			// ...
		]
	]
];

If you're working with just one firebase project, I would recommend not setting the environment variable at all, and just setting the FIREBASE_CREDENTIALS=/path/abcd/firebase_cred.json environment variable. (In most cases, you shouldn't need to publish the config/firebase.php at all, by the way) After this, you can use the simple ways to access the Firebase services:
use Kreait\Laravel\Firebase\Facades\Firebase;

$auth = Firebase::auth();
$db = Firebase::database();
// ...

If you're using multiple projects, the FIREBASE_PROJECT env variable denotes the default project to use, but you'll still need to configure the different projects separately, for example like this:
# config/firebase.php
return [
	'default' => env('FIREBASE_PROJECT', 'main'),
	'projects' => [
		'main' => [
			'credentials' => [
				'file' => env('FIREBASE_MAIN_CREDENTIALS'),
			]
		],
		'second' => [
			'credentials' => [
				'file' => env('FIREBASE_SECOND_CREDENTIALS'),
			]
		],
	]
];

and in your .env file:
# .env
FIREBASE_MAIN_CREDENTIALS=/path/to/main_credentials.json
FIREBASE_SECOND_CREDENTIALS=/path/to/second_credentials.json

In your could you could then access the different projects like this:
use Kreait\Laravel\Firebase\Facades\Firebase;

// The following two are equivalent
$mainAuth = Firebase::auth();
$mainAuth = Firebase::project('main')->auth();

$secondAuth = Firebase::project('second')->auth();

I hope this helps 🤞

This is very close to what i need, now how to access the FCM component and send the message...


feat: Add starboard-exporter helm chart to ArtifactHub

hi GiantSwarm,
would be dope to have the starboard-exporter in ArtifactHub, so more people could find this awesome project!

https://artifacthub.io/packages/search?ts_query_web=starboard-exporter&sort=relevance&page=1

Hey @dirien, great idea! We're interested and are planning to add it. I've not worked much with ArtifactHub and my initial attempt to add starboard-exporter was not successful, but stay tuned.

If you need help, let me know. Theoretically you just need to enter the helm repo url.

I suspect it is failing because we do some templating in the Chart, supported by our opinionated builder. We have an alternative we are starting to adopt for cases like this so I will probably need to migrate this repo to use that before we can add it to ArtifactHub. Both are on the team's todo list

hi @stone-z,
thanks for the feedback! Will close the issue then.  Looking forward!


id should still be validated with the tag name

This is for issue #442
I'm not sure why we've allowed id to match any tag name. It seems like if it is specified it should be required to match.

👍

Oh, wow, this actually causes tests to fail. For realsies.
non_control_elements.html has 4 different tags with id="lead"
I'm not sure how we want to deal with this.

If the first matching id value doesn't match the tag, fail it
Assume that you may need to test a website with more than one of the same id on it and treat it like any other multiple selector

Regardless, the wrong elements were getting matched in our specs. :)

Ok, so it turns our that in #by_id we deleted :tag_name to verify no extra parameters, but didn't put it back in when sending it to the element_validation class. This should fix it.

This also is needed for this PR - https://github.com/watir/watirspec/pull/92

I think it was based on the assumption that IDs are unique, so we don't care about anything else (tag_name).

merged - 99b5d467de5022d6985a6a494b408fa561da0f2c


Add search capability

The current idea is for this to simply be a filter on the contents of the main screen (i.e. maintain tabs but filter rankings/fixtures/results/etc based on search text). The UI/UX for this is TBD.
The DB queries will need to be adjusted. Use the LIKE operator or newly-added Room FTS (https://medium.com/@sienatime/enabling-sqlite-fts-in-room-2-1-75e17d0f0ff8).

Considering there could be no search results for a query, empty state screens will need to be added for rankings/fixtures/results (already exists for live and can be reused)


Image process

I want to know why target normalized to [-1,1] and source normalized to [0,1], why there exists the difference?

I have the same question! Have you figured it out?


Add 2023-01-26 notes

Signed-off-by: John Mertic<EMAIL_ADDRESS>

Need to add recording link


prettierd

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find a similar feature request

🏷 Feature Type
New Addon
🔖 Feature description
Prettier on its own is slow.
prettierd is the solution.
✔ Solution
add prettierd as preferrably the default TS formatter
❓ Alternatives
No response
📝 Additional Context
Unfortunately, prettierd is not packaged for Nix.
Packaging it shouldn't be that difficult though, hopefully.

prettierd provides multiple approaches to formatting with prettier, not yet quite sure which one is the best
honestly I'm not sure if I want to touch the formatting implementation anyway, but I'll take a look regardless
the question would be, is prettierd packaged in nixpkgs - we try not to depend on user's packages unless explicitly stated by the user to use their system package from PATH

We would need to package prettierd ourselves unfortunately.
For changing it, all that you'd need to do is just make null-ls use prettierd instead of prettier. It's a built-in source.
https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#prettierd

Maybe it should be abstracted under the hood, and it should just use prettierd by default? I don't think it comes with any drawbacks.

Also on a similar topic, there's eslint_d https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#eslint_d, which is the same thing, but for eslint.

blocked by https://github.com/NixOS/nixpkgs/pull/231712

I genuinely don't know what's holding that PR back. But we can, temporarily, provide the package from a local overlay.


[windows] util.addFromFs goes up almost to the root directory

I've just tried util.addFromFs (on a directory of Bootstrap) and received the following array:

It stores in IPFS the bootstrap directory and its contents, which is good, but then it goes up to three levels of parent directories (almost to the root), which is not so good because:

it's somewhat scary (resembling a permanent data leak) even though it does not really store in IPFS anything from those parent directories except the name of the child it came from,

it's not convenient (because it means I cannot just grab the last element of the returned array and assume that's bootstrap).

Some technical details:   JS IPFS API v11.0.1, Node.js v6.8.1 (64-bit), Windows 7 Professional Service Pack 1 (64-bit).

Fixed in v12.1.3 and newer, correct?

Correct :) Thanks to the awesome @JeffDownie :D

The problem seems to persist in IPFS API v12.1.4, this issue should be reopened.
Here's a screenshot to demonstrate the problem:

In its topmost lines npm reports that IPFS API version 12.1.4 is installed (except the dependency<EMAIL_ADDRESS>which is optional).
In its bottom lines the recursive .addFromFs of the directory 'bootstrap' proceeds to add its three parents.

Found this as I am having same effect "goes up to the root" when using api.add and api.files.add (wrongly) on Mac OS X
Passing an array of objects each with an absolute path (without a content property) does bubble up to root.
macos 10.12.5
ipfs-api 14.0.4
go-ipfs (from source) 0.4.10
Could not reproduce the same issue with util.addFromFs on MacOS

With https://github.com/ipfs/js-ipfsd-ctl/pull/164 (thanks @thisconnect) I would be down to add appveyor CI to this module since we have so many users of go-ipfs and js-ipfs-api in Windows.
Thoughts?

Looks like PR #624 will fix this problem.
api.util.addFromFs('examples/name-api', { recursive: true }, (err, res) => console.log(res) )
undefined
> [ { path: 'name-api/index.html',
    hash: 'QmaXbimrrTpFL7SSVxdNABvFQTkP427LJ21dhqEqTS6MoP',
    size: 1692 },
  { path: 'name-api/index.js',
    hash: 'QmXjJGe3kzhKo4cXpHWZ79pNfdvux1Q75WxBkKmyzDEdEq',
    size: 3218 },
  { path: 'name-api/package-lock.json',
    hash: 'QmQLT6VSzg7uKJZ4Vkw7D8rPdaVVgTNhsS3J23EK1p849Y',
    size: 68988 },
  { path: 'name-api/package.json',
    hash: 'QmdnnbYiZA4JA7Fq6Grj5yzm9bsLLNskWS4VhNBZe8aHzp',
    size: 388 },
  { path: 'name-api/README.md',
    hash: 'QmQmomRe6rZpKYZPKnZ29MGH3eh8abkxV6M1vuNPfoyvJX',
    size: 358 },
  { path: 'name-api',
    hash: 'QmTroiByZLBF5xo785SeDZHQcZ55dwatjQVmzsEnFaNbPb',
    size: 74920 } ]

>

Merged and released as v15.1.0. Thank you @richardschneider ! :D


Possibility of adding new search sources

Is it possible to add a new search source to our current data_source, something like a new big database containing our current yaml files and the new data source. we also need to think about the security and maintenance problem.

This might be related to

https://github.com/NFDI4BIOIMAGE/training/issues/29

good Idea


Update .verb.md

Fix typo
Add new line after header

thanks! fwiw the markdown is reformatted by verb using gulp-format-md.

Great, I'll also check out https://github.com/jonschlinkert/prettify-markdown :wink:.
Care to update the README (and possibly a minor release)?

done. sorry for the delay (also fwiw this lib was put together in something like 30-45 minutes originally. looking at it now there are some things I'd do a lot differently, I'll probably update it at some point)


@JsonProperty annotation and schema generation

Hi! Is there any support to serialize enum values annotated with @JsonProperty?
By default schema generator uses enum value as schema value instead of using value from @JsonProperty annotation

Found solution


Added link to Choosing Arc service doc

#unassign: ManikaDhiman

#assign: johnmarco

Hi @ManikaDhiman . I see that you are assigned as the author on the doc I'm working on in this PR. Can you review it please and make sure you're okay with the change? Basically, I am adding a link to a new doc that's been created to help make it easier for customers to decide on what Arc service to choose. Thanks!

Hi @johnmarco,
This pull request was opened in the public repo. Content developers should work in the private repo, per the Microsoft Docs contributor guide. Would you make this content update in the private repo instead? Thank you! We'll close this PR.


Inheritance and type narrowing prevent private member access in base class.

TypeScript Version:  2.0.3
Code
class Animal {
    private sound: string;

    public makeSound() {
        if (this instanceof Cat || this instanceof Dog) {
            this.sound = "grr"; // Errors
        }
    }
}

class Cat extends Animal {
    public walk() {}
}

class Dog extends Animal {
    public eat() {}
}

Expected behavior:
Should be able to access private member in its declaring class.
Actual behavior:
Cannot access private member in its declaring class if the subclasses have different members and we narrow the type of this to a union type of its subclasses.

I think this narrowed by subclasses should have external accessibility of them. So I think this is a correct behavior.

I think it should work. Works in Java. https://goo.gl/Pb5p2Y

So we should narrow to Cat & Animal | Dog & Animal ?

Just looking at old bugs; this one was fixed in 3.9+ via #38277, though I'm not sure that the PR actually introduces a test for this particular case (though the underlying thing is in fact the same; this is narrowed to (this & Cat) | (this & Dog)).


how to manipulate the excel data in spyder

Issue Report Checklist

[ ] Searched the issues page for similar reports
[ ] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[ ] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[ ] Could not reproduce inside jupyter qtconsole (if console-related)
[ ] Tried basic troubleshooting (if a bug/error)

[ ] Restarted Spyder
[ ] Reset preferences with spyder --reset
[ ] Reinstalled the latest version of Anaconda
[ ] Tried the other applicable steps from the Troubleshooting Guide

[ ] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
What steps reproduce the problem?

What is the expected output? What do you see instead?
Paste Traceback/Error Below (if applicable)

PASTE TRACEBACK HERE

Versions

Spyder version:
Python version:
Qt version:
PyQt version:
Operating System name/version:

Dependencies

PASTE DEPENDENCIES HERE

Hey @6713sourav, thanks for reporting. Spyder doesn't have facilities to directly manipulate Excel files, sorry.
You can ask how to do that using the Pandas library here:
https://stackoverflow.com


Fix multiple default exports in Datepicker

Found the build breaking due to multiple default exports in datepicker component, while I was about to make a change in App Drawer. This is a fix to the issue :
Error Logs from travis :
SyntaxError: components/date_picker/index.js: Only one default export allowed per module. (19:0)
  17 |
  18 | const ThemedDatePicker = themr(DATE_PICKER, theme)(DatePicker);
> 19 | export default ThemedDatePicker;
     | ^
  20 | export { ThemedDatePicker as DatePicker };
  21 |
  22 | const ThemedDatePickerDialog = themr(DIALOG, theme)(DatePickerDialog);

Thanks!


[8.x] Allow global override of console confirm via handler

This gives developers a more convenient way to globally override the actions taken by confirmToProceed on console commands, with a handler.  The benefit here is developers can set a handler to change the behavior rather than manually overriding/aliasing the migration and queue commands that come with the framework.
The backstory for how I will be using this.  At my company, we maintain multiple tiers that are technically all production but that have different environment variables production, beta, and latest these tiers share the same production database but are used to do things like give external developers access to beta APIs or canary a release by routing a subset of site traffic to a tier, internal dogfooding, etc.  We want a more convenient way to ensure dangerous console commands like queue:clear, migrate:* are treated with the same reverence as production without having to alias/override them in every vendor package.

Thanks for your pull request to Laravel!
Unfortunately, I'm going to delay merging this code for now. To preserve our ability to adequately maintain the framework, we need to be very careful regarding the amount of code we include.
If possible, please consider releasing your code as a package so that the community can still take advantage of your contributions!
If you feel absolutely certain that this code corrects a bug in the framework, please "@" mention me in a follow-up comment with further explanation so that GitHub will send me a notification of your response.

@taylorotwell I completely understand the reluctance to include more code that would require maintenance. And while this is a feature request, not a bug I, unfortunately, don't see a clean way to do this without this change. Aliasing doesn't work on traits, as far as I can tell, composers exclude-from-classmap doesn't appear to work either. Without this change, the only option appears to be manually extending and aliasing every command class that uses the ConfirmableTrait.


Update to version 63

This issue tracks the upgrade progress to Chromium 63, and related discussion.
Here are the steps necessary towards the first release in the upgrade process (in approximate order):

[ ] Include new patches from Debian (update is available, @Eloston is working on this)
[ ] Include new patches from Inox (from branch feature/63 or a release, @Eloston is working on this)
[ ] Include (or upgrade) patches from Iridium (update to Iridium 2017.11, @Eloston is working on this)
[ ] Update ungoogled-chromium's own patches (#303 and other changes)
[ ] Informal testing (e.g. checking for major regressions, testing new features)
[ ] Publish new release and binaries

After the initial release is published, this issue will remain open for general discussions about upgrading platforms that are not working in this new version. Specific issues should be posted in a separate issue.

@Eloston will version 63 include the fixes for building Mac OS (issue 302)?

@stfnhrrs Yep. It's in the milestone, so it's safe to assume it will be worked on during the version 63 development cycle.

Because of #247, #248, and #329, I am ceasing development of 63 in favor of 64.


Allow subject sets to be filtered by metadata

Introduced metadata filters for subject sets via a param in the form
metadata.field
Adds a gin index to subject sets

LGTM after a rebase


Generate Certificate on Client

PR Fixes:

1 Renders the certificate on browser as ( PDF & PNG )
2 useCert hook handles the certificate to render on client.

Screencast
Screencast from 11-05-24 11:48:05 AM IST.webm
Resolves #545
Checklist before requesting a review

I have performed a self-review of my code
I assure there is no similar/duplicate pull request regarding same issue

@hkirat can you check this out..

Cool, I've raised a PR #554 for the same 👊


Adds PostgresSQL and Redis support

Fixes #28
Please review the PR and suggest changes , I guess the required changes are a bit more complicated than the referenced PR.

You copied the code from upstream https://github.com/pretix/pretix/blob/3b98d87a26d02f3dd72a28452421ce42b6bc6620/src/pretix/settings.py#L126-L143, which is illegal.
You may not understand the scope of the work. eventyay-tickets is a fork of pretix, but at the time pretix changed its license. It means that any code you see in pretix which is later than the forking time, is under license which is not compatible with eventyay-tickets, and eventyay-tickets is not allowed to copy.

@hongquan , Apologies for the violation , I wasn't aware of it and was simply trying to follow the linked PR for resolving the issue. I will keep that in mind for resolving further issues. Thanks!


Add Codecov action

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@f3898f3). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff            @@
##             main        #1   +/-   ##
========================================
  Coverage        ?   100.00%
========================================
  Files           ?         2
  Lines           ?       101
  Branches        ?        20
========================================
  Hits            ?       101
  Misses          ?         0
  Partials        ?         0

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 f3898f3...68a803b. Read the comment docs.


Global rename does not handle templated classes

@hokein mentioned that the global rename is not working on templated classes, which seems really important to fix for our users to fully enjoy renaming feature. I'm guessing the required changes would modify the index (and potentially make it bigger).
See corresponding FIXME for more information. A starting point would be just making the error message more informative.

+1 to allow it work for templated classes.
I think blacklisting these templates may be too strict -- the reason is that we will miss references of explicit template specializations. To make it work, we need to extend our index.
Instead of blacklisting them, it seems reasonable to allow renaming them with this known limitation, I think most templated classes don't have explicit specializations in practice.


Added new shortcuts

Added two missing shortcuts: CTRL + D for the next occurence of the selected text and CTRL + M for jumping to the matching brace.

@jaredwilli could you please take a look?

my bad, i've not been getting notified about PRs on this...
lgtm, thanks !!


Add Theme Template to Konsole

I have used for a while your tool for color schemes on  jetbrains, and i have to manually convert some schemes to be used on my terminal on KDE.
Would you please consider add the template to KDE Konsole colorscheme file.
Thanks in advance

Thanks for the heads up, @Dragonxero . Do you have a link to the KDE Konsole color scheme documentation?

I think this should be the starting point.
https://docs.kde.org/stable5/en/applications/konsole/index.html

@mjswensen this is as easy as generating plain-text, .colorscheme files.
Examples:

https://github.com/phiggins/konsole-colors-solarized/blob/master/Solarized Dark.colorscheme
https://store.kde.org/content/show.php/Monokai+konsole+colorscheme?content=154765
https://github.com/nareshv/kde-konsole-colorschemes

Btw, this theme format is also compatible for KDE Plasma 4 (current version is 5.18)

Thanks for the links, @reinhart1010 ! Will get this out as quickly as I can.

@Dragonxero @TopHatCroat @layoaster @KristobalJunta @reinhart1010 this is now available for the CLI (npm package: @themer/konsole) or in the web UI.


Mark/8454 ant zip

Description

Checklist:

[ ] Set target branch to main (current release) or v.next (next release)
[ ] Request a reviewer
[ ] Assign a reviewer
[ ] Tag reviewer in comment

Thanks @D-R-Smith not sure how I missed those, but they've certainly gone now!


preferences: Adjust display-name if windows.11.virtio

The display name "Microsoft Windows 11 (virtio)" containing the "virtio" is more consistent.

What this PR does / why we need it:
The PR sets the display-name of the  windows.11.virtio preference to a more consistent name
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

Adjust display-name if windows.11.virtio

Thanks!
Can you do it for 2k19_virtio too? Also in order to satisfy the CI you need to run make generate and commit the changes too.


Feature/prettifying

@trevorsenior
Closes #56
At least, good enough for now? Eh. 💅
Editor colors are based on those that David designed for the WT blog, back in the day. If we hate the line numbers, I can nix them.
There are some minimal JSX changes to improve semantics a bit and add headers for additional docs. I can remove the dynamic headers if we'd rather leave that 100% up to the markdown file content.
Saving any accessibility fixes for a different round.

It's.... beautiful. :heart_eyes_cat:


S3 Customization to handle status code 200 Errors

Related to https://github.com/awslabs/smithy-kotlin/issues/323
Relevant information from @aajtodd copied from related ticket:
Here is what Go does for status code 200 Errors:
https://github.com/aws/aws-sdk-go-v2/blob/main/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3ErrorWith200Status.java#L18
https://github.com/aws/aws-sdk-go-v2/blob/d05dd9b08d180c3696c33130548881966b56ea29/service/s3/internal/customizations/handle_200_error.go#L33
Once 200 errors are properly parsed, ensure that standard retry logic properly retries on InternalError as noted in the comment below.

new_retries SEP recently added
200         | InternalError                          | s3

Apparently DeleteObjects can also return a 200 error response: https://github.com/awslabs/aws-sdk-rust/issues/873
Likely any control plane API is able to return a 200 error response.


Update dependencies, package manager (yarn) and update readme

:tada: This PR is included in version 0.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Added decodeURIComponent on routes sent to the /cache/clear endpoint

/cache/clear Express route breaks when trying to clear service with a version route, e.g. /v1/users.
Since I have to send the version path as URL encoded string, I've wrapped the target path with decodeURIComponent in /clear/single/:target & /clear/group/:target endpoints.

Coverage remained the same at 92.991% when pulling a2f6560d2a63e000ad89ea92c085dbebd9991d71 on LushaTeam:master into db1c3ac6f3eb8da0b573c43da019b3a484408300 on idealley:master.

Thank you for the pull request. I am checking this now. Sorry for the late response, somehow I do not get the notification for this repo. I will have to check that too ;)


Added Docker Courses

What does this PR do?

Updated two free docker courses playlist for DevOps.

For resources

Docker Playlist which is completely begginers.

Description

Two Courses Added:

Automation Step By Step Docker Playlist [its a short tutorial and covers all concept]
Docker by IIEC community [ its a very detailed tutorial on Docker and has all the concepts covered in detailed]

Why is this valuable (or not)

Yes, Its valuable obviously for a Begginer or intermediate or advanced level.

How do we know it's really free?

Its a youtube playlist which is completely free to watch and also I have gained all of the Docker knowledge from these two tutorials and hence I thought to add it to the list.

For book lists, is it a book?

NA

Checklist:

[Yes] Not a duplicate
[Yes] Included author(s) if appropriate
[Yes] Lists are in alphabetical order
[Nope] Needed indications added (PDF, access notes, under construction)

could you add an attribution and fix the linter errors?

could you add an attribution and fix the linter errors?

how can i do that??

Closing this as the resources are already in the repository.


1.8.3 Hotfix release checklist

[X] Dapr maintainer(s) communicate out the discovery of an issue that requires a hotfix and the reason why to the Discord Maintainers and Release channels. Hotfix is one of categories below:

[ ] Security vulnerability
[X] Regression that does not have a work around: https://github.com/dapr/dapr/pull/4942
[ ] Broken mainline scenario that has a missing test case

[ ] Create the v1.8.3-rc.1 Hotfix release (code changes) and test it
[ ] Create v1.8.3-rc.1 Tag [@]
[ ] Performance tests passing [@]
[x] End to End tests passing on Linux and Windows [@]
[x] New test case written to catch future occurrences:  #4942
[ ] Notify users to try RC1
[ ] Update the longhaul tests to use 1.8.3-rc.1 [@]
[x] Write release notes [@italypaleale]: https://github.com/dapr/dapr/pull/4942
[x] Review release notes [@artursouza or @yaron2 ]
[x] Create v1.8.3 Tag [@artursouza or @yaron2 ]
[x] Update the documentation: Latest version & versions in supported releases [@greenie-msft or @nyemade-uversky ]
[x] Push new tag in installer-bundle repo. [@shivamkm07]
[x] Announce the hotfix release on Discord Announcements channel [@nyemade-uversky ]

Installer bundle 1.8.3 released: https://github.com/dapr/installer-bundle/releases/tag/v1.8.3

All done


Bump protoc and gRPC versions for generated code

Description
A customer noted a deprecation warning that they got when pulling in this library:
* @deprecated This class is deprecated, and slated for removal in the next Java breaking change
*     (5.x). Users should update gencode to >= 4.26.x which uses GeneratedMessage instead.
*/

@Deprecated
public abstract class GeneratedMessageV3
    extends GeneratedMessage.ExtendableMessage<GeneratedMessageV3> {

When I went and dug into it, we're currently on v25 of protobuf which corresponds to v3.25.x of the java protoc tooling. We want to be on v27, which is the currently-supported version.
There's more information in the support matrix here: https://protobuf.dev/support/version-support/#java
Note
There are breaking changes in the v26 release, which is a version boundary that we're crossing. It seems like most of the changes are related to features of the generated code that most consumers won't be using or aware of, but it may be prudent to make this a major version bump.
Changes

Bump the version of the protoc plugin we're using
Bump the gRPC version that we pull in

Testing
Review. See that things are green.

The builds are still failing - it seems like there are some wires getting crossed around which version of protobuf-java is being used, but I can't figure out the right combination. Gonna come back to this.

I think this is blocked behind the resolution of https://github.com/grpc/grpc-java/issues/11015#issuecomment-2315919862


Acz initial commitments 2024

Opened by mistaken, don't merge!

Opened by mistaken, don't merge! I am closing it!


#1059 Random testThaliNotificationClient test failure

"Bad hostname" test now checks request retries count to perform results
verification instead of 5s timeout (sometimes requests take more than 5
seconds total)

This change is

PR is added to the queue for testing as 1. task. (94a743c)

Hi @chapko, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

PR is added to the queue for testing as 2. task. (043b018)

Test (Success) 86918701 build is completed (94a743c)
See https://github.com/ThaliTester/TestResults/tree/8691870194a743c_fix__1059_chapko/ for the logs

Test<PHONE_NUMBER>a743c(94a743c) has failed
See https://github.com/ThaliTester/TestResults/tree/8691870194a743c_fix__1059_chapko/ for the fail logs

Test (Success) 86918701 build is completed (043b018)
See https://github.com/ThaliTester/TestResults/tree/86918701043b018_fix__1059_chapko/ for the logs

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 409 at r1 (raw file):

      action.start(keepAliveAgent).then(function () {
        t.fail('This action should fail always.');
        finishTest(true);

NB: It's better to split finishTest into two functions like check and finish

Comments from Reviewable

Test<PHONE_NUMBER>3b018(043b018) has failed
See https://github.com/ThaliTester/TestResults/tree/86918701043b018_fix__1059_chapko/ for the fail logs

Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

Comments from Reviewable

Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

test/www/jxcore/bv_tests/testThaliNotificationClient.js, line 409 at r1 (raw file):
Previously, artemjackson (Artyom Stepanishchev) wrote…
> NB: It's better to split `finishTest` into two functions like `check` and `finish`

I've already used it in other test, I will rename it later to `finalizeTest`.

Comments from Reviewable


Login setting visibility

In the log I can see the login in clear text. The problem is, when we use tokens to authorise the CI to run analysis. This token is send als login and is visible in log. This is not fine for security reasons. The login should not be logged in plain text.

not fixed for beginsettings yet


Can't use "Operations" on package

When attempting to use any of the Operations on a new or existing package, clicking on one of the options does nothing.

However, Add/Replace works just fine.
Am I doing something wrong, just being dumb?

Hi,
you need to drag&drop it onto "Operations" on the left side.
It's not your fault, if you did not know how to add the operation. I actually wanted to add a hint label to explain that, but I've not done it so far.
I think it will come in the next update.
Best,
Dominic


Fix command syntax highlight in readme

Q
A

Bug fix?
+

New feature?
-

BC breaks?
-

Deprecations?
-

Fixed tickets

Please rebase your branch against develop

I will create another PR because I did changes from Github UI


[Bug] ECS

I'm getting following error when run ECS;
Running EasyCodingStandard
EasyCodingStandard 9.0.50
   0/505 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░]   0%
In FixerFileProcessor.php line 185:

  Fixing of "src/Command/ApiKey/ApiKeyHelper.php" file by "Symplify\CodingStandard\Fixer\Spacing\StandaloneLinePromotedPropertyFixer" failed: Class "Symplify\PHPStanRules\ValueObject\MethodNa
  me" not found in file /app/tools/04_ecs/vendor/symplify/coding-standard/src/Fixer/Spacing/StandaloneLinePromotedPropertyFixer.php on line 74

In StandaloneLinePromotedPropertyFixer.php line 74:

  Class "Symplify\PHPStanRules\ValueObject\MethodName" not found

check [--fix] [--clear-cache] [--no-progress-bar] [--no-error-table] [--output-format OUTPUT-FORMAT] [--match-git-diff] [-c|--config CONFIG] [--] [<paths>...]

Is this know bug, or any ideas how I can solve this?

Hi, the MethodName object does not exist. We have it in another (incorrect) package.
Fix is on the way

@TomasVotruba Thank you! That was quick reply and fix - Keep up this great work!


Use Module API instead of internal attributes

We have .modules() that iterates recursively over all submodules and .children() that gives you an iterator over the direct children of a module.

Good to know - thanks for the fix!


add double pendulum example and the docs

Codecov Report

Merging #23 (e040ade) into master (7c29024) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master       #23   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            2         2
  Lines           50        50
=========================================
  Hits            50        50

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 7c29024...e040ade. Read the comment docs.


"Support Calls" does load super slow....and throws "infrastructure failed" error

Since July 10th, around 1:00pm Berlin time i experienced a super slow section "support calls". I was showing the Sightcall-Empolis Integration to a prospect. As i know that the transmission of media material from a sight-call into Empolis may take a minute or two i prepared for the demo an hour before. I sent media material upfront to have something on the Empolis side in the "Support Calls" section to work with and convert it into a knowledge article. But i wasn't able to open these previous calls and work with the material due to "infrastructure failure". After 3-4 hours all the material was finally available in Empolis and i could finish the work without showing it to the prospect ... so nothing was lost or misconfigured obviously.
this is the support call i was demoing on (using th eolder account from a colleague, Jan Dreier, because my own account stopped working for some reason):
https://esc-eu-central-1.empolisservices.com/service-knowledge/app/#/external-content/remote-support/c620f80ceb669d9e/view/metadata
It was and is until now still super slow. Can't show this to prospects this way. Can you please check what is going on there. Kind regards, Matthias (from Sightcall<EMAIL_ADDRESS>

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Create github workflow

Will resolve #8

So I've created this workflow but the tests are failing with the following:
tests/system_test.py:12: in <module>
    class FakeDataset:
tests/system_test.py:16: in FakeDataset
    category=OriginCategory.Dataset
/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/enum.py:326: in __getattr__
    raise AttributeError(name) from None
E   AttributeError: Dataset

I looked through the system_test.py and it does appear OriginCategory doesn't actually have a Dataset attribute but I could be reading this wrong. Is this test failing expected?


v2.24.3 - fix size scaling logic

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

moving on to v.2.25.0 instead


Bug: Cannot create rel table group with single group

Kùzu version
v0.4.2
What happened?
kuzu> create rel table group Has(from A to B);
Error: Parser exception: mismatched input ')' expecting {',', SP} (line: 1, offset: 38)
"create rel table group Has(from A to B)"
                                       ^

I realise the whole idea behind table groups is to have multiple from/to pairs, but during development I found it a bit inconvenient to not allow the above while experimenting and evolving a schema.
Are there known steps to reproduce?
No response

Currently there is no way to evolve a REL GROUP schema with ALTER statements. So with regards to this limitation above behavior seems consistent. I think, allowing this would make sense, as soon as we can do ALTER on REL GROUP schema as well. You can give https://github.com/kuzudb/kuzu/discussions/2929 an upvote, so Kuzu teams gets feedback, that this is a more frequently requested feature.


🏰  Certora-02 Don’t allow transfer out of non-supported assets.

This prevents the governance/timelock from transferring out supported tokens from the vault. While there certainly are other ways governance could be malicious, we might was well have this one closed.
Flagged by Certora human auditing.
Contract change checklist:

[ ] Code reviewed by 2 reviewers
[x] Unit tests pass
[x] Slither tests pass with no warning
[ ] Echidna tests pass (not automated, run manually on local)

I'm really confused by what the tests are doing here. When I run:

only the new test - PASS
the entire file - PASS
all tests - FAIL

Our tests are supposed to be separate from each other. But here it's loading from the main fixture and yet getting different behaviors presumably based on other code having run.

I'm really confused by what the tests are doing here. When I run:

only the new test - PASS
the entire file - PASS
all tests - FAIL

Our tests are supposed to be separate from each other. But here it's loading from the main fixture and yet getting different behaviors presumably based on other code having run.

Yep the hardhat snapshot revert doesn't seem to work properly. It has always been like that which is why there are z_ prefixes on some of the files. It's an issue somewhere in ethereum-waffle. I dug into it but couldn't resolve it. It looks like it did the snapshotting correctly so I wonder if it goes deeper to the evm implementation.

Yep the hardhat snapshot revert doesn't seem to work properly. It has always been like that which is why there are z_ prefixes on some of the files. It's an issue somewhere in ethereum-waffle. I dug into it but couldn't resolve it. It looks like it did the snapshotting correctly so I wonder if it goes deeper to the evm implementation.

Fix for this here https://github.com/OriginProtocol/origin-dollar/pull/520 :)

Fix for this here https://github.com/OriginProtocol/origin-dollar/pull/520 :)

Thanks @tomlinton, that fixed the tests.

Thanks @tomlinton, that fixed the tests.


Nuget Package Creation - v1.9.26

'abhinavminhas/replace-tokens' action version update.
Gmail API dependency update ('<IP_ADDRESS>87' -> '<IP_ADDRESS>87').
Nuget package creation - v1.9.26.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 99.48%. Comparing base (578518b) to head (b614f33).
Report is 75 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #76   +/-   ##
=======================================
  Coverage   99.48%   99.48%
=======================================
  Files           1        1
  Lines         781      781
  Branches      183      183
=======================================
  Hits          777      777
  Misses          2        2
  Partials        2        2

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


LXC execdriver compatibility with recent LXC versions

Simple carry of #12934.
Closes #12912.

LGTM

LGTM


Proxy support for RTM Client

Does anyone modify RTM client for proxy support. I have proxy setup between my client and slack channel. I tried to do it in RTMClient class but websocket does not have any method to handle the proxy. Please share your code..

It looks like jslack uses OkHttp. Construct an OkHttpClient with your proxy settings according to http://stackoverflow.com/questions/37866902/okhttp-proxy-settings and then call Slack.getInstance(SlackHttpClient(client)) to create a custom slack client.

RTMClient doesn't use ok-http. Unfortunately, the WebSocket implementation doesn't support using proxy so far. https://github.com/seratch/jslack/blob/master/src/main/java/com/github/seratch/jslack/api/rtm/RTMClient.java

Hello, sorry for replying to an old thread, however, does the RTMClient support proxy as of now?

Not yet supported.

I looked at this a little bit before and thought that it would be possible to support proxy. But I need more time. If someone knows very well about Project Tyrus, I would love to hear some advice on how to properly implement it in this project.

Any update on this?  I may have similar issue that I'm in an internal network which requires special http proxy to call external address like slack. (both RTM and Web API）

btw, can I use jvm level proxy for now as alternative solution?
https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

@tutufool probably, no. could you try it out?

will the fix available soon in next release?

@tutufool Yes, I've shipped jSlack version 3.4.1 that includes the fix today. Could you try the version out when you have a chance? https://github.com/seratch/jslack-maintenance-releases/pull/4

cool, thanks a  lot !


traits don't like large numbers

I was trying to set a trait to the value of Date.now() but was getting 500 errors:
Here you can see I set the trait testDate and get a 500 error but if I reduce the size by / 1000 it doesn't produce the error and the trait gets set.

gz#226

This is a bit of a legacy issue but one that is very difficult to solve technically on our side without a major impact on the API. The reason this is happening is because integer value traits are currently stored as 32 bit integers. We could increase this to 64 bit, however, we'd just be kicking the can a little further down the road so I am reluctant to do this.
The proper solution is to always store the value as a string and get the clients to send the correct value type and do the conversion as required, however, this is a major overhaul of the API (see #1667).
For the time being, as a workaround, users should either send the data as a Float or a string and handle the conversion themselves.
I am going to resolve this issue as the full solution is already covered here #1667.


'ValueError'  while loading  mtcnn detector npy files

Do you have any idea why this is happening.
I checked, file exists.
System Specs:
Ubuntu 18.04
python 3.6.7
numpy 1.16.4
Full code:
jumabek@dlone:~/workspace/InsightFace-v2$ python
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.load('mtcnn/weights/pnet.npy')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jumabek/.local/lib/python3.6/site-packages/numpy/lib/npyio.py", line 447, in load
    pickle_kwargs=pickle_kwargs)
  File "/home/jumabek/.local/lib/python3.6/site-packages/numpy/lib/format.py", line 696, in read_array
    raise ValueError("Object arrays cannot be loaded when "
ValueError: Object arrays cannot be loaded when allow_pickle=False

np.load('mtcnn/weights/pnet.npy',**allow_pickle=True**)
solved the issue


update readme images

Codecov Report

Merging #7 (bdf8371) into main (dd8b191) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #7   +/-   ##
=======================================
  Coverage   76.54%   76.54%
=======================================
  Files           3        3
  Lines         162      162
=======================================
  Hits          124      124
  Misses         38       38

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 dd8b191...bdf8371. Read the comment docs.


RFC: Double click to edit arrows

Repositioning arrows is still kind of annoying in Excalidraw. I know we want to one day fix this by having a constraint system of some kind, but for now this solves the problem of minor repositioning of arrows with minimal effort.
This PR lets you double-click on an existing arrow, modify the last point in the arrow, and add new ones if you want.

In my use case, I often want to modify the intermediate points. I understand what you mean by minimal effort, but repositioning the last point only doesn't help my case...
This would require much effort, but I'd expect something like this:

yeah, that'd definitely be better. i can take a swing sometime when i have more time :) in the meantime, i think this is a step in the right direction? lmk what you think

Honestly, double clicking is only confusing and I might do it by mistake.

Closing in favor of https://github.com/excalidraw/excalidraw/pull/1616


docs: all in one deployment

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: ngruelaneo:x: pmilaneoYou have signed the CLA already but the status is still pending? Let us recheck it.

Please @pmilaneo, can you merge main into your PR before I give a review? Thanks

I do not have the rights to merge, apparently. Maybe someone with writing rights can do it or we should find another way.


Invalidate queries when creating a new tweet

what does this mean?

Means, we should refetch when creating the tweet, such that it shows up instantly. Is done now


Change the current "dummy" preocedure that does not handle bytes

The current approach just reads overlapped bytes into a discarded variable _:
https://github.com/lmmx/range-streams/blob/8e841ea6a9def7f3cbbdf67dd6b44412e2421216/src/range_streams/overlaps.py#L51
https://github.com/lmmx/range-streams/blob/8e841ea6a9def7f3cbbdf67dd6b44412e2421216/src/range_streams/overlaps.py#L70
Replace this with the proper behaviour:

Overlaps at the head of a pre-existing RangeResponse are reduced and chained
If a new range overlaps at the 'head' of a pre-existing RangeResponse, the new range is shortened by the length of the overlap and the bytes that would have been requested are instead taken from the pre-existing head (note: only if the head is unconsumed) by splitting the iterable.

To do so, the standard access to the iterable is 'gated' by an attribute accessor which redirects to the split iterable if one exists.

Overlaps in the body of a pre-existing RangeResponse are treated equivalently to overlaps at a pre-existing head ('head' is simply understood to be the earliest unconsumed byte in the range).

By reading and discarding the head overlap, the current approach 'cheats' by simply removing the overlap (by definition an overlap is not consumed, so when it's deliberately consumed the overlapping sub-range is 'freed' for overwriting by the new range)
It is wasteful to "cheat" in this way as the stream can be left unconsumed and chained onto the current stream without re-requesting.
To illustrate with a simple example: let o_rng = [2,5) be the new, overlapping range and s_rng = [3,7) be the original stream's range.
There is overlap in the intersecting range i_rng = [3,5) (i.e. two positions: 3 and 4).
The current approach is to retrieve the RangeResponse corresponding to [3,7) (we will assume not consumed at all) with rng_response = stream[3].

The important downside to note is that consuming the other range will "break" the overlapped range

continued from #12:
The current dummy behaviour of reading into a dummy variable _ is undesirable and must be changed to execute overlap handling in-keeping with streaming requests

Consider the 4 illustrative ranges:

A: Original [3,7)
B: [2,5) overlapping A's head
C: [5,9) overlapping A's tail
D: [4,6) overlapping A's midbody (treated equivalently to overlap at A's head)

TBC

To clarify the design here, see the docs for islice:

itertools.islice(iterable, stop)
itertools.islice(iterable, start, stop[, step])
Make an iterator that returns selected elements from the iterable. If start is non-zero, then elements from the iterable are skipped until start is reached. Afterward, elements are returned consecutively unless step is set higher than one which results in items being skipped. If stop is None, then iteration continues until the iterator is exhausted, if at all; otherwise, it stops at the specified position.

While this seems like a good replacement for reading in the file, it also seems likely that for a stream, it won’t so much “skip” the preceding bytes before the desired range to start at, but “skip through” them, which for streamed data may in fact mean downloading a large file:
To see this, use the URL of a large file, like tqdm-4.61.1-pyhd3eb1b0_1.conda from the Motivation docs page.
Here’s a demo of islice on a range iterator from httpx:
import httpx
import range_streams
from ranges import Range

c = httpx.Client()
u = range_streams._EXAMPLE_URL
rng = Range(3,7)
s = range_streams.RangeStream(byte_range=rng, url=u, client=c)
s.active_range_response._iterator

Perhaps then change #4 so the principle becomes “handle your file precisely: no repeat access to the same range will be permitted”

Stream principle should be: a stream can get its tail marked as "go no further" but a tail cannot be "reused" (as cannot islice a stream) i.e. "can prevent a stream going forward but cannot go back".

Tail mark can redefine a range response's end point [effectively] so as to "prevent a stream from coming forward" (in the tail-overlapped case: option C above).

In theory you could 'reassign' the stream iterator of a head-overlapped range (option B above) but unless this range was 'sliceable' (which they're not) you then couldn't use the rest of the range until the new one had fully streamed, 'locking' it until it was 'passed back' once the new one was consumed.

This is a complex mechanism with no benefit over simply requesting this range anew

So instead of reading the bytes to discard a head like this, I suggest just overwriting it entirely as the shortened range (make a fresh request), no actual data is downloaded until read. Close/delete old one.

Could equally envision an even simpler solution: when a new range overlaps an existing one, simply dispose of the old one

'Ruthless' mode ("pruning") ⇢ default: "replant", ruthless: "burn".
Could also add a 3rd option, to error upon reassigning a range rather than handling overlap: 'no overlaps allowed' ("strict").
Since the 'strict' option would override whatever setting was given for the pruning level, maybe give as an IntEnum:

0 = replant; 1 = burn; 2 = strict

To outline all the possible options, consider the ranges with termini as letters from a to i:

rng = [c,g]

(3rd) if end in rng is True:

H = [a,d]: request [a,d] and [d,g] ; redefine (overwrite) [c,g] as [d,g]

(2nd) if start in rng is True:

T = [e,h]: request [e,h] ; tail mark [c,g] as [c,e]
M = [d,f]: request [d,f] ; tail mark [c,g] as [c,d]

(1st) if rng in HT is True:

HT = [b,i]: request [b,i] ; delete [c,g]
HT2 = [a,g]: request [a,g] ; delete [c,g]
HT3 = [c,h]: request [c,h] ; delete [c,g]

Note that logically the checks would proceed in the reverse order to how they're listed here (hence written as: 3rd, 2nd, 1st)
Note how "overlapping at the tail" is an equivalent to "overlapping at the midbody". In fact, all that matters is that the overlap starts in the midbody. If not then it must end in midbody (re-request not tail mark). When the start is at or before the existing start and athe end is at or after the existing end request and delete. and if start/end match existing ⇢ no-op.


bpf: Remove use of <linux/in.h>

This allows to include the bpf/include/linux/*.h copies from code which
also includes <netinet/in.h>
Signed-off-by: Thomas Graf<EMAIL_ADDRESS>

I found a different way to solve this, closing this for now