[BUG] Wrong GPU frequency shown.

General description of bug:

What happened: Fastfetch shows 1.67 GHz instead of 1.34 GHz as frequency for NVIDIA GeForce GTX 1060 with Max-Q design.
What should happen: FAstfetch should show 1.34 GHz.
Fastfetch version used: 2.16.0
Did it work in an older version: No.
Where did you get the binary: Scoop on Windows 11.
Does this issue still occur in the latest dev build: Yes.

Often helpful information:
The content of the configuration file you use (if any):
{
	"general": {
		"processingTimeout": 100000,
		"wmiTimeout": 100000
	},
	"display": {
		"noBuffer": true,
		"showErrors": true
	},
	"modules": [
        {
			"type": "gpu",
			"driverSpecific": true,
			"detectionMethod": "auto",
			"hideType": "none",
			"temp": true
		},
		{
			"type": "vulkan"
		},
		{
			"type": "opengl"
		},
		{
			"type": "opencl"
		},
		{
			"type": "version"
		}
	]
}

Output of fastfetch -c ci.jsonc --format json:
[
  {
    "type": "GPU",
    "result": [
      {
        "coreCount": 1280,
        "memory": {
          "dedicated": {
            "total":<PHONE_NUMBER>,
            "used": null
          },
          "shared": {
            "total":<PHONE_NUMBER>4,
            "used": null
          }
        },
        "driver": "<IP_ADDRESS>12",
        "name": "NVIDIA GeForce GTX 1060 with Max-Q Design",
        "temperature": 49.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.1",
        "frequency": 1.67
      }
    ]
  },
  {
    "type": "Vulkan",
    "result": {
      "apiVersion": "1.3.277",
      "conformanceVersion": "1.3.2",
      "driver": "NVIDIA [552.12]",
      "gpus": [
        {
          "type": "Discrete",
          "vendor": "NVIDIA",
          "name": "NVIDIA GeForce GTX 1060 with Max-Q Design",
          "driver": "552.12",
          "platformApi": "Vulkan 1.3.277",
          "memory": {
            "dedicated": {
              "total":<PHONE_NUMBER>,
              "used": null
            },
            "shared": {
              "total":<PHONE_NUMBER>6,
              "used": null
            }
          },
          "deviceId": 7264
        }
      ]
    }
  },
  {
    "type": "OpenGL",
    "result": {
      "version": "4.6.0 NVIDIA 552.12",
      "renderer": "NVIDIA GeForce GTX 1060 with Max-Q Design/PCIe/SSE2",
      "vendor": "NVIDIA Corporation",
      "slv": "4.60 NVIDIA",
      "library": "WGL"
    }
  },
  {
    "type": "OpenCL",
    "error": "Fastfetch was build without OpenCL support"
  },
  {
    "type": "Version",
    "result": {
      "projectName": "fastfetch",
      "architecture": "x86_64",
      "version": "2.16.0",
      "versionTweak": "",
      "cmakeBuiltType": "RelWithDebInfo",
      "compileTime": "Jun 19 2024, 06:40:11",
      "compiler": "clang 18.1.6",
      "debugMode": false,
      "libc": "ucrt 14.0"
    }
  }
]

Output of fastfetch --list-features:
threads
vulkan
zlib
Proprietary GPU driver API

Both GPU-Z and this Python script do get the correct frequency.
from __future__ import print_function
__author__      = "Zhi-Qiang Zhou"
__copyright__   = "Copyright 2017"

import pyopencl as cl

def openclInfo():
    """Print OpenCL information.
    """
    platforms = cl.get_platforms()
    print('There are {:d} platform(s) detected:\n'.format(len(platforms)))
    print(70 * '-')
    for platform_id, platform in enumerate(platforms):
        print('Platform:             ', platform.name)
        print('Vendor:               ', platform.vendor)
        print('Version:              ', platform.version)
        print('Number of devices:    ', len(platform.get_devices()))
        print('  ' + 68 * '-')
        for device_id, device in enumerate(platform.get_devices()):
            printDeviceInfo(platform_id, device_id, prefix='  ')
            print('  ' + 68 * '-')

def printDeviceInfo(platform_id, device_id, prefix=''):
    """Print OpenCL device information.

    Args:
        platform_id (int): Platform ID
        device_id (int): Device ID
        prefix (str): Prefix string
    """
    platforms = cl.get_platforms()
    devices = platforms[platform_id].get_devices()
    device = devices[device_id]
    print(prefix + 'Device {:d}:'.format(device_id), str(device.name),
        '[Type: {:s}]'.format(cl.device_type.to_string(device.type)))
    print(prefix + '  Device version:               ', device.version)
    print(prefix + '  Driver version:               ', device.driver_version)
    print(prefix + '  Vendor:                       ', device.vendor)
    print(prefix + '  Available:                    ', bool(device.available))
    print(prefix + '  Address bits:                 ', device.address_bits)
    print(prefix + '  Max compute units:            ', device.max_compute_units)
    print(prefix + '  Max clock frequency:          ', device.max_clock_frequency, 'MHz')
    print(prefix + '  Global memory:                ', int(device.global_mem_size / 1024**2), 'MB')
    print(prefix + '  Global cache memory:          ', int(device.global_mem_cache_size), 'B')
    print(prefix + '  Local memory:                 ', int(device.local_mem_size / 1024), 'KB')
    print(prefix + '  Max allocable memory:         ', int(device.max_mem_alloc_size / 1024**2), 'MB')
    print(prefix + '  Host unified memory:          ', bool(device.host_unified_memory))
    print(prefix + '  Max constant args:            ', device.max_constant_args)
    print(prefix + '  Max work group size           ', device.max_work_group_size)
    print(prefix + '  Max work item dimensions:     ', device.max_work_item_dimensions)
    print(prefix + '  Max work item size:           ', device.max_work_item_sizes)
    print(prefix + '  Image support:                ', bool(device.image_support))
    print(prefix + '  Max Image2D size (H x W):     ', device.image2d_max_height, 'x',
        device.image2d_max_width)
    print(prefix + '  Max Image3D size (D x H x W): ', device.image3d_max_depth, 'x',
        device.image3d_max_height, 'x', device.image3d_max_width)

if __name__ == '__main__':

    openclInfo()
    _ = input('Press enter to quit: ')

==============NVSMI LOG==============

Timestamp                                 : Thu Jun 20 07:17:53 2024
Driver Version                            : 555.99
CUDA Version                              : 12.5

