Scrollbar with isAlwaysShown set to "true" does not update thumb height upon list content change

See Following example:
import 'package:flutter/material.dart';

Future<void> main() async {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Material(child: TestList(title: 'Flutter Demo Home Page')),
    );
  }
}

class TestList extends StatefulWidget {
  TestList({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _TestListState createState() => _TestListState();
}

class _TestListState extends State<TestList> {
  ScrollController _controller = ScrollController();

  List<String> allItems = [];
  List<String> visibleItems = [];

  Future<void> load() async {
    setState(() {
      visibleItems = allItems = [for (int i = 0; i < 100; i++) "item ${i}"];
    });
  }

  void search(String value) {
    setState(() {
      visibleItems = value.isEmpty ? allItems : allItems.where((item) => item.contains(value)).toList();
    });
  }

  @override
  void initState() {
    super.initState();
    load();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        TextField(onChanged: search),
        Expanded(
          child: Scrollbar(
            isAlwaysShown: true,
            controller: _controller,
            child: ListView.builder(
              controller: _controller,
              itemExtent: 70,
              itemCount: visibleItems.length,
              itemBuilder: (_, index) => Container(child: Text(visibleItems[index])),
            ),
          ),
        ),
      ],
    );
  }
}

User enters text in text field, list is updated to show only items matching search criteria. When user searches list is updated so it might have less items.
Actual behavior: scroll thumb is always of the same size.
Expected behavior: scroll thumb height should be always updated taking item count into account.

[✓] Flutter (Channel stable, 2.0.1, on Linux, locale en_US.UTF-8)
    • Flutter version 2.0.1 at /home/kernel/work/common/flutter
    • Framework revision c5a4b4029c (2 days ago), 2021-03-04 09:47:48 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 11.0.0-2
    • cmake version 3.16.3
    • ninja version 1.10.0
    • pkg-config version 0.29.2

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[✓] IntelliJ IDEA Ultimate Edition (version 2020.1)
    • IntelliJ at /home/kernel/work/common/idea
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin version 201.7223.99

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Linux
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.82

! Doctor found issues in 2 categories.

@radzish
Tried your code sample on latest stable. If I understood this issue correctly, if we search item 0 which shows only 1 matching result, the scrollbar height is same if we search for item 5 which shows lot of search results also showing same scrollbar height.

Is this a correct interpretation of the issue ?

This may be the same issue as https://github.com/flutter/flutter/issues/75613
The Scrollbar can only update right now when it receives a scroll notification, so if scrolling has not occurred, it does not have new scroll metrics to update with.


Remove deprecated sql_builder.py.

This utility module is no longer desired.

It looks like you need to fix the configured email address in git config, and then rewrite your commit. It's currently defaulted to <username>@<your-machine-hostname> which is why the CLA bot is confused:
https://github.com/youtube/vitess/pull/2037.patch

LGTM


Question: Support for Workers

Hi 👋
Thanks for ✂ knip, it's an awesome tool.
We're currently running into some false-positives by code that is used in a file that is only imported from an entrypoint via a worker. The structure is like this:

entrypoint index.ts, imports foo.ts
foo.ts creates a Worker with something like new Worker(new URL('./path/to/worker.js', import.meta.url))

then all imports that are only used inside that worker are shown as unused by knip. Just wanted to know if this is something that should generally work, or maybe that's a missing feature? If it should work already, I could try to whip up a standalone reproduction.
Thanks 🙏

That's a missing feature. Actually two: argument(s) of Worker and URL are not statically resolved and added as entry paths yet. Conditions apply... sounds feasible!
In the meantime you could add ./path/to/worker.js as an entry file.

In the meantime you could add ./path/to/worker.js as an entry file.

Thanks 🙏 . It's a bit complicated for us, as we generate the entry points from typescript path mappings, but yes, that would work 👍

Maybe you can use a dynamic knip.ts and somehow pull those entry points in.

There's a snapshot dist-tagged newurl available (e.g. npm install knip@newurl).
Need to tinker a bit more about how to move forward with this, since import.meta.url works differently in browsers. And there are more APIs that accept a file path. But for now I think this is a safe start: only new URL('script.js', import.meta.url) is picked up (not Worker).
Please let know how this runs in your project(s)!

No worries, it's a useful feature to add either way.
Any chance you could share that commit?

I will try to get you a standalone reproduction

here's the reproduction, I hope I got it right:
https://github.com/TkDodo/knip-workers
with v2.25.2, I'm getting:
Unused files (2)
packages/packageA/src/components/test-worker.ts
packages/packageA/src/components/types.ts

with v0.0.0-newurl.0, I'm getting:
Unused files (2)
packages/packageA/src/components/test-worker.ts
packages/packageA/src/components/types.ts

Unlisted dependencies (1)
test-worker  packages/packageA/src/pages/index.tsx

Thanks a lot for the rep(r)o, Dominik.
This makes it very clear how brittle support for the feature as requested would be:

How to know whether the URL with import.meta.url is used in client and/or server?
In the browser, import.meta.url represents the current URL, how to find the corresponding file during static analysis?
Build steps, module resolution and framework specifics complicate things further.

In the example it would be found if test-worker would be test-worker.js and relative to the file it's referenced from (index.tsx). Also, in this particular case it's not clear how to resolve test-worker to src/components/test-worker.ts.

// import.meta.url: URL in browsers, file: protocol in Node.js etc.

Conditions apply... sounds feasible!

Perhaps weird to quote myself, but the conditions are that this would only be feasible in server environments where the target file is statically resolvable, and at this point Knip is not aware of these conditions. So with that I'm going to close this issue as "wontfix". Happy to be convinced otherwise :)
I would love to be able to have Knip automatically find such entry points, but for now I can only recommend to add such files as an entry path in the Knip config manually.


NpmScriptRunner.LaunchNodeProcess can't locate npm, but it exists

I have installed node and npm. When i executing project aspnetcore-spa project from command line or VS, it working normally. When executing published (dotnet publish -r win-x64) version on same machine, in browser i have error: Ensure that 'npm' is installed and can be found in one of the PATH directories
PS C:\Program Files\nodejs> ls
Directory: C:\Program Files\nodejs
Mode                LastWriteTime         Length Name