Attached GPUs                             : 1
GPU 00000000:01:00.0
    Product Name                          : NVIDIA GeForce RTX 3070 Ti Laptop GPU
    Product Brand                         : GeForce
    Product Architecture                  : Ampere
    Display Mode                          : Disabled
    Display Active                        : Disabled
    Persistence Mode                      : Enabled
    Addressing Mode                       : N/A
    MIG Mode
        Current                           : N/A
        Pending                           : N/A
    Accounting Mode                       : Disabled
    Accounting Mode Buffer Size           : 4000
    Driver Model
        Current                           : WDDM
        Pending                           : WDDM
    Serial Number                         : N/A
    GPU UUID                              : GPU-317b1ee1-938f-259c-21e3-3bac71f77dd3
    Minor Number                          : N/A
    VBIOS Version                         : 94.04.7e.00.03
    MultiGPU Board                        : No
    Board ID                              : 0x100
    Board Part Number                     : N/A
    GPU Part Number                       : 24A0-760-A1
    FRU Part Number                       : N/A
    Module ID                             : 1
    Inforom Version
        Image Version                     : G001.0000.03.03
        OEM Object                        : 2.0
        ECC Object                        : N/A
        Power Management Object           : N/A
    Inforom BBX Object Flush
        Latest Timestamp                  : N/A
        Latest Duration                   : N/A
    GPU Operation Mode
        Current                           : N/A
        Pending                           : N/A
    GPU C2C Mode                          : N/A
    GPU Virtualization Mode
        Virtualization Mode               : None
        Host VGPU Mode                    : N/A
        vGPU Heterogeneous Mode           : N/A
    GPU Reset Status
        Reset Required                    : No
        Drain and Reset Recommended       : N/A
    GSP Firmware Version                  : N/A
    IBMNPU
        Relaxed Ordering Mode             : N/A
    PCI
        Bus                               : 0x01
        Device                            : 0x00
        Domain                            : 0x0000
        Device Id                         : 0x24A010DE
        Bus Id                            : 00000000:01:00.0
        Sub System Id                     : 0x13241462
        GPU Link Info
            PCIe Generation
                Max                       : 4
                Current                   : 4
                Device Current            : 4
                Device Max                : 4
                Host Max                  : 4
            Link Width
                Max                       : 16x
                Current                   : 8x
        Bridge Chip
            Type                          : N/A
            Firmware                      : N/A
        Replays Since Reset               : 0
        Replay Number Rollovers           : 0
        Tx Throughput                     : 0 KB/s
        Rx Throughput                     : 0 KB/s
        Atomic Caps Inbound               : N/A
        Atomic Caps Outbound              : N/A
    Fan Speed                             : N/A
    Performance State                     : P0
    Clocks Event Reasons
        Idle                              : Active
        Applications Clocks Setting       : Not Active
        SW Power Cap                      : Not Active
        HW Slowdown                       : Not Active
            HW Thermal Slowdown           : Not Active
            HW Power Brake Slowdown       : Not Active
        Sync Boost                        : Not Active
        SW Thermal Slowdown               : Not Active
        Display Clock Setting             : Not Active
    Sparse Operation Mode                 : N/A
    FB Memory Usage
        Total                             : 8192 MiB
        Reserved                          : 174 MiB
        Used                              : 0 MiB
        Free                              : 8018 MiB
    BAR1 Memory Usage
        Total                             : 8192 MiB
        Used                              : 8164 MiB
        Free                              : 28 MiB
    Conf Compute Protected Memory Usage
        Total                             : N/A
        Used                              : N/A
        Free                              : N/A
    Compute Mode                          : Default
    Utilization
        Gpu                               : 0 %
        Memory                            : 0 %
        Encoder                           : 0 %
        Decoder                           : 0 %
        JPEG                              : 0 %
        OFA                               : 0 %
    Encoder Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    FBC Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    ECC Mode
        Current                           : N/A
        Pending                           : N/A
    ECC Errors
        Volatile
            SRAM Correctable              : N/A
            SRAM Uncorrectable Parity     : N/A
            SRAM Uncorrectable SEC-DED    : N/A
            DRAM Correctable              : N/A
            DRAM Uncorrectable            : N/A
        Aggregate
            SRAM Correctable              : N/A
            SRAM Uncorrectable Parity     : N/A
            SRAM Uncorrectable SEC-DED    : N/A
            DRAM Correctable              : N/A
            DRAM Uncorrectable            : N/A
            SRAM Threshold Exceeded       : N/A
        Aggregate Uncorrectable SRAM Sources
            SRAM L2                       : N/A
            SRAM SM                       : N/A
            SRAM Microcontroller          : N/A
            SRAM PCIE                     : N/A
            SRAM Other                    : N/A
    Retired Pages
        Single Bit ECC                    : N/A
        Double Bit ECC                    : N/A
        Pending Page Blacklist            : N/A
    Remapped Rows                         : N/A
    Temperature
        GPU Current Temp                  : 51 C
        GPU T.Limit Temp                  : N/A
        GPU Shutdown Temp                 : 98 C
        GPU Slowdown Temp                 : 95 C
        GPU Max Operating Temp            : 105 C
        GPU Target Temperature            : 87 C
        Memory Current Temp               : N/A
        Memory Max Operating Temp         : N/A
    GPU Power Readings
        Power Draw                        : 31.83 W
        Current Power Limit               : 125.00 W
        Requested Power Limit             : N/A
        Default Power Limit               : 125.00 W
        Min Power Limit                   : 1.00 W
        Max Power Limit                   : 150.00 W
    GPU Memory Power Readings
        Power Draw                        : N/A
    Module Power Readings
        Power Draw                        : N/A
        Current Power Limit               : N/A
        Requested Power Limit             : N/A
        Default Power Limit               : N/A
        Min Power Limit                   : N/A
        Max Power Limit                   : N/A
    Clocks
        Graphics                          : 1485 MHz
        SM                                : 1485 MHz
        Memory                            : 7000 MHz
        Video                             : 1305 MHz
    Applications Clocks
        Graphics                          : N/A
        Memory                            : N/A
    Default Applications Clocks
        Graphics                          : N/A
        Memory                            : N/A
    Deferred Clocks
        Memory                            : N/A
    Max Clocks
        Graphics                          : 1785 MHz
        SM                                : 1785 MHz
        Memory                            : 7001 MHz
        Video                             : 1575 MHz
    Max Customer Boost Clocks
        Graphics                          : N/A
    Clock Policy
        Auto Boost                        : N/A
        Auto Boost Default                : N/A
    Voltage
        Graphics                          : 787.500 mV
    Fabric
        State                             : N/A
        Status                            : N/A
        CliqueId                          : N/A
        ClusterUUID                       : N/A
        Health
            Bandwidth                     : N/A
    Processes                             : None
    Capabilities
        EGM                               : disabled

Same issue mine reports as 50Mhz lmao imagine the power efficiency if it was real

Here is some more data:
NVIDIA-smi reports 1670 MHz graphics max, 1670 MHz SM max, 4004 MHz memory max, 1506 MHz video max,
PyOpenCL reports 1341 MHz max,
NVIDIA Control Panel reports 1063 MHz graphics,
GPU-Z reports 1063 MHz graphics, 1342 MHz graphics max, 2002 MHz memory.
NVIDIA doesn't seem to have specs page for the Max-Q variant, for regular GTX 1060 it has this: graphics 1506 MHz, processor 1708 MHz.
Clocks for Max-Q variant, taken from techpowerup.com: base 1063 MHz, boost 1480 MHz, memory 2002 MHz.
Clocks for Max-Q variant, taken from notebookcheck.net: 1063 MHz - 1265 MHz - 1341 MHz - 1480 MHz boost, 8000 MHz memory.
Now I'm not even sure what is the real max frequency 1341 MHz, 1480 or 1670 MHz?
Is GPU-Z and PyOpenCl right, or NVIDIA-smi, or the websites?
If somebody knows, or knows how to check the real one, please tell me.
nvsmi_log.txt
pyopencl_log.txt

@nonetrix It was current frequency not max frequency. AMD drivers only report current frequency.
https://www.kernel.org/doc/html/v5.10/gpu/amdgpu.html#hwmon-interfaces

Yes correct, it also isn't able to go down to 20MHz last time I checked

@Null-Ping We use nvmlDeviceGetMaxClockInfo to query max frequency for NV cards. I'll check it later

If somebody knows, or knows how to check the real one, please tell me.

Maybe run some GPU stress tests, and read the current frequency

Furmark reports frequencies up to 1493, so i seems like the 1480 number is more accurate.
From what I have read, 1670 MHz is only for regular GTX 1060, not for the Max-Q.
1341 MHz is normal boost clock for Max-Q, and 1480 is overclocked boost clock.
(I did not overclock my GPU though, but maybe the laptop manufacturer HP did, sadly, the BIOS is to locked-up to get any information from there.)

Also, this report shows the correct frequency for OpenCL:
https://opencl.gpuinfo.org/displayreport.php?id=191
No idea why on my laptop it is different.

Tested myself

GPU-z itself reports current freq higher than its max freq. Seems fastfetch and nvidia-smi ( which both use nvml ) are correct

There are many nvml bindings for python. You should be able to use them to get the same result

Furmark reports frequencies up to 1493, so i seems like the 1480 number is more accurate.

Please make sure that it reports the maximum frequency, not the average freq or temperature limited freq

--gpu-detection-method opencl was added in the dev branch.

Thanks.
After all I managed to get the frequency to 1.67 GHz in Furmark, by decreasing load.
So I guess GPU-Z, OpenCL, and partially the websites are wrong.
Sorry for bad report.


Specifically in relation to this proposal, the NAMING.md file was part of a strategy to make it possible for the community to clearly see the constraints, in order to make it easier for members of the community to engage. @leobalter will be bringing up Global again to the committee, and we will likely discuss issues with this that we hadn't discussed earlier. @ljharb also drafted a comment that addressed the specific failings of this proposal. It is not possible to do things perfectly, but in the future we are hoping to move things in a productive direction.
There are further experiments and changes that we are trying, but are not part of the process. These experiments come from doing surveys, and talking to other language development groups such as the team around Rust.

we have started a pilot project of "groups" -- video calls for target areas of the community, including, open door (everyone is invited), educators, framework authors, and tooling authors. The goal with these is to allow more general discussion around a set of proposal with a specific lens, and to help us report back, and get questions and feedback from these focus groups. The discussions in these groups do not have direct impact on the plenary, but committee members can report back and use these discussions to help shape their arguments. This should have a more direct impact, and make it possible to discuss issues around proposals -- for example this process issue that you brought up.
We are working on improving our communication, including writing several new documents to make it possible for the community to understand how we work and what our concerns are when making decisions. We want to be more transparent.
Working with an expert to improve how we gather data about how people use and understand the language.

This does not address your concerns, as it doesn't remove the consensus process. The consensus process is important for many committee members, and it is unclear how this might be changed at the present moment. However, we are doing these things because what we can do is change how we communicate. How we take on community feedback, how we enable the community to give back high quality feedback, and how we structure the criteria of a proposal. I might just be an optimist, but I think we can change things.
I would also like to move this conversation back to being on topic -- this issue is about naming, and is closed. It is also a very charged thread. I would like to have a path forward for opening a new issue so the discussion can continue in a productive direction. One potential path forward is to challenge a constraint -- this is quite difficult and might be met with resistance, but not impossible. If this is the case, we can detail what the constraint is if it is unclear. The other is to consider another name that is not ruled out by the constraints, this is more likely to work. Global will be argued for again, is there another one that people would like to argue for?

I still say, RFCs are a solution that can help improve the process. If feedback is needed for more than one stage, then there can be multiple RFCs. In fact, instead of saying, "the community can chime in, any time they want", which makes gathering the feedback piecemeal at best, the TC39 can specifically ask for feedback - at - the - right - time, allowing for the feedback to be better funneled. The TC39 can be open for feedback at any time despite the RFC steps too.

this process of change is not without pitfalls and we are bound to make mistakes

I like the humility here. We are all only human. 👍
Scott

@ljharb, @codehag I need to apologize for what I said a couple of comments on top. I lost my temper due to frustration (no excuses though) and I shouldn’t have.
I think a couple of comments above things that frustrate me have been mentioned by @hax.
Still I believe we should put way more efforts towards fixing the process. (I don't know how to fix it though.)
Thanks for your hard work.

@dcleao Thanks for your thoughts! I appreciate your feedback. I wanted to reply to a few points you made on versioning and engines:

how can browser convenience weigh more?

if browsers refuse to ship something, then nobody gets to use it. If browsers were unwilling to ship versions (note, I'm not claiming they absolutely are, but I suspect they would be), then versions would either never land in the spec - or worse, would land, but never be implemented, making them de-facto non-standard. There's not really a feasible way to force private companies to ship changes in their privately owned and managed software products, nor would it universally be considered a good thing to have a world with that kind of coercion.
There's the secondary concern that many browser versions do not implement precisely 100% of a given edition, and no further - for example, no engine fully complied with ES5 until a year or three ago, despite implementing a great many newer features. Experience and industry advice tells me that feature testing is reliable; whereas version testing (or user agent sniffing) are what's inherently unreliable, because (just like browser user agent strings) versions are often deceptive. There's plenty of times, for example, that a browser (that all of us, I'm sure) shipped a feature, claimed it was "done", and then it had bugs - at that point, you'd either have to maintain a complex table of version numbers mapped to feature tables, or, you could directly feature-test and always find out whether it works as you expect or not.

@ljharb

if browsers refuse to ship

browsers are people behind them and those people are developers as well, with a sense of beauty (regarding the language), I hope. Not to start a new discussion, just added 2 cents.

I don’t find versions “beautiful”, and i suspect I’m not alone in that given the committee’s and browsers’ historically consistent and strong stance to not ever version the language.

https://www.reddit.com/r/web/comments/axp3nx/who_owns_web_standards/

'global' is the ideal name. Since it's being used by Node.js already, I prefer 'globalThis'. 'Global' looks like a class, because the uppercase letter in the beginning is conventioned for classes.
global is interesting, but I'd leave '__' for the JS engine internals.
That's my 2 cents

The blacklash this proposal is getting is well overdue thanks to this post.

globalThis sounds and looks like a user-defined variable name
why this spec caters to or needs to cater to nodejs makes no sense; node should adhere to the es standards and not the other way around

Pretty much every other suggestion is better than globalThis: GLOBAL_THIS, GLOBAL , and even the __global__.  Let's get our $ together and change this

@srsgores it’s not catering to node at all; code on the web breaks with “global”.
Every browser has shipped globalThis, and has also been unwilling to try any other name. No change can be made.
I’m going to lock this issue; please give https://github.com/tc39/proposal-global/blob/master/NAMING.md a thorough read before filing future questions about naming rationales.


Disable asset caching on development & staging environments, but allow it in production

Submit a feature request or bug report

[x] I've read the guidelines for Contributing to Roots Projects
[x] This is a feature request
[ ] This is a bug report
[x] This request isn't a duplicate of an existing issue
[x] I've read the docs and followed them (if applicable)

What is the current behavior?
I was having some troubles with browser caching assets on my local Trellis installation, and sometimes I was facing a bug type of "this shouldn't happen", mostly because of the browser cache.
What is the expected or desired behavior?
Setting a version to be the unix epoch like this fixed the problem.
wp_enqueue_script("theme-js", get_template_directory_uri() . "/dist/js/bundle.js", array(), date("U"), true);
But because I want to leverage browser caching on production environments, I did this to get rid of the version.
  if (WP_ENV === 'production' && !is_admin()) {     add_theme_support('soil-disable-asset-versioning'); }
So I'm suggesting adding this as a additional mu-plugin to bedrock.
Feature Request
Please provide use cases for changing the current behavior:
Disables browser caching on development & staging servers, enough said?

Not sure exactly what was going on in your case and what the problem was, but even if you wanted some functionality like this in an mu-plugin it's not something that should be included in Bedrock by default.
Bedrock shouldn't have specific code to integrate with other Roots projects. And this is Soil specific. Not default WP behaviour.

I think it's pretty much the same thing as the disallow indexing mu-plugin, but that's just my opinion. Soil was just an example, and as you must know, this is very trivial thing to do, but often overlooked (or forgotten).
https://github.com/roots/soil/blob/master/modules/disable-asset-versioning.php


sinkv2(cdc): fix sink worker for splitTxn is false

Signed-off-by: qupeng<EMAIL_ADDRESS>What problem does this PR solve?
Issue Number: close #7990 .
What is changed and how it works?
Suppose there are 2 transactions with CommitTs 3 and 4.
Without the PR, sink worker can only advance to 3 even if it can know 4 is finished. And then it will call tryAcquire, and it may fail.
With the PR sink worker can advance to 4 with a batch ID.
Check List
Tests

Unit test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/run-all-tests

/run-kafka-integration-test

/run-verify

/merge


Add first batch of java.time classes

This PR addresses #1618 and adds implementations for an initial batch of java.time classes, namely Duration and LocalTime. Since these classes depend on other classes and interfaces, mostly from java.time.temporal, the relevant classes are also implemented.
This PR also adds an implementation of java.lang.Enum in order to not violate the DRY principle (from the initial batch both java.time.temporal.ChronoUnit and java.time.temporal.ChronoField descend from java.lang.Enum).

Can one of the admins verify this patch?

Jenkins, ok to test

@ummels the tests will fail, since they require JDK8 when they are being compiled (otherwise java.time is not even defined). You will have to move them to test-suite/src/test/require-jdk8.

Oh, and thank you very much for the contribution, of course :)

@gzm0 Good point. I have moved the tests to test-suite/src/test/require-jdk8.

@ummels I must ask: did you look at any GPL'ed code when implementing this, such as OpenJDK or OracleJDK's source code?

@sjrd No, this is a clean-room implementation as required by the guidelines. I only looked at the API docs.

OK good. I had to check.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2178/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2825/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2177/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2824/
Test FAILed.

The test suite for Duration fails in fullOpt.
This is probably not your fault since it passes in fastOpt. It's more likely a bug in either a) Closure itself or b) our AST translator when targeting Closure.
I'll need time to debug that one. It probably won't be before September 24th that I can start looking into this.

@sjrd Okay, thanks!

The implementation of java.lang.Enum should be in its own commit, and you should then also update TimeUnit and RoundingMode to extend Enum in that commit.
@gzm0 Should we also make sbt.testing.Status extend Enum?

Yes, we probably should make sbt.testing.Status extend Enum?

That's all for the general comments. I'll let @nicolasstucki review the finer implementation.

@sjrd Thanks for your comments. I've just updated my PR to address all of them except the ones about require and BigInt.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2192/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2851/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2193/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2852/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2194/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2853/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2195/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2854/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2196/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2855/
Test FAILed.

Jenkins failed to build because we added the -Xfatal-warnings flag. Here are the warnings/errors:
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/Preconditions.scala:6:4: No space after token if
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/Duration.scala:138:6: Public method must have explicit type
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/Duration.scala:195:6: Public method must have explicit type
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoUnit.scala:17:15: Public method must have explicit type
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:47:23: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:53:23: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:104:21: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:104:36: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:116:21: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/temporal/ChronoField.scala:116:35: Use an uppercase L for long literals
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/LocalTime.scala:258:6: Public method must have explicit type
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/LocalTime.scala:353:6: Public method must have explicit type
[error] /localhome/jenkins/a/workspace/scalajs-task-worker_2/javalib/src/main/scala/java/time/LocalTime.scala:360:6: Public method must have explicit type

Actually, those are errors thrown by scalatype. Therefore just format issues.

That is all.

Some tests are failing:
[info] java.time.Duration
[error]  x should respond to `get`
org.scalajs.jasminetest.JasmineTestException: Expected<PHONE_NUMBER>854776000 to equal<PHONE_NUMBER>854775000.
	at <jscode>.new jasmine.ExpectationResult([stdin]:216)
	at <jscode>.null.toEqual([stdin]:1337)
	at <jscode>.LPa.e.k(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:26)
	at <jscode>.LPa.e.t(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:17)
	at <jscode>.null.<anonymous>(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/jasmine-test-framework/src/main/scala/org/scalajs/jasminetest/JasmineTest.scala:21)
	at <jscode>.jasmine.Block.execute([stdin]:1166)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
	at <jscode>.jasmine.Queue.start([stdin]:2151)
	at <jscode>.jasmine.Spec.execute([stdin]:2478)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