d-----       07.05.2018     12:21                node_modules
-a----       29.03.2018     23:06       22832792 node.exe
-a----       11.02.2018      1:08            702 nodevars.bat
-a----       11.02.2018      1:08           8997 node_etw_provider.man
-a----       11.02.2018      0:08           4974 node_perfctr_provider.man
-a----       11.02.2018      1:08            867 npm
-a----       11.02.2018      0:08            483 npm.cmd
-a----       29.03.2018     22:37            867 npx
-a----       29.03.2018     22:37            483 npx.cmd`
Error details:
[1] Ensure that 'npm' is installed and can be found in one of the PATH directories.

Stack trace:
Microsoft.AspNetCore.NodeServices.Npm.NpmScriptRunner.LaunchNodeProcess(ProcessStartInfo startInfo)
Microsoft.AspNetCore.NodeServices.Npm.NpmScriptRunner..ctor(string workingDirectory, string scriptName, string arguments, IDictionary<string, string> envVars)
Microsoft.AspNetCore.SpaServices.AngularCli.AngularCliMiddleware.StartAngularCliServerAsync(string sourcePath, string npmScriptName, ILogger logger)
dotnet info:
dotnet --info
.NET Core SDK (reflecting any global.json):
Version:   2.1.402
Commit:    3599f217f4
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.17134
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\2.1.402\
Host (useful for support):
Version: 2.1.4
Commit:  85255dde3e
.NET Core SDKs installed:
2.1.104 [C:\Program Files\dotnet\sdk]
2.1.105 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.301 [C:\Program Files\dotnet\sdk]
2.1.302 [C:\Program Files\dotnet\sdk]
2.1.400-preview-009063 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
npm info:
node --version
v8.11.1

I figured it out by removing
<ItemGroup>
    <!-- Don't publish the SPA source files, but do show them in the project files list -->
    <Content Remove="$(SpaRoot)**" />
    <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
  </ItemGroup>

having nodejs in your PATH doesn't necessarily mean npm is available, as the two executables are separate applications. If you open a new cmd/powershell window and try npm -v you'll most likely get an error saying the command doesn't exist.
If npm is available in your PATH, the entry should look more like: C:\Program Files\nodejs\node_modules\npm\bin
You can add this to your PATH yourself and it should hopefully fix your problem.
I'm afraid removing the ItemGroup section of the csproj doesn't actually address your npm and PATH issues, as it actually makes sure source code (and the very large node_modules folder) aren't copied with the rest of your built application. I'd suggest you add this back in.
It's quite possible things started working because you perhaps restarted your terminal/editor/machine and a freshly updated PATH variable was pulled in with the correct npm path. That sometimes happen if you've just freshly installed Node.


publish<EMAIL_ADDRESS>

Requested by: @sl0thentr0py
Merge target: (default)
Quick links:

View changes
View check runs

Assign the accepted label to this issue to approve the release.
Leave the #retract comment under this issue to retract the release (original issuer only).
Targets

[ ] gem
[ ] registry
[ ] github

Targets marked with a checkbox have already been executed.  Administrators can manually tick a checkbox to force craft to skip it.

@stephanie-anderson rdy


Add iteration with key information when using $hash_concat

Fix https://github.com/paritytech/substrate/issues/4362
When iterating on a storage_map which use twox_64_concat we must be able to get the key alongside the value. This PR create a new function on StoragePrefixedMap to make it possible.
In future PR:
DoubleMap::iter_prefix (which iter on all the second key associated to one first key) can't iterate with key information yet. I will do in a following PR
Additionnal notes
The fact the the iteration stop immediately if a value fail to decode was made to follow the same behavior of StoragPrefixedMap::iter(). Though maybe we should move both implementation to just ignore failed to decode value.
Alternative implementation
If having () instead of key when the hasher doesn't give information is too confusing we could also go in another direction by making such function available with a where statement.
Though to do so I would actually prefer merging StorageMap and generator::StorageMap and having the function iter_with_info()... where Hasher: HasherWithInfo.

This is already implemented in my PR.

partially implemented in #5226
and superseeded by https://github.com/paritytech/substrate/pull/5335


Relative paths not supported for SSH Tunnel Private Key

Description
DBeaver doesn't support using relative paths relative to the home directory (e.g. ~/.ssh/key.pem) on macOS.
DBeaver Version
Community Edition Version <IP_ADDRESS>310081633
Operating System
macOS Ventura 13.5.1
Database and driver
N/A
Steps to reproduce
No response
Additional context
Using ${HOME}/.ssh/key.pem also works, but that is way less intuitive.

@hfhchan-plb Thank you for the report


Fixed Select field rendering bug.

Current version of backbone-forms doesn't render Select fields because it fails with error:
TypeError: html is undefined.

Needs tests still.

Note to self - can reassign $ using jQuery.noConflict() - is this possible inside a qunit test?


Allow specific query execution

Currently, the query tab only allows execution of all queries (eg. separated by ;) within the same window.
IMHO Postico has a very nice way of handling this - the query tab allows for multiple statements, and you are within a statement (cursor somewhere within a specific statement), the statement is slightly highlighted and you can just run that specific statement. As a user, most of the times I have multiple queries and usually just want to run one of them, and I do using the shortcut for execution (CMD + Enter on macOS).
Currently, I'd have to have multiple query tabs which forces the user to (1) have a single statement per tab and (2) manage several tabs with simple queries each.
The feature request is two fold:

Allow for "statement-aware" query execution
Allow for "statement-aware" execution shortcut

Would be happy to contribute to this.
Thanks!

Hi @ccrvlh ,
by now to achieve this in Antares you have to select the desired query and press run (or F5).

Possibly related, #832 includes the request

Execute query with right click context menu in query editor

It has also been requested by other people in the past if I remember correctly.
It seems trivial but with the editor library used (Ace Editor) it is not so easy to get the line the cursor is on.
I will still try to look at it again.


knowledge - Ingestion fails with "duplicate key value violates unique constraint" error.

Steps to reproduce the problem:

Create an agent with knowledge from Notion .
Once all files are synced , use "Ingest All" to ingest all the files.

Sometimes ingestion fails with "duplicate key value violates unique constraint" error.

I have not seen this issue reproduce recently.


[SPARK-33145] [WEBUI] Fix when Succeeded Jobs has many child url elements,they will extend over the edge of the page.

What changes were proposed in this pull request?
In Execution web page, when Succeeded Job(or Failed Jobs) has many child url elements,they will extend over the edge of the page.
Why are the changes needed?
To make the page more friendly.
Does this PR introduce any user-facing change?
No
How was this patch tested?
Munual test result shows  as below:

Can one of the admins verify this patch?

Can one of the admins verify this patch?

cc: @sarutak @gengliangwang

ok to test

@akiyamaneko Thanks for the improvement!
Could you add the screenshot after fix in the PR description?

Test build #129892 has started for PR 30035 at commit db61218.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34497/

I have attached the screenshot, or you can vist fix-screenshot

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34497/

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34497/
Test PASSed.

Thanks, merging to master

Test build #129892 has finished for PR 30035 at commit db61218.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129892/
Test PASSed.


ACL columns should be indicated between " on the documentation or equals method changed to equalsIgnoreCase

The documentation at http://static.googleusercontent.com/media/www.google.com/en/us/support/enterprise/static/gsa/docs/admin/connectors/40/404/DeployingtheConnectorforDatabases.pdf should indicate the alias between " for
GSA_PERMIT_USERS, GSA_DENY_USERS, GSA_PERMIT_GROUPS, GSA_DENY_GROUPS and GSA_TIMESTAMP to guarantee the upper case, because the DatabaseAdaptor class uses equals instead of equalsIgnoreCase. Another option is to change the equals method to equalsIgnoreCase. It's simple but needed.

This needs to be looked at further, but I wanted to comment for later that quoted identifiers are not always uppercased. This is DBMS and configuration specific, and can be checked (probably not conclusively) in DatabaseMetaData. Secondly, it is possible to configure databases to be case-sensitive in identifiers (SQL Server is a well-known culprit), and equalsIgnoreCase may not always be the right thing to do, either.

Right.
Probably the best choice is a documentation update explaining that the identifiers need to be uppercased
independently of the way.
Thank you @wiarlawd !


Add documentation generation examples for diplodoc.com/en/

Description
Add documentation generation examples for diplodoc.com/en/
Possible pipeline

Add method
Add documentation attributes
Generate documentation: method description
LLM generate example for SDK call in separated file
auto check this file

Requirements

add maximum fields in entity example

Example
Documentation example in JS
BX24.callMethod(
    "sale.cashbox.handler.add",
    {
        "CODE": "restcashbox01",
        "NAME": "REST-касса 01",
        "SORT": 100,
        "SUPPORTS_FFD105": "Y",
        "SETTINGS":
        {
            "PRINT_URL": "http://example.com/rest_print.php",
            "CHECK_URL": "http://example.com/rest_check.php",
            "HTTP_VERSION": "1.1",
            "CONFIG":
            {
                "AUTH": {
                    "LABEL": "Авторизация",
                    "ITEMS": {
                        "KEYWORD": {
                            "TYPE": "STRING",
                            "LABEL": "Кодовое слово"
                        },
                        "PREFERENCE": {
                            "TYPE": "ENUM",
                            "LABEL": "Множественный выбор",
                            "REQUIRED": "Y",
                            "OPTIONS": {
                                "FIRST": "Первый",
                                "SECOND": "Второй",
                                "THIRD": "Третий",
                            }
                        }
                    }
                },
                "INTERACTION": {
                    "LABEL": "Настройки взаимодействия с кассой",
                    "ITEMS": {
                        "MODE": {
                            "TYPE": "ENUM",
                            "LABEL": "Режим работы с кассой",
                            "OPTIONS": {
                                "ACTIVE": "боевой",
                                "TEST": "тестовый"
                            }
                        }
                    }
                }
            }
        }
    },
    function(result)
    {
        if(result.error())
            console.error(result.error());
        else
            console.dir(result.data());
    }
);

Approach 2
Write instructions in md-file with Deal service source code and tell GPT follow instructions in file
gpt-prompts.md

Approach 3
Try to add service builders and create valid call chain from entry point service builder
gpt-prompts.md
result
fail

The file appears to contain PHP code related to the Deal class within the Bitrix24 SDK. It defines the structure and services for working with CRM deals, including methods like add, lead, activity, item, and more. However, the file was too long to read in one go, and the output was truncated.
If you have specific instructions or want me to focus on a particular part of the file, please let me know so I can proceed accordingly.

Approach 4

switch to model gpt4o
rewrite prompt with some corner cases and try to build valid call chain of service builder

Write php 8.3 call example with requirements:

1. Variable $serviceBuilder of type ServiceBuilder is already created outside the scope of this example (no need to create it).
2. Add call example for method «Deal::add» from variable $serviceBuilder, generate full call chain to class «Deal»
2. Surround call «Deal::add» with try-catch construction and catch Throwable exception
3. For fields with type DateTime use date format Atom
4. Use all essential fields described in phpdoc annotation for method «Deal::add»

Root Entry point service builder methods by scope with related service builders:

ServiceBuilder::getCRMScope():CRMServiceBuilder
ServiceBuilder::getIMScope():IMServiceBuilder
ServiceBuilder::getIMOpenLinesScope():IMOpenLinesServiceBuilder
ServiceBuilder::getMainScope():MainServiceBuilder
ServiceBuilder::getUserConsentScope():UserConsentServiceBuilder

Scope «CRM» service builder with return types:
CRMServiceBuilder::settings():Settings
CRMServiceBuilder::dealContact():DealContact
CRMServiceBuilder::dealCategory():DealCategory
CRMServiceBuilder::deal():Deal
CRMServiceBuilder::dealUserfield():DealUserfield
CRMServiceBuilder::contact():Contact
CRMServiceBuilder::contactUserfield():ContactUserfield

gpt-prompt-template.md
Result
<?php

declare(strict_types=1);

use Throwable;
use DateTime;

// Assuming $serviceBuilder of type ServiceBuilder is available in the scope

try {
    // Access the CRM scope and retrieve the Deal service
    $dealService = $serviceBuilder->getCRMScope()->deal();

    // Example fields based on phpdoc annotation for Deal::add
    $fields = [
        'TITLE' => 'New Client Deal',
        'COMPANY_ID' => 1001,
        'CONTACT_ID' => 2002,
        'BEGINDATE' => (new DateTime())->format(DateTime::ATOM),  // Using Atom date format
        'CLOSEDATE' => (new DateTime('+15 days'))->format(DateTime::ATOM),  // Close date example
        'OPPORTUNITY' => 20000.00,
        'CURRENCY_ID' => 'USD',
        'STAGE_ID' => 'PROPOSAL',
        'LEAD_ID' => 3003,
        'SOURCE_ID' => 'EMAIL',
        'COMMENTS' => 'This is a potential high-value deal with a new client.',
        // Add additional fields as necessary based on the phpdoc
    ];

    // Call the add method in the Deal service
    $result = $dealService->add($fields);

    // Process and output the result
    echo 'Deal added successfully with ID: ' . $result->getId();

} catch (Throwable $e) {
    // Handle any exceptions
    echo 'An error occurred: ' . $e->getMessage();
}

Approach 5

add instruction to add all method arguments

Write php 8.3 call example with requirements:

1. Variable $serviceBuilder of type ServiceBuilder is already created outside the scope of this example (no need to create it).
2. Add call example for method «Deal::add» from variable $serviceBuilder, generate full call chain to class «Deal»
3. Use arguments for method «Deal::add» from phpDoc annotation:

   array $fields
   array $params

4. Surround call «Deal::add» with try-catch construction and catch Throwable exception
5. For fields with type DateTime use date format Atom
6. Use all essential fields described in phpdoc annotation for method «Deal::add»

Root Entry point service builder methods by scope with related service builders:

ServiceBuilder::getCRMScope():CRMServiceBuilder
ServiceBuilder::getIMScope():IMServiceBuilder
ServiceBuilder::getIMOpenLinesScope():IMOpenLinesServiceBuilder
ServiceBuilder::getMainScope():MainServiceBuilder
ServiceBuilder::getUserConsentScope():UserConsentServiceBuilder

Scope «CRM» service builder with return types:
CRMServiceBuilder::settings():Settings
CRMServiceBuilder::dealContact():DealContact
CRMServiceBuilder::dealCategory():DealCategory
CRMServiceBuilder::deal():Deal
CRMServiceBuilder::dealUserfield():DealUserfield
CRMServiceBuilder::contact():Contact
CRMServiceBuilder::contactUserfield():ContactUserfield

gpt-prompt-template.md

read file contents and follow instructions from file

result
<?php

declare(strict_types=1);

use Throwable;
use DateTime;

// Assuming the $serviceBuilder of type ServiceBuilder is already available

try {
    // Access the CRM scope and retrieve the Deal service
    $dealService = $serviceBuilder->getCRMScope()->deal();

    // Example fields based on the phpDoc annotation for Deal::add
    $fields = [
        'TITLE' => 'Strategic Business Deal',
        'COMPANY_ID' => 12345,
        'CONTACT_ID' => 67890,
        'BEGINDATE' => (new DateTime())->format(DateTime::ATOM),  // Start date in Atom format
        'CLOSEDATE' => (new DateTime('+20 days'))->format(DateTime::ATOM),  // Close date example
        'OPPORTUNITY' => 50000.00,
        'CURRENCY_ID' => 'USD',
        'STAGE_ID' => 'PROPOSAL',
        'LEAD_ID' => 112233,
        'SOURCE_ID' => 'WEBSITE',
        'COMMENTS' => 'This deal is critical for the company’s growth.',
        // Add additional fields as necessary
    ];

    // Optional parameters for the add method
    $params = [
        'REGISTER_SONET_EVENT' => 'Y',  // Register social network event, example param
    ];

    // Call the add method in the Deal service
    $result = $dealService->add($fields, $params);

    // Output the result
    echo 'Deal added successfully with ID: ' . $result->getId();

} catch (Throwable $e) {
    // Handle any exceptions that may occur
    echo 'An error occurred: ' . $e->getMessage();
}


Disabling and sign in flows request

Looks like and symbol still create some parsing error with loki parsing even if they are escaped using backquote.
Disabling them since they are not used anyway in pod or namespace name.
This is an addition to this PR:
https://github.com/netobserv/network-observability-console-plugin/pull/57

/approve


Indentation level for Typescript not properly set when using an indentation different from default

What did you expect to happen?
That when opening a Typescript file (with extension .ts) with an indentation level different from that of the typescript-indent-level variable, the indentation level would be inferred from the file itself, and the typescript-indent-level variable is set accordingly.
The typescript-indent-level defaults to 4. If I open a file with an indentation level of 2, typescript-indent-level should be updated accordingly. For instance, if I open a file like the following, and I want to open a new line (the | denotes the cursor):
if (true) {
  console.log("Hello")
  if (true) {|
  }
}

The new line should be indented 2 spaces, i.e.,
if (true) {
  console.log("Hello")
  if (true) {
    |
  }
}

What actually happened?
The new line was indented 4 spaces, i.e.,
if (true) {
  console.log("Hello")
  if (true) {
      |
  }
}

I have the editorconfig module enabled in my doom! block, which in my understanding is who tries to guess the indentation level for a given file.
The relevant log in the Messages buffer is:
Note: standard-indent, tab-width, evil-shift-width adjusted to 2

As far as I understand, typescript-indent-level is not being adjusted.
Instead, the indentation setup works as expected for rust. When opening a file where it detects the indentation offset is 2, e.g.,
fn main() {
  println!("Hello");
  if (true) {|
  }
}

And I hit RET, then the new line is properly indented:
fn main() {
  println!("Hello");
  if (true) {
    |
  }
}

I can see that the rustic-indent-offset variable is properly set to 2:
Note: rustic-indent-offset, tab-width, evil-shift-width adjusted to 2

Please let me know if you need further information to clarify, or if I made a mistake, I've been Doomed recently :p . Which btw, incredibly work! Thanks.
Additional details:

Include a link to your private config
Include screenshots/casts of your issue
If you mention key sequences, include what commands they're bound to (use SPC h k KEY or C-h h k KEY to inspect keys).
Include any warnings or errors logged to *Messages* (use M-x view-echo-area-messages to see it).

If an error message is involved include a backtrace of it.
How to acquire a backtrace:
https://github.com/hlissner/doom-emacs/blob/develop/docs/getting_started.org#how-to-extract-a-backtrace-from-an-error

Steps to reproduce:

Select these example steps,
Delete them,
And replace them with precise steps to reproduce your issue.
Fill in "system information" below.

System information:

emacs   version    26.3
        features   NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES THREADS
        build      Sep 02, 2019
        buildopts  (--with-ns '--enable-locallisppath=/Library/Application Support/Emacs/${version}/site-lisp:/Library/Application Support/Emacs/site-lisp' --with-modules)
        windowsys  ns
        daemonp    server-running
doom    version    2.0.9
        build      HEAD -> develop, origin/develop, origin/HEAD a381f5926 2020-04-03 02:12:50 -0400
        dir        /Volumes/Data/work/home/.doom.d/
system  type       darwin
        config     x86_64-apple-darwin18.2.0
        shell      /bin/zsh
        uname      Darwin 19.2.0 Darwin Kernel Version 19.2.0: Sat Nov  9 03:47:04 PST 2019; root:xnu-6153.61.1~20/RELEASE_X86_64 x86_64
        path       (~/.cabal/bin ~/.ghcup/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/share/dotnet /Library/TeX/texbin ~/.dotnet/tools /Library/Frameworks/Mono.framework/Versions/Current/Commands ~/.cargo/bin /Applications/Emacs.app/Contents/MacOS/bin-x86_64-10_14 /Applications/Emacs.app/Contents/MacOS/libexec-x86_64-10_14 /Applications/Emacs.app/Contents/MacOS/libexec/)
config  envfile    envvar-file
        elc-files  0
        modules    (:completion company (ivy +fuzzy +prescient +icons) :ui doom doom-dashboard doom-quit hl-todo hydra indent-guides modeline nav-flash ophints (popup +defaults) tabs treemacs vc-gutter vi-tilde-fringe (window-select +numbers) workspaces :editor (evil +everywhere) file-templates fold snippets :emacs (dired +ranger +icons) electric ibuffer vc :checkers syntax spell grammar :tools editorconfig (eval +overlay) lookup magit :lang data emacs-lisp ess javascript markdown org rest rust sh :config (default +bindings +smartparens))
        packages   ((git-time-metric))
        unpin      (n/a)
        elpa       (n/a)

This is because the dtrt-indent package doesn't recognize typescript-mode. I've PRed a fix upstream.
In the meantime, here is a quick workaround:
(after! dtrt-indent
  (add-to-list 'dtrt-indent-hook-mapping-list '(typescript-mode javascript typescript-indent-level)))

Thanks for your quick reply!
The workaround works perfectly.
PS: I didn't know that this was a dtrt-indent's issue. And thanks again for forwarding it upstream.

As of aa2096e Doom installs the latest version of dtrt-indent (which includes my PRed fix), so I'll consider this issue resolved. Let me know if that isn't the case and I'll reopen the issue. Thanks for bringing it to my attention!


BUGS

bug in the code

Hello mistakenly I clicked leave course.
No I am not able to join the course. If tried  to join it showing
repository is already exists. Please help.  Now that you've assigned
yourself, people who drop by know that they're welcome to participate, but
you'll be carrying this issue across the finish line. 😎.
Let's use GitHub Pages
Now, on to business! GitHub Pages allow you to serve a static site from a
repository. We've filled this repository with some site content, but the
rendered site isn't visible right now. Let's change that.
⌨ Activity: Enable GitHub Pages

Click on the Settings
https://github.com/yogishR/github-slideshow/settings tab in this
repository
Scroll down to the "GitHub Pages" section
From the "Source" drop down, select main branch

Note: Even though you'll see an option to choose a theme, do not apply a
theme at this point. We've protected the code so you can't make unintended
changes. You'll have the opportunity to apply a theme when the course is
completed.

I'll respond in this issue when I detect GitHub Pages has deployed your
site.
Turning on GitHub Pages creates a deployment of your repository. I may
take up to a minute to respond as I await the deployment.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/yogishR/github-slideshow/issues/2#issuecomment-907759200,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQRSYITY2LDXLJPNPEMW3W3T7H4GTANCNFSM5DABNRRA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Usage of the environment variable is not available in .testcaferc.json file

What is your Test Scenario?

I want to filter my tests by meta like that
"filter": {
    "testMeta": {
      "category": "${CATEGORY}"
    }
  }

then I do export CATEGORY=regression and try to run tests like that npx testcafe.
Also, I tried to run it like that CATEGORY=regression npx testcafe
What is the Current behavior?

ERROR No tests to run. Either the test files contain no tests or the filter function is too restrictive.
What is the Expected behavior?

tests are started
What is your web application and your TestCafe test code?

Execute this command...
See the error...

Your Environment details:

testcafe version:
node.js version:
command-line arguments:
browser name and version:
platform and version:
other:

Hello Andrey,
Thank you for your report. The .testcaferc.json file does not support environmental variables, and it's not supposed to be used in a such way.
I discussed you scenario with the team. We believe that a more flexible approach is to perform such customizations using the JS configuration files. We've created the following issue: "Support JS TestCafe configuration files". Please track it to get updates.
We will appreciate it if you submit your PR with the implementation of this functionality.


Modify text style on legend, labels etc..

If labels, legends or other string values can be modified on view layer, not the data model layer. Users may have ability to modify chart view to adapt their screen.
Also when I wanted to add price unit, near my touch overlay data but in this structure it is not easy.
I think there may be some improvements to move some properties to view layer and have a simple data model layer.

I've add units to the touch overlay, it's in the latest release - version 1.1.3.
Example
.touchOverlay(units: .prefix(of: "USD"))
// OR
.touchOverlay(units: .suffix(of: "USD"))

I'll have a look and a think about the view layer vs model layer.

Thank you! This is the most useful SwiftUI charts lib among others. When I have free time I will try to understand source codes and think if I can contribute in someway.

No worries! Glad you find it useful. Any contributions would be appreciated.
View Layer vs Model Layer
The model can be updated from the view. If your xAxisLabels in data model are:

["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]

But you want to change them you can change them on the fly by:
.onAppear {
    data.xAxisLabels = ["Jan", "Dec"]
}

I've just added another version 1.1.4 that fixes a small bug and now exposes the ChartMetaData to the api. This allows you to up date those value on the fly.
.onChange(of: someValue, perform: { _ in
    data.metadata?.title = "A new title"
    data.metadata?.subtitle = "A new subtitle"
})

Version 2
I'm working on a version 2 at the moment to add some new features and chart types. The hope is that version 2 will be easier to add new chart types without loads of duplicated code.


Added Tahoma Font issue#95

Fixes #(issue)
issue #95 . I have Tahoma font in web page font style and made some changes in content js and popup file.
Describe your changes in detail
We have added new feature of the Tahoma font style which is the best font style for those who are suffering from dyslexia.
Screenshots (if appropriate):

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[X] My change requires a change to the documentation.
[X] I have updated the documentation accordingly.
[X] I have read the CONTRIBUTING document.

SWOC Participation

Name: Mohammad Nazim Qureshi
Discord Username: atoz #5954
[X] I have included the issue number in my PR

Thank you for giving me an opportunity to do a contribution to your project.
Kindly merge it asap.

Hi @officialarmannqureshi ! You also have to add the eventListener using background.js. You can refer to the other fontstyles in background.js. If you have any doubt, do ask me

I think it's there and its working great

@officialarmannqureshi see I tried it. It won't work since the flow is as such: the onlick eventListener is added via background.js. Upon onclick, the background.js will send the message (the action) to content.js to make the change to the webpage.

Sorry! My bad! there was an error on my system. Thanks for the PR! Merged!

is it marked as SWOC?

Yes


OSD-7742: Standardize & use updated base images

Depends on openshift/managed-prometheus-exporter-base#5 and openshift/managed-prometheus-exporter-initcontainer#14
For OSD-7742
Signed-off-by: Lisa Seelye<EMAIL_ADDRESS>

/hold
for review and deps

this is too unwieldy to be a small change.


Fix CSI node driver resource config

Description

Finishes off this abandoned PR: https://github.com/tigera/operator/pull/2768
Fixes https://github.com/projectcalico/calico/issues/8400
For PR author

[ ] Tests for change.
[ ] If changing pkg/apis/, run make gen-files
[ ] If changing versions, run make gen-versions

For PR reviewers
A note for code reviewers - all pull requests must have the following:

[ ] Milestone set according to targeted release.
[ ] Appropriate labels:

kind/bug if this is a bugfix.
kind/enhancement if this is a a new feature.
enterprise if this PR applies to Calico Enterprise only.

I am on helm-chart Calico projectcalico/tigera-operator v3.28.0 and I am still unable to set csiNodeDriverDaemonSet memory & limit resources. When applying this configuration the chart is detecting the changes and seems to be updated but I do not see the changes applied. All logs look normal, please see config below:
csiNodeDriverDaemonSet: #Currently an issue and PR open to allow these values to be supported - https://github.com/projectcalico/calico/issues/8400
        spec:
            template:
                spec:
                    containers:
                    - name: csi-node-driver
                      resources:
                        limits:
                            memory: 100Mi
                        requests:
                            cpu: 75m

Same here, we're using https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml
and this Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  csiNodeDriverDaemonSet:
    spec:
      template:
        spec:
          containers:
            - name: calico-csi
              resources:
                limits:
                  memory: 10Mi
                requests:
                  cpu: 10m
                  memory: 10Mi
            - name: csi-node-driver-registrar
              resources:
                limits:
                  memory: 20Mi
                requests:
                  cpu: 10m
                  memory: 20Mi

triggers this error when applying it
one or more objects failed to apply, reason: Installation.operator.tigera.io "default" is invalid: [spec.csiNodeDriverDaemonSet.spec.template.spec.containers[0].name: Unsupported value: "calico-csi": supported values: "csi-node-driver", spec.csiNodeDriverDaemonSet.spec.template.spec.containers[1].name: Unsupported value: "csi-node-driver-registrar": supported values: "csi-node-driver"]

@rene-dekker, @caseydavenport

Fixes #2412


feat(decline-registration): decline registration confirmation logic

Description
Decline Registration confirmation logic
Why
Decline Registration confirmation functionality when user click on decline link from email
Issue
n/a
Checklist
Please delete options that are not relevant.

[x] I have followed the contributing guidelines
[x] I have performed IP checks for added or updated 3rd party libraries
[x] I have performed a self-review of my own code
[x] I have successfully tested my changes locally

recheck the branch please - as per the ticket this should be release branch related


As a course instructor, I can sort students based on their grades

such that I have a better view of the students capability

Students are automatically ordered from the lowest grade to the highest.


[ECard Settings] - Clean up cardList in Onyx [Step 3]

DD Section
https://docs.google.com/document/d/1rFxJ78vz5On6zSWzYa51B9v-tyLdC5pUsBeLOLig0t4/edit#bookmark=id.fg7t78w4i1po
Step

Update E/App to use only the FUND_LIST key

Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01588700483c8cdb32
Upwork Job ID:<PHONE_NUMBER>118654464
Last Price Increase: 2023-07-25

@mananjadhav should be paid as the C+ reviewer on this for $1000 ~ did you submit a payment request in NewDot?
CC @JmillsExpensify @anmurali for payment

@slafortune I'll submit by 08/31.

I've raised the request on NewDot. Will let @JmillsExpensify to comment.

Reviewed details for @mananjadhav. $1,000 approved for payment based on BZ summary.


Failing builds, am I missing some clever trick?

I've been using Piston on and off for the last few months. It's very fun but sometimes (like now) the build is not working. I realize it must be very hard to keep up with the fast pace of the Rust language and you also seem to experiment a lot with the api:s for Piston, which is cool.
Perhaps there are some tricks I can use to build with an older but working version of Piston and Rust? Right now I'm using the latest nightly build and just adding dependencies to the cargo projects, following the Piston examples.
To be clear, I'm totally up for upgrading my code as API:s change and so on. As a rust beginner I'm a little unsure of how to keep that managable though, so if anyone has any tips for some kind of workflow I'd be very thankful!
Erik

This could probably be closed now, it's rather stale now.


File rotation issue

Hi,
We would like to set up a file rotation system for the frontend's /var/irma/samples. I have tried to remove some samples, but if I scan them again later (I force the scan to be performed with the REST API), celery and uwsgi raise an ftp upload error caused by an IOError (file not found). I guess that IRMA does not handle cases where samples have been deleted and should be put again in /var/irma/samples to be rescanned.
Would it be possible to fix this issue? If not, is there any recommended way to safely rotate files in /var/irma/samples to avoid disk saturation?
Thanks!
Florent
EDIT: The bug appears in IRMA 1.2.0, but the diffs with 1.3.0 do not seem to fix it, is it reproducible on your setup?

There is a specific periodic task to remove file from FS (https://github.com/quarkslab/irma-frontend/blob/master/frontend/tasks.py#L68), its meant to be executed by celerybeat. But if you want to manually do it, you have to call https://github.com/quarkslab/irma-frontend/blob/master/frontend/controllers/filectrl.py#L21 because path field should be set to None.
One more missing doc. Will put this in the FAQ section of the doc.

Thanks for the pointers, I missed these ones. I think it will do the job for us. I'll try that and keep you in touch, the issue can be closed for me (I'll reopen if necessary).

You're rigth @fmonjalet, I just opened an issue related to your tip: https://github.com/quarkslab/irma-frontend/issues/106.
Regards.


Fix uturn aggressiveness

This is to address #347. The sensor test for uturn is failing.

Looks ready to merge.

Looks ready to merge.


Update readme

Update readme

Current coverage is 94.09% (diff: 100%)

Merging #21 into master will not change coverage

@@             master        #21   diff @@
==========================================
  Files            21         21
  Lines          1473       1473
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           1386       1386
  Misses           87         87
  Partials          0          0

Powered by Codecov. Last update 76ed4ca...f1b4920


Discrepancy on score with certain vectors when compared to FIRST calculator

While looking into the RedHat and FIRST implementations of CVSSV4 calculators we noticed a score discrepancy when certain metrics are selected.
Specifically  CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
Notice the RedHat score in this case is 5.9 and FIRST is 6.1
https://redhatproductsecurity.github.io/cvss-v4-calculator/#CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
Is this expected behavior and/or should I bring it up to FIRST?

This looks like a regression, my Go implem computes 6.1 too :/
I'll try to find where the source and post updates soon.

Could be regression in https://github.com/RedHatProductSecurity/cvss-v4-calculator/pull/52 .

Yep, it is there.

@gscottwilson , can you please have look?

Commit 266c4f6 gives 6.1.

Looks like the unrounded score in this case is 5.941666666666666 so the redhat calculator is correctly rounding to 5.9 and the FIRST calculator as deployed is incorrect at 6.1

Unfortunately, rounding was not figured out yet by the SIG, so it is hard to tell which is right and which is wrong. However, I am unsure how 5.941666666666666 could incorrectly be rounded to 6.1, I would expect 6.0?
Anyway, I have a colleague who may have some time to tackle rounding issues for good somewhat soon™.

Sounds good. Thanks for the heads up

Had a chance to dive deeper on this and discovered it is indeed a regression due to my refactor. Apologies for the confusion introduced.
The 5.9 was a red herring and 6.1 was correct.
I’ve resolved the issue and sending a PR for your review.


Feed coreboot git tree with results

https://review.coreboot.org/c/coreboot/+/32237

We could do so, e.g. for no-payload default config builds, and report the open-source % of the coreboot build? However, if no IFD is included, then this is becoming hard https://github.com/Dasharo/dasharo-issues/issues/461

@macpijan there should be some synergy with Fobanil SBOM/RIM here.


[FLINK-7109] [hadoop] Remove GlobalConfiguration.loadConfiguration from HadoopUtils#getHadoopConfiguration

The HadoopUtils#getHadoopConfiguration should not load the global configuration. Instead
we pass it in as parameter.

Failing test is unrelated. Merging this PR.


Update FAQs and routing

Write unique faqs in a json file and map the objects on the faq folder and update the path to faq.

Claim

Assigned to @GammaMicrowave


ci: adding test over selected plugins

rocky adventure but finally got something working,
I didn't want to require luarocks-tag-release changes to support list (along with string) for dependencies but this could make sense.

My changes seem to generate a correct rockspec, yet the luarocks install fail ?
https://github.com/nvim-neorocks/nurr/actions/runs/9922040583/job/27410665505#step:5:488
There seems to be unrelated failures as well such as neotest depending on the removed nvim-treesitter:
https://github.com/nvim-neorocks/nurr/actions/runs/9922040583/job/27410666847#step:5:545
for chatgpt.nvim
https://github.com/nvim-neorocks/nurr/actions/runs/9922040553/job/27410668231 gets
Error: /home/runner/work/nurr/nurr/chatgpt.nvim-0.1.1-alpha-1.rockspec: Type mismatch on field version: invalid value '0.1.1-alpha-1' does not match '[%w.]+-[%d]+' (using rockspec format 3.0)

The summary for the jobs are kinda confusing, I hope we can force the summary to just mention for which plugin it runs instead of some fields from the plugin such that sometimes a dependency appears first :s


Add instructions for Pico D4

Hi，
We will test it and update the README.md.

The master branch supports Pico D4 now.


Fix #10487 about Dead link to the command reference

Fix #10487
The link is now pointing to az devops CLI reference landing page

I think I'll close this. Other previous PR #10488 already solved this.


Make JSqueeze filter work with 1.x and 2.x (namespaced)

JSqueeze 2.x just came out, and it's now namespaced. This should let the filter work with both 1.x and 2.x. Obviously it'd also be simple to just make it work with 2.x only if you wanted to go that way.
I thought about adding some helper bits to make it easier to use upstream's default special var regex on 2.x, but thought I'd just keep it simple for now. We could do something like have setSpecialVarRx accept 'true', and have that set the value to JSqueeze::SPECIAL_VAR_PACKER on 2.x.
@nicolas-grekas wdyt?
It'd be good to have this on the stable branches too.

(if anyone's watching this, please play Yakity Sax at this point)

(if anyone's watching this, please play Yakity Sax at this point)

@nicolas-grekas how about this version? the global renaming is disabled by default for 1.x and 2.x but you can do setDefaultRx(true) to enable it with the default regex. (haven't tested that bit yet, I will).

Thank you @AdamWill.

@stof thank you! would it be possible to get it on the 1.2 branch too?


Move .ipynb file to notebooks

Does the notebook need to be in the same place as the script? Otherwise I think it may fit better in the notebook folder.

Notebook is moved


Something was wrong with the last update (1.3)

/**
 * Get Fetch Plan
 *
 * Infers the fetch plan query
 *
 * @param {String}  collectionName
 * @param {Object}  criteria
 * @return {String} fetchPlan query string
 * @api private
 */
Associations.prototype.getFetchPlan = function getFetchPlan(collectionName, criteria, fetchPlanLevel) {
  var self = this;
  fetchPlanLevel = fetchPlanLevel || 1;
  var parentSchema = self.connection.collections[collectionName].attributes;
  var fetchPlan = '';
  var select = [];
  var associations = [];

  // Populate joined collections by fetching related vertices
  criteria.joins.forEach(function(join){
    if(!join.junctionTable && !join.select) { return; }

    // One-to-* associations such as model (links and linksets)
    if(!join.junctionTable && (parentSchema[join.alias].model || parentSchema[join.alias].collection)){
      fetchPlan += join.parentKey + ':1 ';
      return;
    }

    if(!join.junctionTable){
      log.warn("Unexpected behaviour. Can't process join: ", join);
      return;
    }

    // Many-to-many through associations (edges)
    associations.push(join.parent);
    var edgeSides = self.getEdgeSides(join.parent);

  }
}

Thanks for reporting.

It works, thank you.


fix prop types error

fix prop types error for newer react native version (ViewPropTypes instead of View.Proptypes)

I agree, I was going to make a pull request as well to fix this issue

I forked the project and made the needed modification
https://github.com/skhetcho/react-native-bar-collapsible


Variant selection should take into account transforms when checking compatibility

Expected Behavior
When I publish a variant with an attribute "foo" and I consume the dependency in a configuration with attribute "bar" and the consumer has an artifact transform available that translates "foo -> bar", that the "foo" variant will be considered compatible and be selected.
Current Behavior
This currently fails with an error that "required 'bar' and found incompatible value 'foo'".
If I leave off the attribute on the published variant (but leave it on the incoming configuration), then the variant selection matches and the artifact selection works when resolving the artifacts of the incoming configuration.
If I leave off the attribute on the incoming configuration (but leave it on the published variant), then I can use an ArtifactView to select the appropriate artifacts.
Context
This came up with the C++ plugins where we publish header directories as a zip, but need to transform them to a directory when they are consumed.
Steps to Reproduce (for bugs)
See https://github.com/gradle/gradle/blob/844f23dd5bd1024b0b9a3dbbb6c845dd29e90714/subprojects/dependency-management/src/integTest/groovy/org/gradle/integtests/resolve/attributes/MultipleVariantSelectionIntegrationTest.groovy#L730

Documentation here doesn't make it clear that this is the expected behaviour.

Documentation here doesn't make it clear that this is the expected behaviour.

Just faced this issue while trying to do an easy aar2jar dependency transform to allow consuming Android dependencies con JVM projects, by extracting the classses.jar file out from the AAR (zip) artifact
It was pretty much straightforward, but then it didn't 🤦
dependencies{
    registerTransform(AarToClassTransform::class) {
        from
            .attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(AAR.type))
            .attribute(ARTIFACT_TYPE_ATTRIBUTE, AAR.type)
        to
            .attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(CLASSES))
            .attribute(ARTIFACT_TYPE_ATTRIBUTE, JAR_TYPE)
    }
}

If you only transform the artifact type and instead make those Java consumers request the AAR.type library elements for those dependencies, it will probably work, as then the variant can be resolved and the transform can kick in. I'm not too much into Android development, so I'm not going to try it. If you need further help with that approach, maybe better open a thread on the community forums or in the community slack to not pollute this issue too much. :-)

Actually the only working solution was to create a dedicated configuration to set the artifactType attribute for it. Otherwise, the transform was not applying. And I also was forced to add a compatibility rule.
It seems, when dealing with external dependencies, transforms only applies to artifact types 🤔
This is my current approach to it:
build.gradle.kts:
plugins {
   java
   aar2jar
}

dependencies {
    compileOnlyAar(libs.perseus.api)
}

buildSrc/src/main/kotlin/aar2jar.gradle.kts:
plugins {
    java
}

sourceSets.configureEach {
    fun delcareConfiguration(name: String) {
        val aars = configurations.maybeCreate("${name}Aar").apply {
            isCanBeResolved = true
            isCanBeConsumed = false
            attributes.attribute(ARTIFACT_TYPE_ATTRIBUTE, JAR_TYPE)
        }

        dependencies { name(aars.incoming.files) }
    }

    delcareConfiguration(apiConfigurationName)
    delcareConfiguration(implementationConfigurationName)
    delcareConfiguration(runtimeOnlyConfigurationName)
    delcareConfiguration(compileOnlyConfigurationName)
}

dependencies{
    attributesSchema.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE) {
        compatibilityRules.add(AAR2JarCompatibilityRule::class)
    }
    registerTransform(AarToClassTransform::class) {
        parameters {
            forCompileUse.set(true)
            generateRClassJar.set(true)
        }
        from
            .attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(AAR.type))
            .attribute(ARTIFACT_TYPE_ATTRIBUTE, AAR.type)
        to
            .attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(CLASSES))
            .attribute(ARTIFACT_TYPE_ATTRIBUTE, JAR_TYPE)
    }
}

class AAR2JarCompatibilityRule : AttributeCompatibilityRule<LibraryElements> {

    override fun execute(details: CompatibilityCheckDetails<LibraryElements>) = with(details) {
        if (consumerValue?.name == CLASSES && producerValue?.name == AAR.type) {
            compatible()
        }
    }

}

The distinction that Gradle transforms artifacts instead of variants wasn't very clear to me. Understanding this might be complicated by the fact that Artifact Transforms documentation doesn't mention that you can use artifactView to take advantage of a transform.
IIUC Gradle also does some special handling around artifactType. For example the following transformation from jar to stub works just fine:
repositories {
    mavenCentral()
}

abstract class TestTransform : TransformAction<TransformParameters.None> {
    @get:InputArtifact
    abstract val inputArtifact: Provider<FileSystemLocation>

    override fun transform(outputs: TransformOutputs) {
        outputs.file("stub").createNewFile()
    }
}

project.dependencies.registerTransform(TestTransform::class.java) {
    from.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "jar")
    to.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "stub")
}

val consumer = configurations.create("consumer") {
    isCanBeConsumed = false
    isCanBeResolved = true
    isTransitive = false

    dependencies.add(project.dependencies.create("org.gradle.profiler:gradle-profiler:0.21.0"))

    attributes {
        attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "stub")
    }
}

val resolvedArtifactType = consumer.incoming.artifacts.resolvedArtifacts.map {
    it.single().variant.attributes.getAttribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE)
}

tasks.register("_resolveMe") {
    doLast {
        // prints "stub"
        println(resolvedArtifactType.get())
    }
}

but variant transformation on a custom attribute fails to resolve as is specified in the description:
val customAttribute = Attribute.of("test", String::class.java)
val producer = configurations.create("producer") {
    isCanBeConsumed = true
    isCanBeResolved = false
    attributes {
        attribute(Category.CATEGORY_ATTRIBUTE, objects.named("foo"))
        attribute(customAttribute, "from")
    }
    outgoing.artifact(project.layout.projectDirectory.file("build.gradle.kts"))
}

val consumer = configurations.create("consumer") {
    isCanBeConsumed = false
    isCanBeResolved = true

    dependencies.add(project.dependencies.create(project))

    attributes {
        attribute(Category.CATEGORY_ATTRIBUTE, objects.named("foo"))
        attribute(customAttribute, "to")
    }
}

abstract class TestTransform : TransformAction<TransformParameters.None> {
    @get:InputArtifact
    abstract val inputArtifact: Provider<FileSystemLocation>

    override fun transform(outputs: TransformOutputs) {
        outputs.file("test").createNewFile()
    }
}

project.dependencies.registerTransform(TestTransform::class.java) {
    from.attribute(customAttribute, "from")
    to.attribute(customAttribute, "to")
}

val resolvedArtifactType = consumer.incoming.artifacts.resolvedArtifacts.map {
    it.single().variant.attributes.getAttribute(customAttribute)
}

tasks.register("_resolveMe") {
    doLast {
        // fails to resolve
        println(resolvedArtifactType.get())
    }
}

however, dropping the attribute on the consumer configuration and using the artifactView helps, which might not be immediately evident:
val consumer = /* ... */ {
    attributes {
        attribute(Category.CATEGORY_ATTRIBUTE, objects.named("foo"))
        // Make sure the "from" variant resolves
        // attribute(customAttribute, "to")
    }
}
/* ... */

val resolvedArtifactType = consumer.incoming.artifactView {
    attributes {
        attribute(customAttribute, "to")
    }
}.artifacts.resolvedArtifacts.map {
    it.single().variant.attributes.getAttribute(customAttribute)
}

tasks.register("_resolveMe") {
    doLast {
        // prints "to"
        println(resolvedArtifactType.get())
    }
}

The "special handling" of artifactType is, that it is an attribute of the artifact, not the variant. So the variant can be resolved even with non matching attribute as the variant does not have the attribute which means it is compatible. And then when it comes to resolve the artifact the transform can kick in.


gnome3.gnome-boxes fails to launch vm

Issue description
gnome-boxes is failing to launch my virtual machines on my NixOS unstable system:
$ gnome-boxes &
[1] 3518

(gnome-boxes:3518): Gtk-WARNING **: 23:58:07.576: GtkFlowBox with a model will ignore sort and filter functions

(gnome-boxes:3518): Gtk-WARNING **: 23:58:07.577: GtkListBox with a model will ignore sort and filter functions

(gnome-boxes:3518): Boxes-WARNING **: 23:58:11.477: machine.vala:633: Failed to start Fedora-Xfce-Live-x86_64-29-20181029: Unable to start domain: internal error: qemu unexpectedly closed the monitor: 2019-05-04 02:58:11.434+0000: Domain id=3 is tainted: host-cpu
gbm: failed to open any driver (search paths /run/opengl-driver/lib/dri)
gbm: Last dlopen error: /run/opengl-driver/lib/dri/i965_dri.so: cannot open shared object file: No such file or directory
failed to load driver: i965
gbm: failed to open any driver (search paths /run/opengl-driver/lib/dri)
gbm: Last dlopen error: /run/opengl-driver/lib/dri/kms_swrast_dri.so: cannot open shared object file: No such file or directory
failed to load driver: kms_swrast
gbm: failed to open any driver (search paths /run/opengl-driver/lib/dri)
gbm: Last dlopen error: /run/opengl-driver/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory
failed to load swrast driver
2019-05-04T02:58:11.475275Z qemu-system-x86_64: egl: gbm_create_device failed
2019-05-04T02:58:11.475326Z qemu-system-x86_64: Failed to initialize EGL render node for SPICE GL

Technical details

system: "x86_64-linux"
host os: Linux 5.0.10, NixOS, 19.09pre177651.aeb464dfd37 (Loris)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.2.2
channels(root): "nixos-19.09pre178260.190727db4ea"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

I'm betting this is still an issue

I meet this issues in virt-manager, after enable 3D acceleration.

I meet this issues in virt-manager, after enable 3D acceleration.

Same here, driver v525.89.02


Remove empty categories

[x] Women/Shoes/Boots
[x] Women/Shoes/Lace-Up Shoes
[x] Women/Bags/Bucketbag & Packback
[x] Women/Looks (not even accessible right now)
[x] Men/Bags (and subcategories)
[x] Men/Shoes/Boots
[x] Men/Shoes/Sandals
[x] Men/Looks (not even accessible right now)
[x] Accessories/Women/Shoes
[x] Accessories/Women/Bags
[x] Accessories/Men/Sunglasses
[x] Brands
[x] New/Women/Looks
[x] New/Men/Bags
[x] New/Men/Looks
[x] New/Special (and subcategories)

[ ] Women/Shoes/Boots
[ ] Women/Shoes/Lace-Up Shoes
[ ] Women/Bags/Bucketbag & Packback
[ ] Women/Looks (not even accessible right now)
[ ] Men/Bags (and subcategories)
[ ] Men/Shoes/Boots
[ ] Men/Shoes/Sandals
[ ] Men/Looks (not even accessible right now)
[ ] Accessories/Women/Shoes
[ ] Accessories/Women/Bags
[ ] Accessories/Men/Sunglasses
[ ] Brands
[ ] New/Women/Looks
[ ] New/Men/Bags
[ ] New/Men/Looks
[ ] New/Special (and subcategories)

all empty categories are removed


feat(db): Changed timestamps to use time zone (AEROGEAR-8873)

Motivation
https://issues.jboss.org/browse/AEROGEAR-8873
What
Changed database timestamps to use time zone by default.
Why
To ensure that the timestamp saved has a consistent tim zone with the server (UTC).
Verification Steps
Add the steps required to check this change. Following an example.

Drop your database tables:

DROP TABLE device;
DROP TABLE version;
DROP TABLE app;

Start the server again:

go run cmd/mobile-security-service/main.go

Once that is up, seed the database:

make test-integration

Change the time zone on your computer. Take not of the difference between your new time zone and UTC (mine is UTC-03, Moncton, Canada).

Check the /apps endpoint and inspect the values for deployedVersions[n].lastLaunchedAt - this should be your old time zone (which is UTC).

Go to the front-end and look at the value on the app versions table, it should be offset to match your local time.

Checklist:

[x] Code has been tested locally by PR requester
[ ] Changes have been successfully verified by another team member

Progress

[x] Finished task

Additional Notes

Coverage remained the same at 93.514% when pulling a5262f72c91bbdb51593ac3dfef652de08ddd444 on craicoverflow:AEROGEAR-8873 into d82efb6a1c51f22ef49bb7439b2731de274d5e98 on aerogear:master.


Don't assume static AWS credentials in the Tectonic installer

Issue Report Template
Tectonic Version
1.4.5-tectonic.1
Environment
AWS
Expected Behavior
I have the option to use AWS "instance credentials" rather than an access key + secret key.
Actual Behavior
I cannot proceed unless I give it an access key + secret key.
Reproduction Steps

Run tectonic installer
Click through until it asks you if you want "bare metal" or "AWS"
Pick AWS
Get stuck on the access key + secret key prompt

Other Information
Ever since the beginning of AWS, EC2 instances have had a magic hypervisor-provided "instance metadata service" listening on <IP_ADDRESS> that provides rotating temporary IAM credentials in a standard location. The thing about temporary IAM credentials is that they have three components, not two, so in addition to the access key and secret key, you also get a blob of crypto called the session token.
All AWS SDKs that I know of (for python, c++, java, go, etc.) have supported this mechanism forever. So if you specify an access key + secret key explicitly, it'll use that, but if you don't specify anything, it'll fall back to <IP_ADDRESS> and pull the credentials from there. As such, I expect that if the tectonic installer is using the Go AWS SDK, it should be simple to address this ticket (by simply not specifying the credentials explicitly)
See also https://github.com/AdRoll/hologram, which simulates the instance metadata service on a non-EC2 box.

Hey @copumpkin, thanks for filing this issue! Looking into this and will get back to you within a day or two.

Hey @copumpkin, sorry for the delay here! We're hitting the API directly from the installer on your laptop - not booting an EC2 instance, then doing the install from that. So unfortunately you wouldn't be able to take advantage of this functionality.

I know! I use the same mechanism on my laptop via an open source tool
called Hologram, and have mostly banished static credentials from my life
:) I realize it's not the common case but given that the SDK supports this
feature natively out of the box it doesn't seem too hard to support it in
the installer.
On Mon, Dec 19, 2016 at 20:15 Mackenzie Burnett<EMAIL_ADDRESS>wrote:

Hey @copumpkin https://github.com/copumpkin, sorry for the delay here!
We're hitting the API directly from the installer on your laptop - not
booting an EC2 instance, then doing the install from that. So unfortunately
you wouldn't be able to take advantage of this functionality.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/coreos/tectonic-forum/issues/7#issuecomment-268125852,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAKP5QbY1BTCkviFDgpSB1EOvRUqiKAks5rJywagaJpZM4LL-yT
.

To be clear, tools forcing static credentials are rare enough that my
organization has mostly forbidden IAM users (i.e., static keys) from our
AWS accounts. At the very least, putting in an optional third field for the
session token would also achieve this goal, but it would still probably be
easier to let the SDK just do its thing.
On Mon, Dec 19, 2016 at 20:17 Daniel Peebles<EMAIL_ADDRESS>wrote:

I know! I use the same mechanism on my laptop via an open source tool
called Hologram, and have mostly banished static credentials from my life
:) I realize it's not the common case but given that the SDK supports this
feature natively out of the box it doesn't seem too hard to support it in
the installer.
On Mon, Dec 19, 2016 at 20:15 Mackenzie Burnett<EMAIL_ADDRESS>wrote:
Hey @copumpkin https://github.com/copumpkin, sorry for the delay here!
We're hitting the API directly from the installer on your laptop - not
booting an EC2 instance, then doing the install from that. So unfortunately
you wouldn't be able to take advantage of this functionality.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/coreos/tectonic-forum/issues/7#issuecomment-268125852,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAKP5QbY1BTCkviFDgpSB1EOvRUqiKAks5rJywagaJpZM4LL-yT
.

We've actually just added support for STS session tokens which will be shipping in our next release, due out later this week :)

Awesome, thanks!

Closing this issue, as we addressed this with support for STS session tokens.


New networking files created for OAS when they shouldn't be

Expected Behavior
No new files created for OAS on new environment files run
Actual Behavior
These PRs are created on new environment files run:
https://github.com/ministryofjustice/modernisation-platform/pull/2976
https://github.com/ministryofjustice/modernisation-platform-environments/pull/1281
For some reason it thinks that oas should be under the HMPPS business unit.  Potentially this is an issue due to the fact there is an oasys application in hmpps.
Could be a partial string match being used to identify
I believe the offending lines might be the contains() in here:
https://github.com/ministryofjustice/modernisation-platform/blob/main/scripts/provision-member-directories.sh#L83
https://github.com/ministryofjustice/modernisation-platform/blob/main/scripts/provision-member-directories.sh#L79
https://github.com/ministryofjustice/modernisation-platform/blob/main/scripts/provision-environment-directories.sh#L73
https://github.com/ministryofjustice/modernisation-platform/blob/main/scripts/provision-member-directories.sh#L79
Steps to Reproduce the Problem

Run new environment files workflow

Other information

I had a conversation with ChatGPT about this problem, based on the lines that cause issues leveraging contains(). Here are two possible solutions:
RAW_OUTPUT=`jq --arg APPLICATION_NAME "$application_name" 'limit(1;.[].subnet_sets[] | select(.accounts[] | . == $APPLICATION_NAME) | { "business-unit": ."business-unit", "set": .set, "application": $APPLICATION_NAME } )' <<< "$networking_definitions"`

This version replaces contains($APPLICATION_NAME) with . == $APPLICATION_NAME to check for an exact match of the application name.
RAW_OUTPUT=`jq --arg APPLICATION_NAME "$application_name" 'limit(1;.[].subnet_sets[] | select(.accounts[] | . as $a | $a |= ($a | split("\n")) | . as $accounts | $accounts |= map(select(. == $APPLICATION_NAME)) | .[0]) | { "business-unit": ."business-unit", "set": .set, "application": $APPLICATION_NAME } )' <<< "$networking_definitions"`

This version uses grep command inside jq to filter the accounts array based on exact match.
Naturally these need to be considered, but given your analysis they're promising approaches!

https://github.com/ministryofjustice/modernisation-platform/pull/3023


Specify the date and time of the backup

This might seem a little odd, but is very useful when migrating backup sets from other software. For instance, I recently converted a huge set of tgz files to Bup, and specified the date and time for each, thereby recreating the backup history. It doesn't have much use outside of this scenario, but would allow migrated sets to play nicely with the attic prune command. I imagine it's also a fairly simple addition.
Comparison note*: Bup and Obnam both allow this.*

This is a fairly simple addition and I've got a patch ready that does it.
I've added a --timestamp  option to the create subcommand. The reason for  and not a timestamp string is that I realised when importing old backups, I was just taking the timestamp from the root of each snapshot I had, and I had no use for an actual timestamp as a string.
Do you think a timestamp string (YYYY-MM-DD HH:MM:SS) is useful to you? I'm deciding if I add a simple heuristic to try to parse the argument as a timestamp string if it is does not reference a valid file.

What do you mean precisely by "taking the timestamp from the root"?
Having a specific timestamp seems usesful. Yes, use iso-like time format for it.

I agree that this is a useful feature, and that being able to take the timestamp from a file or from the command line would both be useful.  But rather than a heuristic, I think different command line switches should be used.
It would also be great if you could specify times flexibly, like the date command allows.

What I mean by "taking the timestamp from the root" is that if you are importing an existing backup from the filesystem (i.e. untarring the tgz mentioned in the original comment), the root of that tree will have a timestamp that is the timestamp of the backup. Or the timestamp of the tar file itself. Using the mtime of the directory or the tar file as the backup timestamp is all that is needed.
That is, any decent backup is going to have the timestamp that backup was taken on it. You may as well just take the timestamp from that rather than require a cumbersome manual entry of the time (and risk mis-entering it).
So, I'm looking for more than "useful". Code needs to have use case, I don't yet see one for manually overriding the timestamp. Time/date parsing is horrible and error prone (I don't want to think about the timezone handling part of it - it will just make me cry), that I'd rather avoid it unless there is a strong use case.

You are assuming mtime properties of the root directory which are not necessarily true.
Thus, we need a way to specifically give the datetime as a string and alternatively get it from a file or directory mtime (in cases this makes sense).
About the datetime string parsing my POV is to only support iso-like format. 2015-04-14T01:26:59 (and tolerate a blank instead of the T). That's what ISO standards are for, to have an international standard. And it even is the most logical and most practical way.

By "root" directory, I meant the root of the tree being backed up, not the root of the vfs namespace (/). Sorry for the confusion.
Essentially it is any file/directory that can be the source of the timestamp, and in my example, it was the root of the directory tree being imported. In the original comment, it could be the tgz file containing the backup.
With a timestamp string in ISO-like format, the timestamp would be in UTC, yet the output of 'attic list' shows local time. This is rather unfriendly and error-prone (most people think in local time and if they have to manually convert to UTC, mistakes will be made).
I originally started implementing timestamp string parsing code but came to the realisation that all use cases I could think of were covered by using a file/directory as the source of the timestamp, which was also easier, more accurate and less error-prone. This is why I am asking for timestamp-as-string use cases.

When I imported my data into attic, I had a bunch directory snapshots where I would have used the timestamp function if it was available (I didn't trust the directory mtimes).  My workaround was setting the system time then running attic for each timestamp.  Count this as another vote for accepting an ISO timestamp option (optionally with timezone information).
Sent from Yahoo Mail on Android
From:"Cam Hutchison"<EMAIL_ADDRESS>Date:Mon, Apr 13, 2015 at 7:43 pm
Subject:Re: [attic] Specify the date and time of the backup (#263)
By "root" directory, I meant the root of the tree being backed up, not the root of the vfs namespace (/). Sorry for the confusion.
Essentially it is any file/directory that can be the source of the timestamp, and in my example, it was the root of the directory tree being imported. In the original comment, it could be the tgz file containing the backup.
With a timestamp string in ISO-like format, the timestamp would be in UTC, yet the output of 'attic list' shows local time. This is rather unfriendly and error-prone (most people think in local time and if they have to manually convert to UTC, mistakes will be made).
I originally started implementing timestamp string parsing code but came to the realisation that all use cases I could think of were covered by using a file/directory as the source of the timestamp, which was also easier, more accurate and less error-prone. This is why I am asking for timestamp-as-string use cases.
—
Reply to this email directly or view it on GitHub.￼

I should also add my other thought about timestamp strings: It is possible to 'touch -d  ' on the root of the tree you are importing, and then use that directory as the timestamp source. This is not that friendly, but it does serve to make all cases possible. touch(1) has a very flexible timedate string format too.
To address an earlier comment by @jdchristensen, I am against having multiple flags (one for timestamp from file mtime, another for timestamp as string), as I think it bloats the interface too much. I'm a fan of "keep it simple". It's reasonably easy to differentiate between different types of argument values, so I'd prefer to do that.
If anyone is interested, my working copy of this is https://github.com/camh-/attic/commit/5cce7c1de7b3b6be88b9ca12b78d517d582dba3d

If you consider using "touch -d", you can use faketime as well. And when
faketime or touch are not easily available or not feasible it would be nice
to have a commandline switch
On Tue, Apr 14, 2015 at 1:53 AM, Cam Hutchison<EMAIL_ADDRESS>wrote:

I should also add my other thought about timestamp strings: It is possible
to 'touch -d ' on the root of the tree you are importing, and then use that
directory as the timestamp source. This is not that friendly, but it does
serve to make all cases possible. touch(1) has a very flexible timedate
string format too.
To address an earlier comment by @jdchristensen
https://github.com/jdchristensen, I am against having multiple flags
(one for timestamp from file mtime, another for timestamp as string), as I
think it bloats the interface too much. I'm a fan of "keep it simple". It's
reasonably easy to differentiate between different types of argument
values, so I'd prefer to do that.
If anyone is interested, my working copy of this is camh-@5cce7c1
https://github.com/camh-/attic/commit/5cce7c1de7b3b6be88b9ca12b78d517d582dba3d
—
Reply to this email directly or view it on GitHub
https://github.com/jborg/attic/issues/263#issuecomment-92548895.

--
Dmitry Astapov

I agree with specifying the timestamp as an ISO-standard string. Timezones should not be an issue as they can be specified as part of the string. I do not like the idea of magically taking the time from directories or files, for reasons already said (too much assumption, may be incorrect).
@adept Unfortunately, faketime doesn't help me much when backing up to a remote repository... hence the need for a command line switch, plus the ability to do this without external dependencies.

@danwilliams, there's nothing magical about it. You take the mtime from the file explicitly specified to the given option. There are no assumptions
Any backup of reasonable fidelity is going to have a container that has the timestamp of the backup (whether that container is a directory, a tarball, a log file, etc).
Can I ask where people who want a timestamp string are actually getting their timestamp from?
BTW. If you really want to follow the ISO standard (ISO 8601), note that "2015-101T24" is a valid date string. Plus multiple other variations. ISO also does not have timezones, only UTC offsets. You need to know yourself whether a particular date/time was during daylight savings and apply the appropriate offset yourself. Not particularly user-friendly.

@camh Sorry, I was referring to the idea put forward at one point about taking it from a base folder. I didn't like that much. Taking it from a specified file seems fine and non-magical, but not in place of specifying a string, only as an alternative.
Personally my timestamps come from the date the backup was made. It is possible that nothing has changed inside the filesystem for some time, so if you do subsequent backups it would be odd if they magically came out as the same date.
I don't see any timezone issue because if I ask the system for the date of a file, including timezone (offset, not named) then I can simply pass this along. This is what my existing conversion scripts already do. So that all sounds fine to me, no biggie.

See PR #285.


dbt builtin profiler

I built a very blunt profiling tool to use with dbt. You can use it with the --record-timing-info or -r flags. So, dbt -r output.profile compile will run that command, writing profiler output to output.profile.

Here's an example output, visualized in snakeviz:

The most obvious low-hanging fruit here is that threading.py:263(wait) -- it turns out that we lock around actually acquiring a connection to the database. This seems unnecessary, we should only have to lock around acquiring a connection out of the pool, not necessarily opening it and performing other I/O on the database.
The more complex one (and also a bigger win if we can untangle it) is the loader -- it takes around 60% of the total run time. Half of that is spent in Jinja parsing

I pulled this branch locally, keen to see what is happening in my own projects.. and I get an error running any dbt command :(  This is the output of dbt deps. The repo in question is https://github.com/elexisvenator/dbt-performance-issue
2018-09-20 23:26:25,252 (MainThread): Tracking: tracking
2018-09-20 23:26:25,252 (MainThread): Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4f1be0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4f1e80>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4f1898>]}
2018-09-20 23:26:26,225 (MainThread): Executing "git clone --depth 1 https://github.com/fishtown-analytics/dbt-utils.git 859fd0fa21176efee375a447937f7a46"
2018-09-20 23:26:26,229 (MainThread): STDOUT: "b''"
2018-09-20 23:26:26,229 (MainThread): STDERR: "b"fatal: destination path '859fd0fa21176efee375a447937f7a46' already exists and is not an empty directory.\n""
2018-09-20 23:26:26,229 (MainThread): Updating existing dependency 859fd0fa21176efee375a447937f7a46.
2018-09-20 23:26:26,230 (MainThread): Executing "git rev-parse HEAD"
2018-09-20 23:26:26,234 (MainThread): STDOUT: "b'769794490d24b9efa1bede0a7c36451a630f9166\n'"
2018-09-20 23:26:26,234 (MainThread): STDERR: "b''"
2018-09-20 23:26:26,234 (MainThread):   Checking out branch 0.1.8.
2018-09-20 23:26:26,234 (MainThread): Executing "git remote set-branches origin 0.1.8"
2018-09-20 23:26:26,240 (MainThread): STDOUT: "b''"
2018-09-20 23:26:26,240 (MainThread): STDERR: "b''"
2018-09-20 23:26:26,241 (MainThread): Executing "git fetch --tags --depth 1 origin 0.1.8"
2018-09-20 23:26:27,767 (MainThread): STDOUT: "b''"
2018-09-20 23:26:27,767 (MainThread): STDERR: "b'From https://github.com/fishtown-analytics/dbt-utils\n * tag               0.1.8      -> FETCH_HEAD\n'"
2018-09-20 23:26:27,767 (MainThread): Executing "git tag --list"
2018-09-20 23:26:27,771 (MainThread): STDOUT: "b'0.0.1\n0.1.0\n0.1.1\n0.1.10\n0.1.11\n0.1.12\n0.1.13\n0.1.14\n0.1.15\n0.1.2\n0.1.3\n0.1.4\n0.1.5\n0.1.6\n0.1.7\n0.1.8\n0.1.9\n'"
2018-09-20 23:26:27,772 (MainThread): STDERR: "b''"
2018-09-20 23:26:27,772 (MainThread): Executing "git reset --hard tags/0.1.8"
2018-09-20 23:26:27,776 (MainThread): STDOUT: "b'HEAD is now at 7697944 Update README.md\n'"
2018-09-20 23:26:27,777 (MainThread): STDERR: "b''"
2018-09-20 23:26:27,777 (MainThread): Executing "git rev-parse HEAD"
2018-09-20 23:26:27,780 (MainThread): STDOUT: "b'769794490d24b9efa1bede0a7c36451a630f9166\n'"
2018-09-20 23:26:27,780 (MainThread): STDERR: "b''"
2018-09-20 23:26:27,781 (MainThread):   Already at 7697944, nothing to do.
2018-09-20 23:26:27,783 (MainThread): Executing "git clone --depth 1 https://github.com/PageUpPeopleOrg/pageup-dbt-utils.git a07af741d8a5793c88f4b3a3828050ff"
2018-09-20 23:26:27,787 (MainThread): STDOUT: "b''"
2018-09-20 23:26:27,787 (MainThread): STDERR: "b"fatal: destination path 'a07af741d8a5793c88f4b3a3828050ff' already exists and is not an empty directory.\n""
2018-09-20 23:26:27,787 (MainThread): Updating existing dependency a07af741d8a5793c88f4b3a3828050ff.
2018-09-20 23:26:27,787 (MainThread): Executing "git rev-parse HEAD"
2018-09-20 23:26:27,791 (MainThread): STDOUT: "b'1c9d8d36ae3518a6d2bf0e9df0fc08f5f1d7fd59\n'"
2018-09-20 23:26:27,791 (MainThread): STDERR: "b''"
2018-09-20 23:26:27,791 (MainThread):   Checking out branch 1.2.0.
2018-09-20 23:26:27,791 (MainThread): Executing "git remote set-branches origin 1.2.0"
2018-09-20 23:26:27,795 (MainThread): STDOUT: "b''"
2018-09-20 23:26:27,795 (MainThread): STDERR: "b''"
2018-09-20 23:26:27,795 (MainThread): Executing "git fetch --tags --depth 1 origin 1.2.0"
2018-09-20 23:26:29,247 (MainThread): STDOUT: "b''"
2018-09-20 23:26:29,247 (MainThread): STDERR: "b'From https://github.com/PageUpPeopleOrg/pageup-dbt-utils\n * tag               1.2.0      -> FETCH_HEAD\n'"
2018-09-20 23:26:29,247 (MainThread): Executing "git tag --list"
2018-09-20 23:26:29,252 (MainThread): STDOUT: "b'0.1.0\n0.1.1\n0.2.0\n0.2.1\n1.0.0\n1.1.0\n1.2.0\n2.0.0\n'"
2018-09-20 23:26:29,252 (MainThread): STDERR: "b''"
2018-09-20 23:26:29,252 (MainThread): Executing "git reset --hard tags/1.2.0"
2018-09-20 23:26:29,258 (MainThread): STDOUT: "b'HEAD is now at 1c9d8d3 Update equality_for_range to support filtering out timestamp columns. (#3)\n'"
2018-09-20 23:26:29,258 (MainThread): STDERR: "b''"
2018-09-20 23:26:29,258 (MainThread): Executing "git rev-parse HEAD"
2018-09-20 23:26:29,263 (MainThread): STDOUT: "b'1c9d8d36ae3518a6d2bf0e9df0fc08f5f1d7fd59\n'"
2018-09-20 23:26:29,263 (MainThread): STDERR: "b''"
2018-09-20 23:26:29,264 (MainThread):   Already at 1c9d8d3, nothing to do.
2018-09-20 23:26:29,268 (MainThread): Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4cbc88>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4f17b8>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x7f346f4f1f60>]}
2018-09-20 23:26:30,263 (MainThread): Flushing usage events
2018-09-20 23:26:30,264 (MainThread): Encountered an error:
2018-09-20 23:26:30,265 (MainThread): Runtime Error
  Invalid arguments passed to "Project" instance: models.None is not of type 'object'
2018-09-20 23:26:30,271 (MainThread): Traceback (most recent call last):
  File "/src/dbt/dbt/config.py", line 183, in from_project_config
    ProjectContract(**project_dict)
  File "/src/dbt/dbt/api/object.py", line 37, in __init__
    self.validate()
  File "/src/dbt/dbt/api/object.py", line 88, in validate
    raise JSONValidationException(type(self).__name__, errors)
dbt.exceptions.JSONValidationException: Runtime Error
  Invalid arguments passed to "Project" instance: models.None is not of type 'object'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/src/dbt/dbt/main.py", line 76, in main
    results, succeeded = handle_and_check(args)
  File "/src/dbt/dbt/main.py", line 133, in handle_and_check
    task, res = run_from_args(parsed)
  File "/src/dbt/dbt/main.py", line 188, in run_from_args
    results = run_from_task(task, cfg, parsed)
  File "/src/dbt/dbt/main.py", line 196, in run_from_task
    result = task.run()
  File "/src/dbt/dbt/task/deps.py", line 439, in run
    target_config = final_deps[name].fetch_metadata(self.config)
  File "/src/dbt/dbt/task/deps.py", line 83, in fetch_metadata
    self._cached_metadata = self._fetch_metadata(project)
  File "/src/dbt/dbt/task/deps.py", line 240, in _fetch_metadata
    return project.from_project_root(path)
  File "/src/dbt/dbt/config.py", line 319, in from_project_root
    return cls.from_project_config(project_dict, packages_dict)
  File "/src/dbt/dbt/config.py", line 185, in from_project_config
    raise DbtProjectError(str(e))
dbt.config.DbtProjectError: Runtime Error
  Invalid arguments passed to "Project" instance: models.None is not of type 'object'

It looks like it's not liking something in the pageup_dbt_utils project. Removing that project and all references fixes the issue, not sure exactly what the issue is though.

@elexisvenator do you also get this error on the dev/guion-bluford branch?

It's caused by the format of the models entry in that project's dbt_project.yml. Yaml interprets
models:

with no data inside it as None instead of []. We should fix that.


ui-select changes model from a dict to a string

Hi there, great lib thanks for that.
I'm encountering a small bug? when updating the bound model. (am using angular-formly)
as you can see from the following, the json structure gets replaced with a simple string, whereas i believe it should simply change the model to the selected name, value?

     $scope.product.fake_brand       = {"text": $scope.product.brand.name || null, "id": $scope.product.brand.id};
      $scope.fields = [
        {
          className: 'row',
          fieldGroup: [
            {
              className: 'col-xs-6',
              key: 'fake_brand',
              type: 'async-ui-select',
              templateOptions: {
                label: 'Brand',
                valueProp: 'text',
                labelProp: 'text',
                options: [],
                refresh: refreshBrands,
                refreshDelay: 0
              }
            },
           ...

nevermind.. sorry completely misunderstood my own code...
got rid of
option[to.valueProp || 'value'] as option

and all is well


Add SPDX 2.3 support

This PR adds SPDX 2.3 support SBOM Scorecard.
While the number of SPDX fields in use is still low, we can create an abstract document model we can use to test against.
The main test report has been modified to use the abstract document. The document.go package lays the groundwork for the extensible doc model and adds a few functions to read and populate the common model with the fields the report cares about. The abstract document can be expanded to add more fields as the tests get more sophisticated.
A simple test of the new loader and test SBOMs are included.

Thanks so much for this PR. I'm going to delay merging until very early January, as I'm hoping to spend time away from coding for a bit. If I cave during this vacation.. it might make it in earlier, but wanted to set some expectations.

Hey @puerco . Just checking in to see if I should pick this PR up and carry it forward or if you're planning to make the changes.
Thanks again for getting it this far. :)


Add security on by default documentation

This PR revamps the connecting section of the documentation and adds relevant examples on how to connect, use TLS and authenticate a client on different cluster layouts.

Many thanks for the review @szabosteve !

@Anaethelion My pleasure!


AliasColors allows only hardcoded keys

I'm not entirely sure if I understood it correctly but isn't https://github.com/spoved/crafana.cr/blob/master/src/crafana/models/alias_colors.cr supposed to support arbitrary key value pairs to map colors to the targets with a certain name in the legend?
Would it be possible to extend this?

I currently solved this in my fork like this https://github.com/cmur2/crafana.cr/commit/6f2d06580c331c975eb3b6947d0f35e287a3f37e which works but maybe there is a more elegant solution @kalinon ?

Let me review. I never really used alias colors that much so ill see if i can find anything in the api documentation

Thanks for that and also your effort in building this shard, it's very well built and useful!
If it helps this is a real world snippet from one of my dashboards using alias colors:
{
  "panels": [
    {
      "aliasColors": {
        "idle": "#ffcc00",
        "iowait": "#330099",
        "nice": "#ff8000",
        "softirq": "#aa2b00",
        "system": "#00cc00",
        "user": "#0066b3"
      },
      "bars": false,
      "dashLength": 10
    }
  ]
}

Perfect, I dont see anything in the official API docs for it.
How about possibly changing it to:
Hash(String, String | Crafana::RGBA | Crafana::RGB)

We could even ditch the AliasColors object or alias it to the hash.

I should probably also make an issue to make color parsing easier. So if people want to use hex colors they can, or whatever format they want. If we do String | Crafana::RGBA | Crafana::RGB it might actually break things on de-serialization.

I think dropping AliasColors object might make sense as long as we can avoid breaking changes in color parsing.

I think dropping AliasColors object might make sense as long as we can avoid breaking changes in color parsing.

Agreed. Perhaps adding a Hex color object and abstracting the json decode into a parent module. We can merge the Hash(String, String) in the meantime if youd like to get it into master.

I will open a PR for the Hash(String, String) change.


add PR template

This PR adds a pull request template for new or updated tutorials or articles.
Closes #104

A fine template @hansvancalster 👍.
I was wondering whether referral to https://github.com/inbo/tutorials/blob/master/.github/workflows/REVIEWING.md would also be relevant to include as a markdown note at the end, considering that after creation of the pull request a rendered dev-website will be created automatically in GH Actions. In that way the author can play a reviewing role already, checking that everything renders OK. Not sure if that fits the idea of the PR template.

Good idea. Done in 435dd8e


Move already instrumented executable log messages to Debug level

For default configs in helm charts, these messages flood the info logs for some periodic processes.

Codecov Report
Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 53.05%. Comparing base (86c0519) to head (4e770db).

Files with missing lines
Patch %
Lines

pkg/internal/discover/attacher.go
0.00%
1 Missing :warning:

:exclamation:  There is a different number of reports uploaded between BASE (86c0519) and HEAD (4e770db). Click for more details.
HEAD has 3 uploads less than BASE

Flag
BASE (86c0519)
HEAD (4e770db)

oats-test
1
0

k8s-integration-test
1
0

integration-test
1
0

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1227       +/-   ##
===========================================
- Coverage   81.75%   53.05%   -28.71%
===========================================
  Files         137      137
  Lines       11483    11483
===========================================
- Hits         9388     6092     -3296
- Misses       1558     4998     +3440
+ Partials      537      393      -144

Flag
Coverage Δ

integration-test
?

k8s-integration-test
?

oats-test
?

unittests
53.05% <0.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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