...
[error]  x should respond to `getSeconds`
org.scalajs.jasminetest.JasmineTestException: Expected<PHONE_NUMBER>854776000 to equal<PHONE_NUMBER>854775000.
	at <jscode>.new jasmine.ExpectationResult([stdin]:216)
	at <jscode>.null.toEqual([stdin]:1337)
	at <jscode>.{anonymous}()(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:80)
	at <jscode>.WU.t(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/library/src/main/scala/scala/scalajs/runtime/AnonFunctions.scala:10)
	at <jscode>.null.<anonymous>(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/jasmine-test-framework/src/main/scala/org/scalajs/jasminetest/JasmineTest.scala:21)
	at <jscode>.jasmine.Block.execute([stdin]:1166)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
	at <jscode>.jasmine.Queue.start([stdin]:2151)
	at <jscode>.jasmine.Spec.execute([stdin]:2478)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
...
[error]  x should respond to `toMillis`
org.scalajs.jasminetest.JasmineTestException: Expected<PHONE_NUMBER>854776000 to equal<PHONE_NUMBER>854775000.
	at <jscode>.new jasmine.ExpectationResult([stdin]:216)
	at <jscode>.null.toEqual([stdin]:1337)
	at <jscode>.fQa.e.k(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:683)
	at <jscode>.fQa.e.t(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:671)
	at <jscode>.null.<anonymous>(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/jasmine-test-framework/src/main/scala/org/scalajs/jasminetest/JasmineTest.scala:21)
	at <jscode>.jasmine.Block.execute([stdin]:1166)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
	at <jscode>.jasmine.Queue.start([stdin]:2151)
	at <jscode>.jasmine.Spec.execute([stdin]:2478)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
[error]  x should respond to `toNanos`
org.scalajs.jasminetest.JasmineTestException: Expected<PHONE_NUMBER>854776000 to equal<PHONE_NUMBER>854775000.
	at <jscode>.new jasmine.ExpectationResult([stdin]:216)
	at <jscode>.null.toEqual([stdin]:1337)
	at <jscode>.gQa.e.k(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:701)
	at <jscode>.gQa.e.t(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/src/test/require-jdk8/org/scalajs/testsuite/javalib/time/DurationTest.scala:692)
	at <jscode>.null.<anonymous>(/localhome/jenkins/a/workspace/scalajs-task-worker_2/test-suite/target/scala-2.11/file:/localhome/jenkins/a/workspace/scalajs-task-worker_2/jasmine-test-framework/src/main/scala/org/scalajs/jasminetest/JasmineTest.scala:21)
	at <jscode>.jasmine.Block.execute([stdin]:1166)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)
	at <jscode>.jasmine.Queue.start([stdin]:2151)
	at <jscode>.jasmine.Spec.execute([stdin]:2478)
	at <jscode>.jasmine.Queue.next_([stdin]:2198)

Yes, there is something strange going on with Long.MaxValue.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2199/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2859/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2202/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2862/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2203/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2863/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2204/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2866/
Test FAILed.

I've implemented the ...Exact methods in java.lang.Math and used them in the implementation of java.time.Duration.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2205/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2868/
Test FAILed.

Jenkins, retest this please

@ummels don't worry about the method order in Math. We could do it later in a general refactoring.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2206/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2870/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2207/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2871/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2209/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2873/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2210/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2874/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2212/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2876/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2211/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2875/
Test FAILed.

It seems tests are failing because Math.addExact and Math.multiplyExact do not exist in JDK <1.8. How can I disable compilation of the java.time classes for these JDK versions?

Ah ah! Now that's a good one ^^ I'll have to think about it.

One option would be to put the math methods into some private object (making java.lang.Math just wrap these methods) so that I can use them in the implementation of java.time.Duration under any JDK.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2216/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2881/
Test FAILed.

That idea might work.

Another option would be to create a require-jdk8 source directory inside javalib as done for test-suite and conigure SBT in a such way that it only includes those sources when on Java 8.

The solution require-jdk8 would not work because then you still would need an implementation of java.time outside of require-jdk8 that would use the methods of Math that are only in jdk8. I would try to do it with your wrapper idea.

My suggestion is not to put java.lang.Math into require-jdk8, but the java.time classes, which are not part of older JDK versions anyway. Of course, an advantage of the wrapper solution is that other implementations of Java classes could profit from the new methods in java.lang.Math as well.
@sjrd Have you made up your mind about this?

My suggestion is not to put java.lang.Math into require-jdk8, but the java.time classes, which are not part of older JDK versions anyway.

But that still means that when building on JDK 6, we do not end up with the same published artifacts as when we build on JDK 8. That would be very dangerous and fragile.
The wrapper idea does not have that fragility, but it has other downsides:

There actually isn't any reasonable package to put this class in. We don't want to extend java.*, but it needs to be accessible from java.*.
With that implem, not all call paths end up in java.lang.Math themselves, which means that intrinsifying java.lang.Math.addExact would miss some other call paths.

I guess the least bad solution would be something similar to the hack for TypedArrayBufferBridge: have this in javalanglib/:
package java.lang

private[java] object MathJDK8Bridge {
  def addExact(a: Int, b: Int): Int = Math.addExact(a: Int, b: Int)
  ...
}

and this in javalib/:
package java.lang

private[java] object MathJDK8Bridge {
  def addExact(a: Int, b: Int): Int = sys.error("stub")
  ...
}

and then hack the Build to discard MathJDK8Bridge.sjsir coming from javalib/.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2236/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2904/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2237/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2907/
Test FAILed.

I have implemented your idea with the MathJDK8Bridge. Now only a few builds are failing because of a binary incompatibility arising from sbt.testing.Status now being a subclass of java.lang.Enum (and two builds seem to fail to due to some timeout). Any advice on how to proceed?

[info] Scala.js test interface: found 5 potential binary incompatibilities
[error]  * the type hierarchy of class sbt.testing.Status has changed in new version. Missing types {java.lang.Object}
[error]    filter with: ProblemFilters.exclude[MissingTypesProblem]("sbt.testing.Status")
[error]  * method ordinal()Int in class sbt.testing.Status does not have a correspondent in new version
[error]    filter with: ProblemFilters.exclude[MissingMethodProblem]("sbt.testing.Status.ordinal")
[error]  * method name()java.lang.String in class sbt.testing.Status does not have a correspondent in new version
[error]    filter with: ProblemFilters.exclude[MissingMethodProblem]("sbt.testing.Status.name")
[error]  * method this(Int,java.lang.String)Unit in class sbt.testing.Status's type has changed; was (Int,java.lang.String)Unit, is now: (java.lang.String,Int)Unit
[error]    filter with: ProblemFilters.exclude[IncompatibleMethTypeProblem]("sbt.testing.Status.this")
[error]  * method toString()java.lang.String in class sbt.testing.Status does not have a correspondent in new version
[error]    filter with: ProblemFilters.exclude[MissingMethodProblem]("sbt.testing.Status.toString")
java.lang.RuntimeException: Scala.js test interface: Binary compatibility check failed!

I believe all those binary incompat issues are spurious.

The this() is private in Scala, so it could not be accessed outside the compilation unit.
The 4 other signatures are in fact inherited from java.lang.Enum

So I think you can blacklist them. First add this to project/BinaryIncompatibilities.scala (at the end):
  val TestInterface = Seq(
      // Private things, not an issue
      ProblemFilters.exclude[IncompatibleMethTypeProblem](
          "sbt.testing.Status.this"),

      // Inherited from parent class, not an issue
      ProblemFilters.exclude[MissingTypesProblem](
          "sbt.testing.Status"),
      ProblemFilters.exclude[MissingMethodProblem](
          "sbt.testing.Status.name"),
      ProblemFilters.exclude[MissingMethodProblem](
          "sbt.testing.Status.ordinal"),
      ProblemFilters.exclude[MissingMethodProblem](
          "sbt.testing.Status.toString")
  )

then use this in project/Build.scala here:
          previousArtifactSetting,
          binaryIssueFilters ++= BinaryIncompatibilities.TestInterface

Thanks. I take it that the first incompatibility about the changed type hierarchy (subclassing java.lang.Enum instead of java.lang.Object) is not a problem either?

No because java.lang.Enum extends java.lang.Object, so transitively Status still extends Object. I don't know why MiMa reports those as incompatibilities in the first place. Maybe it's a little bit too conservative about that (or it simply does not know; I don't think it's given the full classpath, now that I think about it).

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2238/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2908/
Test FAILed.

The scala-2.12.0-M2 build is still failing due to a timeout. Any ideas?

Probably spurious. Jenkins, retest this please

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2239/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2909/
Test PASSed.

I've rebased my pull request. BTW should I inline all the one-line methods?

It is not necessary to explicitly @inline one liner methods. The Scala.js compiler will automatically inline all small methods. One liners are in most cases small.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2263/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/2937/
Test PASSed.

LGTM

Wow. Great work! :clap:

Thanks! :blush:

Awesome! Thanks! :clap:


Added some indie Mac apps to the list

I’ve added following Mac apps to the list (including my own one):

Chime
Diagrams
Mate Translate
NativeConnect
NotePlan
Proxyman
Soulver

Thanks @JohnSundell for this initiative!

@lukaskubanek, did you check with these developers if they wish to be included in this before adding them? One of the developers have already removed their app from the list, so I just wanted to make sure. Since this effort is specifically targeted towards developers who are struggling financially because of the current pandemic.

@JohnSundell: I’ve asked some of them before and notified all of them after creating the PR. I didn’t know you will be that fast with merging it. I now have a response from all the developers. Except for that one case, all others agree with the listing. Sorry about that!

@lukaskubanek No problems, just wanted to check. Thanks so much for helping out 🎉


[Question] Purpose of redefining CAD geometry/drawings in QIF MBD vs linking to existing model

Hello Everyone,
I'm just getting my feet wet with QIF and AP242 trying to define where they have come from and are heading along with what a good implementation picture looks like. Have an initial question for the QIF folks here that will hopefully help the other pieces in this puzzle drop into place.
In reading up on QIF vs AP242 it looks like they were somewhat competing back around 2015 and that there are ongoing efforts to get the systems harmonized. The piece that confuses me the most is that QIF MBD (Section 7.0) seems to reproduce what is already defined in the design CAD model.  Per section 7.2 the goal is, "…an open, 3D model-based product definition (MBD). The model is independent of any CAD system." To me this appears to be an additional source of conversion error. Since depending on my supplier I may already be converting to another format (AP242 for instance if I want a non-proprietary format) why would I not simply link feature ID's directly to elements of the AP242 model? What benefit is seen by my risking a CAD conversion error both for transmitting solid geometry for CAM but then also in creating a second seperate model for quality purposes? I think this question extends over to QIF's support for fully laying out a drawing as well since again it creates error and in a format that fewer tools can readily open and view when the annotated model is already available.
Really appreciate your help as I try to get a more solid grasp of applying QIF!
Thank you,
Mark

Hi Mark, and welcome to the QIF Community!
You are correct that QIF MBD is a way to carry model geometry and PMI. For example, here is a NIST test model, entirely in QIF format:

QIF is unique in that it is designed with gathering metrology-related data, and tying it to the model via its framework of data structures. It introduced a Persistent UUID capability for doing this.  It emphasizes shape features for metrology and has a very robust definition of product characteristics (e.g., dimensional & geometric tolerances, thread specification, welding specs for both GD&T and ISO GPS)  And it is a standard defined as an XML schema for easier validation, development, and extensibility.
Let me try to address some of your questions one by one.

To me this appears to be an additional source of conversion error.

If the original native CAD model is available and can be used, this would be the best way to go, generally speaking. It involves no conversions. But often, downstream software requires data in a standard format like QIF or STEP AP242. There exists validation software to validate the quality of CAD translations.

Since depending on my supplier I may already be converting to another format (AP242 for instance if I want a non-proprietary format) why would I not simply link feature ID's directly to elements of the AP242 model?

This is possible. QIF features and characteristics can link to external entity IDs, which can be IDs found in a STEP AP242, for example.

What benefit is seen by my risking a CAD conversion error both for transmitting solid geometry for CAM but then also in creating a second seperate model for quality purposes?

Most software which supports QIF will not support the complexity of mixed data sets (i.e., CAD/PMI in STEP242, measurement data in QIF). So this is why many are choosing to using QIF MBD. By the way, many users also generate IGES or STEP AP203/214 data as well, since legacy systems are sure to support that.

I think this question extends over to QIF's support for fully laying out a drawing as well since again it creates error and in a format that fewer tools can readily open and view when the annotated model is already available.

I’m not sure that I understand what you mean here, can you elaborate?
I hope that these answers are at least a helpful start! Let us know what other questions you have. Or, if you would like to have a chat with some members of the DMSC about QIF, let me know and we can probably arrange a short call to discuss the details of QIF.
Daniel
PS: Thanks to @BrownCurtisW for providing some additional thoughts on this matter


Added Support for XCode 11.3

@tiganov @AbdulAli are we ready to merge this PR now?

@karimhamdanali Let's sort out this witness method issue(s) first.

sgtm

@karimhamdanali Let's sort out this witness method issue(s) first.

@tiganov the issue is for the benchmark app. The rest of the test cases work fine. I think its good to go.

@karimhamdanali Let's sort out this witness method issue(s) first.

@tiganov the issue is for the benchmark app. The rest of the test cases work fine. I think its good to go.

Okay, I'll merge it then. I will push the fixes for these issues later.

sgtm! Thanks Daniil


Optimization of totalAttendance() calculation, plus removing participant name

Pull Request Test Coverage Report for Build 177

12 of 12 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 97.143%

Totals

Change from base Build 175:
-0.1%

Covered Lines:
93

Relevant Lines:
94

💛  - Coveralls


HCL parse error

Package manager/ecosystem
Terraform 0.14.6
What you expected to see, versus what you actually saw
I expected dependabot to parse and analyze my HCL which is working fine with Terraform, but it apparently cannot parse the dialect I'm using.
Images of the diff or a link to the PR, issue or logs
It complained about string in the below saying unable to parse HCL: At 2:12: Unknown token: 2:12 IDENT string:
variable "customer_name" {
    type = string
    description = "Required. This name will be applied to all resources in this module for easy identification."
}

Howdy @mjulianotq, thanks for the report. We don't currently support Terraform 0.14, though it's something we'll be working on soon. Please follow https://github.com/dependabot/dependabot-core/issues/1176 for the latest updates.

@asciimike I searched for HCL 2 before I opened this, but that didn't come up. Sorry for generating admin overhead for you.

It's all good, TBH the issues aren't super searchable, so I don't blame you. I'm going to spend some time every day cleaning them up, and hopefully get everything back in a more reasonable state :)


ceph-dashboard: Add prometheus api host

The set-prometheus-api-host ceph dashboard subcommand was missing in
ceph-dashboard role. Only grafana and alermanager were present.
This commit also remove the trailing slash at the end of the host/url
values.
Closes: #4453
Signed-off-by: Dimitri Savineau<EMAIL_ADDRESS>

@fmount FYI --^

@dsavineau @guits I tried setting/unsetting this parameter in my old PR and I didn't put it because I've seen no difference (I suppose this happens because the module uses the rest API exposed by grafana), but at least it doesn't hurt.


Revolve causing weird extra geometry?

Kinda head scratching! Check out that floating triangle!

out.txt (kcl)

Actually, I think the case here is the revolve is just very minuscule.


Roadmap update for CQ4'23

I'm afraid there's a merge conflict. Can you please update to a non-conflicting version? (Force-pushing the content you want is fine.)


Added DeviceInfo.supportedABIs()

Description
Fixed issue #578

Added supportedABIs() which returns a list of supported device cpu types
Compatibility

OS
Implemented

iOS
✅

Android
✅

Windows
❌

Checklist

[x] I have tested this on a device/simulator for each compatible OS
[x] I added the documentation in README.md.
[x] I mentioned this change in CHANGELOG.md.

@hemantasapkota this looks great, I'm excited to have this feature in the module. @machour I looked closely and I can't see anything else I'd change in here? I'm not perfect those of course so I'll leave the merge for you in case you want to take another look

@mikehardy thanks for the review. This has been a good experience. looking forward to @machour 's review.

Whether I got that merge correct or not :pray: - it is my first merge into this repo. Thanks @hemantasapkota for the work and @machour for the help

👌
react-native-device-info 1.1.0 published 🎉

I can see in the commit log the way I did it duplicated the message (the title was the same as the commit message) which isn't as tidy as your previous ones. I'll make sure the title is complete/correct next time, but leave the message empty and they'll match up. Not an A+ yet ;-)


the method  blurLayout.startBlur()  in your demo  i find it but can not find it in gradle

Hi @CK875430315 with the latest v1.0.0, the demo should match what you find in the gradle. See installation instructions in the README. Let me know if you have any more issues!


sails-mongo maintenance and support

Hi guys,
I've seen there are some PRs still open in the sails-mongo module.
I could dedicate some time to review / resolve them if it's of your interest.
I will be updating mongodb drivers for Sails 1.x but also for Sails 0.12 as we still have that version here.
I'll be sending PRs for it but just wanted to have some heads up.
This would probably be better discussed on a chat but IDK which one would be the best on to reach you guys out (Gitter, Slack, etc)

Thanks @luislobo! I'll talk with Mike about this the next time we're looking at issues.


readme.md is not updated with xDSCWebService 's new SqlProvider and SqlConnectionString parameters

I was looking for guidance on using those. (Yes, I looked at the example).
readme.md does not contain any references to them. I would be more than happy to do a PR on them if I knew what to write. ;-)

They are mentioned here Supported database systems
. Please send in a PR with a description you find most suitable.


Why require mnemonic key phrase of the address during lighthouse init?

I feel like it is not safe to reveal my mnemonic key phrase when I clicked lighthouse init
Why mnemonic keyphrase is required?

I would actually agree, shouldn't it be using the private key instead? I know hardhat from ethereum uses private keys instead of the mnemonic key.
I also have been able to find that you can still use the wallet using the DirectSecp256k1Wallet function instead by:
const wallet = await DirectSecp256k1Wallet.fromKey(Uint8Array.from(Buffer.from('private-key', 'hex')), "sei");

Instead of of having to use DirectSecp256k1HdWallet.

added private key


[SPARK-27222][SQL] Support Instant and LocalDate in Literal.apply

What changes were proposed in this pull request?
In the PR, I propose to extend Literal.apply to support constructing literals of TimestampType and DateType from java.time.Instant and java.time.LocalDate. The java classes have been already supported as external types for TimestampType and DateType by the PRs #23811  and #23913.
How was this patch tested?
Added new tests to LiteralExpressionSuite.

Test build #103739 has started for PR 24161 at commit 80b2e30.

Can one of the admins verify this patch?

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/testing-k8s-prb-make-spark-distribution-unified/9121/
Test PASSed.

ok to test

add to whitelist

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/testing-k8s-prb-make-spark-distribution-unified/9125/
Test PASSed.

Test build #103739 has finished for PR 24161 at commit 80b2e30.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #103745 has started for PR 24161 at commit 80b2e30.

Merged build finished. Test FAILed.

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

Test build #103745 has finished for PR 24161 at commit 80b2e30.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

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/testing-k8s-prb-make-spark-distribution-unified/9131/
Test PASSed.

Test build #103753 has started for PR 24161 at commit c51cd91.

Test build #103753 has finished for PR 24161 at commit c51cd91.

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/103753/
Test PASSed.

@cloud-fan Could you take a look at this PR, please.

thanks, merging to master!


[cairo] build failure - meson cross compilation failure and lost the quartz feature flag

Host Environment

OS: macosx

Additional context
A quartz feature flag has been remove in this commit: 546813ae7b9e2873dd3d38e78b27ac5582feae10
Why?

@Neumann-A I suppose that you are the author of this commit. Was it intentional?

@abique: Not really. Probably got lost in one of the many merges.

@Neumann-A will you take care of adding it back?

which one:
   --enable-quartz=[no/auto/yes]
                          Enable cairo's Quartz surface backend feature
                          [default=auto]
  --enable-quartz-font=[no/auto/yes]
                          Enable cairo's Quartz font backend feature
                          [default=auto]
  --enable-quartz-image=[no/auto/yes]
                          Enable cairo's Quartz Image surface backend feature
                          [default=no]

only the first?

also the meson build dues not support that feature. So not having it is probably preferable.

I think quartz should enable all of them.

With both #17845 and #17846 merged, is this issue resolved? Thanks so much for opening them!

Yes.


[feature request] Add support for pcf fonts.

See title, support for pcf fonts would be very nice, expecially since many terminal like applications make use of them and because it doesn't seem to be possible to draw bitmap fonts using freetype-go.
I've looked around and this seems to be the only pcf library for go: https://github.com/nareix/pcf

The only way something like this will happen is if someone else does it.

Understandable :). For now I got plan9 fonts (which are not scaleable like ttf) working using https://godoc.org/golang.org/x/image/font/plan9font


Orphan generated XML DSL from OpenAPI JSON after deleting integration

After deleting integration, the generated from OenAPI JSON XML DSL become as orphaned ConfigMap and not deleted.
If it not by-design feature, I will fix it.

it should be cleaned up so no, it is not by design :)


2018-10-30

Added registartion and EULA functionality with exit that handles bugs in native REG/EULA exit handling

Reviewing request against the develop branch - https://github.com/jamfprofessionalservices/DEP-Notify/blob/eula_and_register_windows/

@aarondavidpolley Thanks for sharing the work you have done to add in EULA and registration windows. After looking at what we both have been working on, I created a pull request for the eula_and_register_windows branch that was in development. At this time, I am going to close the pull request as the functionality is the same in both.


Request: Drop private or internal constants

Since a const field is seldom accessed by reflection, leaving it within the code made little good for protection.

Is it possible to add a protection by removing private, internal constants?
If the protected main assembly is an executable, is it possible to remove all constants defined within it?

This is already covered by issue #53


xarray 2022.6.0 doesn't work well with numpy 1.20

What happened?
Fail to import xarray when xarray 2022.6.0 and numpy 1.20 are installed. It seems xarray 2022.6.0 is not compatible with numpy 1.20. I also tried numpy 1.19 and 1.21, they all work well with xarray 2022.6.0.
What did you expect to happen?
xarray 2022.6.0 should work well with numpy 1.20.
Minimal Complete Verifiable Example
$ conda create --name xarraytest xarray=2022.6.0 numpy=1.20
$ conda activate xarraytest
$ conda list
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2022.6.15            ha878542_0    conda-forge
importlib-metadata        4.11.4           py39hf3d152e_0    conda-forge
importlib_metadata        4.11.4               hd8ed1ab_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
libblas                   3.9.0           15_linux64_openblas    conda-forge
libcblas                  3.9.0           15_linux64_openblas    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 12.1.0              h8d9b700_16    conda-forge
libgfortran-ng            12.1.0              h69a702a_16    conda-forge
libgfortran5              12.1.0              hdcd56e2_16    conda-forge
libgomp                   12.1.0              h8d9b700_16    conda-forge
liblapack                 3.9.0           15_linux64_openblas    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.20          pthreads_h78a6416_0    conda-forge
libstdcxx-ng              12.1.0              ha89aaad_16    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libzlib                   1.2.12               h166bdaf_2    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
numpy                     1.20.3           py39hd249d9e_2    conda-forge
openssl                   3.0.5                h166bdaf_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.4.3            py39h1832856_0    conda-forge
pip                       22.2               pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
python                    3.9.13          h2660328_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytz                      2022.1             pyhd8ed1ab_0    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
setuptools                63.2.0           py39hf3d152e_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sqlite                    3.39.2               h4ff8645_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
typing_extensions         4.3.0              pyha770c72_0    conda-forge
tzdata                    2022a                h191b570_0    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
xarray                    2022.6.0           pyhd8ed1ab_0    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
zipp                      3.8.0              pyhd8ed1ab_0    conda-forge
zlib                      1.2.12               h166bdaf_2    conda-forge

$ python
Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 16:58:50)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import xarray as xr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/site-packages/xarray/__init__.py", line 1, in <module>
    from . import testing, tutorial
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/site-packages/xarray/testing.py", line 9, in <module>
    from xarray.core import duck_array_ops, formatting, utils
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/site-packages/xarray/core/duck_array_ops.py", line 26, in <module>
    from . import dask_array_compat, dask_array_ops, dtypes, npcompat, nputils
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/site-packages/xarray/core/npcompat.py", line 72, in <module>
    _SupportsDType[np.dtype],
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/typing.py", line 277, in inner
    return func(*args, **kwds)
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/typing.py", line 1004, in __class_getitem__
    _check_generic(cls, params, len(cls.__parameters__))
  File "/home/user/miniconda/envs/xarraytest/lib/python3.9/site-packages/typing_extensions.py", line 92, in _check_generic
    raise TypeError(f"{cls} is not a generic class")
TypeError: <class 'numpy.typing._dtype_like._SupportsDType'> is not a generic class
>>>

MVCE confirmation

[X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
[X] Complete example — the example is self-contained, including all data and the text of any traceback.
[X] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
[X] New issue — a search of GitHub Issues suggests this is not a duplicate.

Relevant log output
No response
Anything else we need to know?
No response
Environment

Thanks for the report.
I have to admit, that when I implemented the problematic part I also only tested numpy 1.19 and 1.21... (same with CI)
It seems that in 1.20 they used a different approach.

What changed in numpy such that only one version is incompatible with our new release? Seems quite odd to have something break for one version, then work again for the next version.

It seems that in 1.20 they started introducing typing but _SupportsDType[np.dtype] was not a generic yet.
So either we do a version check for 1.20, or we create our own SupportsDType (I assume a Protocol?)

Right okay, thanks for the explanation @headtr1ck .

So either we do a version check for 1.20, or we create our own SupportsDType (I assume a Protocol?)

If we are still using a non-public interface, then we can't guarantee that it won't break again in numpy version 1.22 etc. So if that's the case perhaps we should try to make a sustainable solution. Otherwise I think special-casing one version is okay.

Thanks for the quick fix. Is there a plan to have a quick patch release (e.g., 2022.6.1)?

Thanks for the quick fix. Is there a plan to have a quick patch release (e.g., 2022.6.1)?

I think the devs are still too busy to publish more releases.
Now it is already time for a 2022.8.0 release :)

Yeah unfortunately there are still a number of regressions

I just hit this same bug with numpy 1.23.3. Installing xarray from github main branch fixed it.
I think we really need to release soon (#7069).


[BEAM-1571] Add a test for FlattenPCollectionList on a singleton list

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[x] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

This test validates that the output PCollection of a Flatten with a
single input PCollection contains the contents of the input PCollection.

Run Apex RunnableOnService

@tweise I believe this demonstrates a bug in the Apex Flatten translation where a FlattenPCollectionList with a singleton input PCollection will not properly construct an output PCollection

Coverage decreased (-0.01%) to 69.134% when pulling d21fa20ac41257c6d43462065b42a7486b5d2aa7 on tgroh:flatten_singleton_test into c8dfb851cdcb24a9afb01416598d2881e449f079 on apache:master.

run Apex RunnableOnService

R: @kennknowles

Coverage remained the same at 69.292% when pulling 9cb742e0a02ca08108e457164cd5d387bdfb7583 on tgroh:flatten_singleton_test into 3b3d6b81a5fe0f09aaa52340fdc9e671b46e4d57 on apache:master.

@kennknowles any progress on reviewing thins?

LGTM


[meter] Implement Meter

Reminds me a bit of https://github.com/mui/material-ui/issues/22472#issuecomment-686968811

A generic stat like this is prob not an appropriate use of <meter>. Meter is typically used to indicate how much of x is left. Like a battery indicator or disk space indicator. But in any case, we'll just implement it based on ARIA and other guidelines and people can build on it however they want.


How to connect with store

How to connect with store

Hi Sanjay, this tutorial will walk you through connecting to a store. Is there any particular step that is giving difficulty?

@Karen-boop
I am getting Those errors.
steps i did
shopify app serve
this connecd create .env on project root but give this error

Thanks for clarifying @Sanjay-100.
This repo (shopify-marketplaces-buyer-app) does not use the Shopify CLI so you do not need shopify app serve to run it. You can simply follow the instructions in this repo's readme to get the buyer facing marketplace up and running.
Once you have the buyer facing up and running you will need to install your admin app on a development store and follow the Marketplace Kit tutorials too connect the two.


Redundant bracket hints on TH splices not compatible with GHC 8.10.3

Since e2c0833c4a337f78f2cee58ef59d318d26f1666b, hlint warns on TH splice such as $(Git.hash):
src/main/Lamdu/Version.hs:40:20-29: Warning: Redundant bracket
Found:
  (Git.hash)
Perhaps:
  Git.hash

But removing the bracket makes the code not compile on GHC 8.10.3 (and I assume that on older versions as well)

Oh dear - that needs investigating - ideally before we make a GHC 9.0 release.

This is a consequence of GHC proposal 229, which GHC 9.0 implements. Previously, GHC would require all Template Haskell splices to be written as $(x) or $$(x), where the parentheses were mandatory. After proposal 229, however, GHC only requires $x or $xx. Put differently, if you write $(x) or $$(x) in 9.0 or later, then the parentheses are no longer special lexemes, but rather part of the expression being spliced.
As a consequence of this, the parentheses in $(Git.hash) are redundant in 9.0 or later, but required in earlier versions of GHC. I'm not sure if there's a way to tell GHC to give advice conditionally based off of what GHC is being used.

So one possible solution could be to add logic to avoid warning about redundant parens in TH splices, which once most users have switched to GHC 9 could be removed. An alternative could be to keep using an older ghc-lib-parser version.

Using an older ghc-lib-parser is not a real option. We move forward with the times, and want to continue to do so forever.
I've put in a special case that says if you have a splice, then the immediately next bracket is always allowed.

Thanks for the report, and thanks @RyanGIScott for the explanation - agreed we should remove this once GHC 9.6 is out.


style: removing outlines on a few key elements

SUMMARY

React-bootstrap adds styles with a VERY broad :focus style, adding goofy outlines all over the place.
I'm removing that outline for a few key elements, namely div span and i so we don't see them in strange places. This should not affect focus on form elements and such, so it has a relatively low impact on accessibility. That said, I admit there may be areas where there's tab-based navigation we DO want to support. In such cases, we should make sure that it's supported (and styled) properly in those relevant components, when we get to do a broader accessibility sweep to meet WCAG standards.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Before:

After:

TEST PLAN

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Codecov Report

Merging #11372 into master will decrease coverage by 1.68%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #11372      +/-   ##
==========================================
- Coverage   61.57%   59.89%   -1.69%
==========================================
  Files         838      394     -444
  Lines       39839    24944   -14895
  Branches     3655        0    -3655
==========================================
- Hits        24532    14939    -9593
+ Misses      15126    10005    -5121
+ Partials      181        0     -181

Flag
Coverage Δ

#javascript
?

#python
59.89% <ø> (-1.06%)
:arrow_down:

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

Impacted Files
Coverage Δ

superset/db_engines/hive.py
0.00% <0.00%> (-85.72%)
:arrow_down:

superset/databases/commands/create.py
31.91% <0.00%> (-59.58%)
:arrow_down:

superset/db_engine_specs/hive.py
53.90% <0.00%> (-30.08%)
:arrow_down:

superset/views/database/mixins.py
59.64% <0.00%> (-22.81%)
:arrow_down:

superset/db_engine_specs/presto.py
69.76% <0.00%> (-12.32%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/databases/commands/update.py
85.71% <0.00%> (-8.17%)
:arrow_down:

superset/databases/api.py
83.49% <0.00%> (-7.08%)
:arrow_down:

superset/databases/dao.py
94.11% <0.00%> (-5.89%)
:arrow_down:

superset/views/database/validators.py
78.94% <0.00%> (-5.27%)
:arrow_down:

... and 461 more

Continue to review full report at Codecov.

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

@junlincc FYI.


Fix Namespace loading in PyYAML 5.4.x

What does this PR do?
This fixes Namespace loading with PyYAML 5.4.x, which was restricted due to a security vulnerability.
Related issues:
https://github.com/PyTorchLightning/pytorch-lightning/pull/5606
https://github.com/PyTorchLightning/pytorch-lightning/pull/5619
Fixes #6666
Before submitting

[ ] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together?
[ ] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

@chris-boson pls target master as default branch

@Borda Are we ok with just removing PyYAML!=5.4.x from requirements and continue using UnsafeLoading?  What were the concerns with excluding this version? I think in terms of safety that would be equivalent  to using PyYAML<5.4.
Alternatively we need to add our own SafeLoader and constructors https://github.com/PyTorchLightning/pytorch-lightning/pull/6673#discussion_r601372959.

I think in terms of safety that would be equivalent to using PyYAML<5.4

we do not want any future versions like 6.x or so... so rather ban specific version if needed

@chris-boson how is it going here?

So to use SafeLoader we would need to add constructors for every object serialized?
Should we just use the UnsafeLoader then? AFAIK this was the case before, and we can't guarantee what will be saved to hparams

So to use SafeLoader we would need to add constructors for every object serialized?
Should we just use the UnsafeLoader then? AFAIK this was the case before, and we can't guarantee what will be saved to hparams

Yeah, at least it wouldn't be any worse than it was before. So effectively we'd just take out the PyYAML!=5.4.* from requirements

Exactly, @Borda, do you agree?

So effectively we'd just take out the PyYAML!=5.4.* from requirements

but isn't that change in PyYAML for the future, is there an expectation that 5.5 will be fine?

So effectively we'd just take out the PyYAML!=5.4.* from requirements

but isn't that change in PyYAML for the future, is there an expectation that 5.5 will be fine?

We can put <=5.4.1?

@chris-boson what's blocking this?

@chris-boson what's blocking this?

seems like just failing tests...


chore: remove Dewan from data file global owners

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes: remove Dewan from data file global owners
Jira/GitHub Issue numbers (if any): ______________________________
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[x] Successful preview build.
[ ] Code owner review.
[x] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

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

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6764785d62c055310fc6ce47--harness-developer.netlify.app


Semantic language snippets

Unfortunately, this will only highlight Bash keywords, which doesn't make sense here:
$ bundle exec linguist --breakdown

100.00% Ruby

Ruby:
Gemfile
Rakefile
bin/linguist
github-linguist.gemspec
lib/linguist.rb
…

Rigth! :disappointed:


Dependencies

Would dependencies be complicated to implement?
https://spacetelescope.github.io/understanding-json-schema/reference/object.html#property-dependencies
I believe all scenarios of required fields would be covered.
If it's too much work I'll work around it.

It can be done, give it a try Vincent. One recommendation: Use https://tools.ietf.org/html/draft-wright-json-schema-validation-00#section-5.19 as reference
The linked example by you seems to not to adhere to the spec:

If the dependency value is an object, it MUST be a valid JSON Schema.
If the dependency key is a property in the instance, the dependency
value must validate against the entire instance.

I realize there are very little examples out there and it's probably a lesser known feature of JSON Schema.
I tried https://code.tutsplus.com/tutorials/validating-data-with-json-schema-part-1--cms-25343 but no luck.
I'll close this issue and I'll manage without it. Thanks!

I just learned about the oneOf functionnality, but haven't been able to use it properly.
In the following example, I need jsConcat.finalName to be required ONLY if jsConcat.finalName is true.
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "title": "Root",
    "properties": {
        "appURL": {
            "type": "string",
            "title": "Application URL"
        },
        "jsConcat": {
            "type": "object",
            "title": "JavaScript Concatenation",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "title": "Enabled"
                },
                "finalName": {
                    "type": "string",
                    "title": "Concatenated Name",
                }
            },
            "required": [
                "enabled"
            ]
        }
    },
    "required": [
        "appURL"
    ]
}

Again, if it's too much work let me know I'll try to find an alternative.

Hi, Vicent despite not being a standard feature, you can use dynamic schemas for this case:
schema:
{
    "type": "object",
    "title": "Root",
    "properties": {
        "appURL": {
            "type": "string",
            "title": "Application URL"
        },
        "jsConcat": {
            "type": "object",
            "title": "JavaScript Concatenation",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "title": "Enabled"
                },
                "finalName": {
                      "dependsOn":["enabled"]
                }
            },
            "required": [
                "enabled"
            ]
        }
    },
    "required": [
        "appURL"
    ]
}

schema resolver:
function (names, data, cb) {
    var schemas = new Object();
    if(data && data.jsConcat && data.jsConcat.enabled===true){
        schemas["$.jsConcat.finalName"] = {"type":"string","title": "Concatenated Name"}
    } else {
        schemas["$.jsConcat.finalName"] = {}
    }
    cb(schemas);
}

This gives you more flexibility, given that the dependencies are dynamic, ie, can change depending on the actual data.
Hopefully this fits your needs ...

That will do it for now.
I may look into automating the schema resolver. I'm sure it can all be done right from the original JSON Schema using the dependencies keyword.
Thanks again.

I would like to be able to conditionally display questions declaratively and I believe this could be supported through dependencies as well. Does the following example make sense?
{
  "title": "Person",
  "type": "object",
  "properties": {
    "Do you have any pets?": {
      "type": "string",
      "enum": [
        "",
        "No",
        "Yes: One",
        "Yes: More than one"
      ]
    },
    "How old is your pet?": {
      "type": "number"
    },
    "How old is your oldest pet?": {
      "type": "number"
    }
  },
  "required": [
    "Do you have any pets?"
  ],
  "dependencies": {
    "Do you have any pets?": {
      "oneOf": [
        {
          "properties": {
            "Do you have any pets?": {
              "enum": [
                "",
                "No"
              ]
            },
            "How old is your pet?": {
              "not": {}
            },
            "How old is your oldest pet?": {
              "not": {}
            }
          }
        },
        {
          "properties": {
            "Do you have any pets?": {
              "enum": [
                "Yes: One"
              ]
            },
            "How old is your oldest pet?": {
              "not": {}
            }
          },
          "required": [
            "How old is your pet?"
          ]
        },
        {
          "properties": {
            "Do you have any pets?": {
              "enum": [
                "Yes: More than one"
              ]
            },
            "How old is your pet?": {
              "not": {}
            }
          },
          "required": [
            "How old is your oldest pet?"
          ]
        }
      ]
    }
  }
}

If "Do you have any pets?" is "" or "No" then no further questions are present nor required; if it is "Yes: One" then "How old is your pet?" is present and required but "How old is your oldest pet?" is not; if it is "Yes: More than one" then "How old is your oldest pet?" is present and required but "How old is your pet?" is not.
This would support dynamic schemas without the need for a schema resolver which would simplify things, especially when array objects need to be dynamic, etc.


build: Update SPIRV-Headers, -Tools and glslang for the next SDK

CI Vulkan-ExtensionLayer build queued with queue ID 147523.

CI Vulkan-ExtensionLayer build # 863 running.

CI Vulkan-ExtensionLayer build # 863 failed.

internal CI ERROR at /vulkan-sdk/1.3.275.0/source/Vulkan-Tools/vulkaninfo/./vulkaninfo.h:737: AppCreateXcbSurface failed to establish connection

CI Vulkan-ExtensionLayer build queued with queue ID 147583.

CI Vulkan-ExtensionLayer build # 864 running.

CI Vulkan-ExtensionLayer build # 864 passed.


feat: New Scrollable component PAR-472

PAR-472
The component now offers scrolling, as well as automatic shadow adornment on top and/or bottom based on scroll direction
Height if specified by wrapped component is honored, but scrolling is offered regardless with a predefined height. The wrapped element is wrapped within a flex-grow:1 and overflow:scroll styling
The example to follow is in the modalDialog: https://edx.github.io/paragon/components/modal/modal-dialog/
https://github.com/edx/paragon/blob/master/src/Modal/ModalDialogBody.jsx#L11
The preview will help see this in the demo page at /components/scrollable/
Example usage in admin portal UI
https://user-images.githubusercontent.com/528166/129050832-836f2181-28a1-40b3-8ce1-ce39dc1d0896.mov
-- prior notes --
[2] The bottom detection is not working as intended
Adam suggested for this issue, to use absolute position instead, as he laid out in this example to make it simpler
 the scroll bar is on a child element rather than the parent

the way it is now, the parent element gets the scrollbar, which is making it very tricky to get the shadows to be on top of stuff and in the right place

flex box is used to ensure the child container (which is the one that actually gets the scrollbar) has a height of 100% of the parent
and no taller
this allows us to set a max height on the parent element and overflow-y: auto on the child element
and get the scroll bar there
this is a somewhat obscure behavior of flex box – but it’s intentional from the spec and something you will run into if you ever try to make a carousel with elements laid out using flexbox

https://codepen.io/abutterworth/pen/jOmrGjN
Once that is done, this change can be tested against the stepper by wrapping the contents of the Stepper other than the Stepper.Header and Stepper.Footer and ensuring it can offer scrollability (as long as the contained element provides its own max-height), and also offers drop shadows only when scrolling is detected toward top or bottom edges.
intersection observer is used already to detect when the wrapped contents scroll toward the top or bottom edges

Coverage decreased (-0.1%) to 90.49% when pulling 86aa91183894b0748241bf59f2d8d939ff4f2f8c on bpant/PAR-472 into db0f440994c3229dc01b6c8d4f9d9525656a4cb3 on master.

Looks like some style here is causing a horizontal scroll bar to appear if there is a vertical scrollbar (and macos settings are set to show scrollbars)

interesting I cannot get it to show on the showcase page even if I zoom in/out etc. What was the mac setting btw? I can check that

Looks like some style here is causing a horizontal scroll bar to appear if there is a vertical scrollbar (and macos settings are set to show scrollbars)

interesting I cannot get it to show on the showcase page even if I zoom in/out etc. What was the mac setting btw? I can check that

Ah I see it when I go to mobile view ... can check into it

Alright with latest changes I fixed the x scroll, and now don't need the display:flex in the contained contents..
I managed to also apply the shadow to look more like the level 1 as per Jen's feedback from here
https://www.figma.com/file/eGmDp94FlqEr4iSqy1Uc1K/Paragon-Design-System?node-id=9076%3A3783
but now I lost the bottom shadow again! Something about my setup messed up the bottom shadow so have to re-figure that out after these

I am having trouble getting this to work reliably in the showase page. But it works a lot better in the admin portal inside the stepper
probably because the stepper has this styling on it
.sticky-footer-wrapper {
  height: 70vh;
  display: flex;
  flex-direction: column;

  .stepper-step {
    flex-grow: 1;
    overflow: scroll;
  }

  .add-courses-search-data {
    margin-left: 6px;
  }
}

updated to use flex-grow : 1 in the body. Now I dn't need to have any requirements on the content area itself, but I can only get this to work with a height and display:flex in the surrounding container. otherwise I don't get the bottom sentinel div placed correctly
this also allows me to remove most of the style in admin portal stepper-body and now it works quite well since this component offers the overflow-y and
so basically I could remove this and it still now works
  .stepper-step {
    flex-grow: 1;
    overflow: scroll;
  }

here is the usage PR: https://github.com/edx/frontend-app-admin-portal/pull/603

I actually removed the variables file since I don't need any of those settings. I did need to add a margin-top to the bottom shadow once I remove all other settings but decided I can just hardcode that one... lmk if flags

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add Dockerfile

Fixes Issue

Closes #93
Changes proposed

[x] Added
[X] Tested

Screenshots

Note to reviewers

@saiyam1814 ig addition of this might help in future

@dipankardas011 can you add the screenshots of this working ?

will share🙂

@dipankardas011 can you add the screenshots of this working ?

Docker build

Docker run

it is working on this branch (not sure because main and this branch has large gap of commits)

@saiyam1814 is this branch mergable?

@saiyam1814 Now all checks are done its working

Nice! @AvineshTripathi can we merge this dockerfile ?


[TB] Define release process, exit criteria and post-release actions

Problem/Concern
We need to come up with what it means to "release" Theme Builder and the SDK.  There needs to be an exit criteria and a series of post-release steps that must be completed.  The purpose of this issue is to define both.
Proposed Solution
Here is a list with which to start defining the exit criteria. These are just some suggestions to serve as a starting point:

Release candidate code is complete and available on dev branch
Any updated documentation is available on dev branch
Automated tests that have run to completion on the release candidate with 100% success.
At least two maintainers attesting (in the release issue) to the fact that they ran manual tests against the release candidate.

In the SDK perhaps this is an attestation that the maintainers ran Theme Builder tests that are meant to exercise the SDK in particular
Theme Builder tests should be run on both locally built Docker image and Netlify deploy

Version must be bumped before commit to main
Release notes must be updated, include the new version number and release date
Dev pushed to main
Tests re-run on main deploy on Netlify and on published Docker image
Verify updated documentation has been deployed

Here is a list with which to start defining the exit criteria. These are just some suggestions to serve as a starting point:

Version number discoverable from inside application?  Verify version correct in code, in container registries, in NPM (if SDK updated) and deployed application before announcement
Link to release notes in the application?
FINOS marketing team is informed. (Juan & Mao can put us in contact with them).

From @maoo: "I'd suggest to look at Github features that automatically generate Release notes, see https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes.  Note that Github Actions can be triggered by new releases, which would allow you to use the Github UI to trigger the release process, and Github actions to build and publish artifacts"

I'll be looking into #721 as part of this and will explore @maoo 's suggestion for automatic release notes from GitHub), and @codyzu 's suggestion for beachball. Both are integrated with GitHub - will put notes here as I create examples from both and we can decide which way we'd like to go.