[BUG] '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)' with verify=False

Checklist

[x ] I checked the FAQ section of the documentation
[ x] I looked for similar issues in the issue tracker
[x ] I am using the latest version of Schemathesis

Describe the bug
I am trying to use schemathesis against a base_url of a real service listening for incoming requests - I need to use the https protocol, but I don't want to / can't fetch the CA cert every time.
In order to proceed with testing I've specified response = case.call_and_validate(verify=False) in my test case definition, but in the logs I'm still getting errors related to SSL cert verification.
I've also tried to split the call in two (i.e. response = case.call(verify=False); case.validate_response(response)), but I'm seeing the same issue and validate_response does not support the verify argument.
This is the openAPI spec I'm using: https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml
This is the full trace of one such failure:
self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>, method = 'GET'
url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC', body = None
headers = {'User-Agent': 'schemathesis/3.38.9', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'X-Schemathesis-TestCaseId': 'BEwkUo'}
retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), timeout = Timeout(connect=10.0, read=10.0, total=None), chunked = False, response_conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>
preload_content = False, decode_content = False, enforce_content_length = True

    def _make_request(
        self,
        conn: BaseHTTPConnection,
        method: str,
        url: str,
        body: _TYPE_BODY | None = None,
        headers: typing.Mapping[str, str] | None = None,
        retries: Retry | None = None,
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        chunked: bool = False,
        response_conn: BaseHTTPConnection | None = None,
        preload_content: bool = True,
        decode_content: bool = True,
        enforce_content_length: bool = True,
    ) -> BaseHTTPResponse:
        """
        Perform a request on a given urllib connection object taken from our
        pool.

        :param conn:
            a connection from one of our connection pools

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            Pass ``None`` to retry until you receive a response. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param response_conn:
            Set this to ``None`` if you will handle releasing the connection or
            set the connection to have the response release it.

        :param preload_content:
          If True, the response's body will be preloaded during construction.

        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param enforce_content_length:
            Enforce content length checking. Body returned by server must match
            value of Content-Length header, if present.  This is the
        lowest level call for making a request, so you'll need to specify all
        the raw details.

        .. note::

           More commonly, it's appropriate to use a convenience method
           such as :meth:`request`.

        .. note::

           `release_conn` will only behave as expected if
           `preload_content=False` because we want to make
           `preload_content=False` the default behaviour someday soon without
           breaking backwards compatibility.

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param redirect:
            If True, automatically handle redirects (status codes 301, 302,
            303, 307, 308). Each redirect counts as a retry. Disabling retries
            will disable redirect, too.

        :param assert_same_host:
            If ``True``, will make sure that the host of the pool requests is
            consistent else will raise HostChangedError. When ``False``, you can
            use the pool on an HTTP proxy and request foreign hosts.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param pool_timeout:
            If set and the pool is set to block=True, then this method will
            block for ``pool_timeout`` seconds and raise EmptyPoolError if no
            connection is available within the time period.

        :param bool preload_content:
            If True, the response's body will be preloaded into memory.

        :param bool decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param release_conn:
            If False, then the urlopen call will not release the connection
            back into the pool once a response is received (but will release if
            you read the entire contents of the response such as when
            `preload_content=True`). This is useful if you're not preloading
            the response's content immediately. You will need to call
            ``r.release_conn()`` on the response ``r`` to return the connection
            back into the pool. If None, it takes the value of ``preload_content``
            which defaults to ``True``.

        :param bool chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param int body_pos:
            Position to seek to in file-like body in the event of a retry or
            redirect. Typically this won't need to be set because urllib3 will
            auto-populate the value when needed.
        """
        parsed_url = parse_url(url)
        destination_scheme = parsed_url.scheme

        if headers is None:
            headers = self.headers

        if not isinstance(retries, Retry):
            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)

        if release_conn is None:
            release_conn = preload_content

        # Check host
        if assert_same_host and not self.is_same_host(url):
            raise HostChangedError(self, url, retries)

        # Ensure that the URL we're connecting to is properly encoded
        if url.startswith("/"):
            url = to_str(_encode_target(url))
        else:
            url = to_str(parsed_url.url)

        conn = None

        # Track whether `conn` needs to be released before
        # returning/raising/recursing. Update this variable if necessary, and
        # leave `release_conn` constant throughout the function. That way, if
        # the function recurses, the original value of `release_conn` will be
        # passed down into the recursive call, and its value will be respected.
        #
        # See issue #651 [1] for details.
        #
        # [1] <https://github.com/urllib3/urllib3/issues/651>
        release_this_conn = release_conn

        http_tunnel_required = connection_requires_http_tunnel(
            self.proxy, self.proxy_config, destination_scheme
        )

        # Merge the proxy headers. Only done when not using HTTP CONNECT. We
        # have to copy the headers dict so we can safely change it without those
        # changes being reflected in anyone else's copy.
        if not http_tunnel_required:
            headers = headers.copy()  # type: ignore[attr-defined]
            headers.update(self.proxy_headers)  # type: ignore[union-attr]

        # Must keep the exception bound to a separate variable or else Python 3
        # complains about UnboundLocalError.
        err = None

        # Keep track of whether we cleanly exited the except block. This
        # ensures we do proper cleanup in finally.
        clean_exit = False

        # Rewind body position, if needed. Record current position
        # for future rewinds in the event of a redirect/retry.
        body_pos = set_file_position(body, body_pos)

        try:
            # Request a connection from the queue.
            timeout_obj = self._get_timeout(timeout)
            conn = self._get_conn(timeout=pool_timeout)

            conn.timeout = timeout_obj.connect_timeout  # type: ignore[assignment]

            # Is this a closed/new connection that requires CONNECT tunnelling?
            if self.proxy is not None and http_tunnel_required and conn.is_closed:
                try:
                    self._prepare_proxy(conn)
                except (BaseSSLError, OSError, SocketTimeout) as e:
                    self._raise_timeout(
                        err=e, url=self.proxy.url, timeout_value=conn.timeout
                    )
                    raise

            # If we're going to release the connection in ``finally:``, then
            # the response doesn't need to know about the connection.  If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            Pass ``None`` to retry until you receive a response. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param response_conn:
            Set this to ``None`` if you will handle releasing the connection or
            set the connection to have the response release it.

        :param preload_content:
          If True, the response's body will be preloaded during construction.

        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param enforce_content_length:
            Enforce content length checking. Body returned by server must match
            value of Content-Length header, if present. Otherwise, raise error.
        """
        self.num_requests += 1

        timeout_obj = self._get_timeout(timeout)
        timeout_obj.start_connect()
        conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout)

        try:
            # Trigger any extra validation we need to do.
            try:
                self._validate_conn(conn)
            except (SocketTimeout, BaseSSLError) as e:
                self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
                raise

        # _validate_conn() starts the connection to an HTTPS proxy
        # so we need to wrap errors with 'ProxyError' here too.
        except (
            OSError,
            NewConnectionError,
            TimeoutError,
            BaseSSLError,
            CertificateError,
            SSLError,
        ) as e:
            new_e: Exception = e
            if isinstance(e, (BaseSSLError, CertificateError)):
                new_e = SSLError(e)
            # If the connection didn't successfully connect to it's proxy
            # then there
            if isinstance(
                new_e, (OSError, NewConnectionError, TimeoutError, SSLError)
            ) and (conn and conn.proxy and not conn.has_connected_to_proxy):
                new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
>           raise new_e
E           urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)

.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:490: SSLError

The above exception was the direct cause of the following exception:

self = <requests.adapters.HTTPAdapter object at 0x10f494410>, request = <PreparedRequest [GET]>, stream = False, timeout = Timeout(connect=10.0, read=10.0, total=None), verify = True, cert = None, proxies = OrderedDict()

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                 Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
            resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

        except (ProtocolError, OSError) as err:
            raise ConnectionError(err, request=request)

        except MaxRetryError as e:
            if isinstance(e.reason, ConnectTimeoutError):
                # TODO: Remove this in 3.0.0: see #2811
                if not isinstance(e.reason, NewConnectionError):
                    raise ConnectTimeout(e, request=request)

            if isinstance(e.reason, ResponseError):
                raise RetryError(e, request=request)

            if isinstance(e.reason, _ProxyError):
                raise ProxyError(e, request=request)

            if isinstance(e.reason, _SSLError):
                # This branch is for urllib3 v1.22 and later.
>               raise SSLError(e, request=request)
E               requests.exceptions.SSLError: HTTPSConnectionPool(host='<SNIP>', port=443): Max retries exceeded with url: /api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))
E               Falsifying explicit example: test_mr_api(
E                   admin_client_token='<SNIP>',
E                   case=,
E               )

.venv/lib/python3.11/site-packages/requests/adapters.py:698: SSLError

Something else I notice that might be causing issues is that in some of these calls the url seems to be truncated to only be the API endpoint, rather than base_url+endpoint, e.g.:
self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, method = 'GET', url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC'
[...]
parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/api/model_registry/v1alpha3/[...]

Hi! Thanks for reporting!
Can you specify the full code snippet you have for Schemathesis tests?

The minimal code example would be
schema = schemathesis.from_pytest_fixture("generate_schema")

@schema.parametrize()
def test_mr_api(case, admin_client_token):
    case.headers["Authorization"] = f"Bearer {admin_client_token}"
    case.headers["Content-Type"] = "application/json"
    response = case.call_and_validate(verify=False)

With the generate_schema fixture being
@pytest.fixture(scope="class")
def generate_schema(model_registry_instance_rest_endpoint):
    schema = schemathesis.from_uri(uri=
        "https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml",
        base_url=f"https://{model_registry_instance_rest_endpoint}/"
    )
    return schema

After some debugging, I think the bug comes from https://github.com/schemathesis/schemathesis/blob/eef6f36c70a8bc0ba30a45aa09de76985cd78c39/src/schemathesis/specs/openapi/checks.py#L407
There's no kwargs defined when the send call is made, and verify thus defaults to True

To follow up, I explicitly excluded the ignored_auth checks from my test and indeed the SSL validation error is not present anymore

Thank you so much for so many details! Now I realize that the bug is in the ignored_auth check where the case & response are modified in-place. I am going to fix it soon

Since I have your attention, going OT from the issue, but any idea why I might be getting the following error?
E   hypothesis.errors.FailedHealthCheck: It looks like your strategy is filtering out a lot of data. Health check found 50 filtered examples but only 0 good ones. This will make your tests much slower, and also will probably distort the data generation quite a lot. You should adapt your strategy to filter less. This can also be caused by a low max_leaves parameter in recursive() calls
E   See https://hypothesis.readthedocs.io/en/latest/healthchecks.html for more information about this. If you want to disable just this health check, add HealthCheck.filter_too_much to the suppress_health_check settings for this test.

From the docs I see:
Check for when the test is filtering out too many examples, either through use of assume() or filter(), or occasionally for Hypothesis internal reasons.

I assume in this specific case it is popping up [...] for Hypothesis internal reasons., but I'm not really sure what that means 😄

That essentially boils down to the schema complexity and there is not that much we can do about it right now. In many cases, we can't get the required data sample by construction so we fall back on generating something that MAY be of the shape we need and then calling filter to reject instances that are not matching the expectations. Hence the error message from Hypothesis. In Schemathesis CLI there are some specific error messages for such situations, but from the user perspective there are two options:

Disabling this health check
Simplifying the schema

The latter is not obvious, specifically for cases with references (i.e. $ref). This will change in the future once I finish refactoring for Schemathesis V4 and get into the guts of hypothesis-jsonschema to make it more performant and avoid pathological scenarios with  $ref;.


refactor: Use embed-resource crate to compile resources

Since there is another winres fork it's hopefully fine to keep this one really specific to tauri.
The reason i did this in the first place is because a community member made me aware of llvm-rc so the ugly mingw workaround i did can be removed again. The only drawback is that this may work less "good" for dyn libs as embed-resource seems to focus on executables (judging by different cargo link flags at least). Coming from the "tauri-specific fork" pov i think this is fine since it still covers our use-case perfectly.
Opened as a draft because i'm still testing os+gnu/msvc combinations:

[x] Linux->Windows with llvm
[x] Linux->Windows with gnu
[x] Windows->Windows with msvc
[x] Windows->Windows with gnu

TODO: Update readme

One issue is that we use set_toolkit_path in tauri-build, going to see if setting that via an env var from within winres works

@lucasfernog do you think someone will start a riot if i make tauri-build's sdk_dir() no-op out of nowhere?
iirc we added that for gnu people but embed-resource seems to require windres to be in the PATH: https://github.com/nabijaczleweli/rust-embed-resource/blob/master/src/windows_not_msvc.rs#L38
I couldn't produce any errors that would require the use of sdk_dir() so i couldn't really test the consequences about this change.

Can we ask the community member that requested that? Otherwise just pull the trigger and wait for the new issue 😂

oh looks like it was added by a msvc user who had registry restrictions https://github.com/tauri-apps/tauri/issues/2871#issuecomment-969191116 but it looks like embed-resource can has a fallback approach that doesn't depend on the registry (vswhom).
But according to the docs, embed-resource also reads RC env vars for the msvc target so i guess that would work too.
gnu users have to resort to the PATH env var then which imho is acceptable so i'm going to update the readme and merge it...


hgnc ingest fails with illegal prefix?

Is this a good reason to fail the entire hgnc.py pipeline?
pyobo.identifier_utils.MissingPrefix: unhandled prefix ogms/OMRE found in curie ogms/OMRE:0000137

It could be, but then we would need some sort of idea on how to fix it. What das OGMS have to do with HGNC?
@kevinschaper bcc

Until now I have most of the PyOBO pipelines fail if there's anything unexpected, since this motivates either more curation of the bioregistry, or to add more rewrite rules in PyOBO's config file

I just re-ran the HGNC converter and did not get this error. What code did you use that resulted in this?

(@kevinschaper reported this in the Monarch slack, so we will wait until he can answer)

Like I said, I wasn't able to reproduce this from the HGNC converter, but I did find in AERO that there was a reference like this. I added it to the Bioregistry.
@kevinschaper if this was popping up during full a database build, you can pass -x to turn off raising exceptions. It's very strict by default in order to prompt additional curation and promote 100% data integrity before shipping each new version of the database (btw, this is an incredibly time intensive process; curation of the mess is very hard)

I'm going to close this issue, since it's been a few weeks with no comment from Kevin. Feel free to re-open it if you have more to add.

Sorry @cthoyt - I totally missed the GitHub notification on this the first time. I was doing a full database build, I'll try it again and I can re-open if I hit the same problem.

Alright, sounds good. I'm doing some major work to improve the database build in #129. Throughout the process, I've found all sorts of other issues that needed fixing along the way.
I'd love to know why you're doing this yourself (besides wanting a more up-to-date version) - the results of this build get sent to Zenodo and are listed on http://biolookup.io/downloads. The new version of Biolookup, that will be released after I finish #129 will also have the synonyms, xrefs, and relationships in https://github.com/biopragmatics/biolookup/pull/10

I think I was wandering down a path of off label usage - looking at whether we could take advantage of PyOBO's parsing as a part of the Monarch Ingest, so I was poking around trying export a whole source ("hgnc.obo"?), or maybe iterate over each entity returned by a source.

Not sure why you'd want to go through the whole database build to get a single ontology, but also you probably noticed that this package isn't exactly set up for end-users to access all of the low-level functionality (there specifically aren't even docs besides the README at the moment). Here's some example code for what you described, though:
import pyobo

ontology = pyobo.get_ontology("hgnc")

# Iterate over terms in the ontology
for term in ontology:
    print(term.prefix, term.identifier, term.name, term.synonyms)  # and more

# Dump it as OBO
ontology.write_obo("hgnc.obo")

# Convert OBO to OWL (requires ROBOT on PATH)
from pyobo.utils.misc import obo_to_owl
obo_to_owl("hgnc.obo", "hgnc.owl")


Add support for all remaining AES modes

This pull request is based on #19. I recommend reviewing/merging that one first, before taking a look at this one.
cc @lthiery

Thanks so much for adding the AES support and for cleaning up the PWM source code and examples!

Thanks so much for adding the AES support and for cleaning up the PWM source code and examples!

No problem. Thank my client, they paid for it :-)
Thank you for creating stm32l0xx-hal in the first place, and for keeping up with all my pull requests!


GPU is not being used on macOS when launching from CLI

What is the issue?
On macOS, if you use Ollama, it utilizes the GPU. However, when launching via CLI, it does not. I searched for GPU flags but couldn’t find any. We need default GPU support for macOS when using the CLI.
https://github.com/user-attachments/assets/26fd9f8a-94f8-458f-8482-bbb96ab40697
OS
macOS
GPU
Apple
CPU
Apple
Ollama version
0.5.4

Server logs will aid in debugging.

Does Mac have GPU installed? In my memory, Mac don't have GPU? Am i right?

Server logs will aid in debugging.

I figured out the cause: it is using a different runner when launched from the CLI compared to the application. Here are the server logs for both cases—first from the CLI, and then from the application.
cli(look at line 39:97):
󰀵 bhavya  ~/󰲋 /Collage   15:31 

ollama serve

2024/12/26 15:31:44 routes.go:1259: INFO server config env="map[HTTPS_PROXY: HTTP_PROXY: NO_PROXY: OLLAMA_DEBUG:false OLLAMA_FLASH_ATTENTION:false OLLAMA_GPU_OVERHEAD:0 OLLAMA_HOST:http://<IP_ADDRESS>:11434 OLLAMA_KEEP_ALIVE:5m0s OLLAMA_KV_CACHE_TYPE:f16 OLLAMA_LLM_LIBRARY:metal OLLAMA_LOAD_TIMEOUT:5m0s OLLAMA_MAX_LOADED_MODELS:0 OLLAMA_MAX_QUEUE:512 OLLAMA_MODELS:/Users/bhavya/.ollama/models OLLAMA_MULTIUSER_CACHE:false OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:4 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://<IP_ADDRESS> https://<IP_ADDRESS> http://<IP_ADDRESS>:* https://<IP_ADDRESS>:* http://<IP_ADDRESS> https://<IP_ADDRESS> http://<IP_ADDRESS>:* https://<IP_ADDRESS>:* app://* file://* tauri://* vscode-webview://*] OLLAMA_SCHED_SPREAD:false http_proxy: https_proxy: no_proxy:]"
time=2024-12-26T15:31:44.480+05:30 level=INFO source=images.go:757 msg="total blobs: 22"
time=2024-12-26T15:31:44.480+05:30 level=INFO source=images.go:764 msg="total unused blobs removed: 0"
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode.

[GIN-debug] [WARNING] Running in "debug" mode.  This issue originates from routes.go. If you don’t mind, I would like to work on solving it.

Does Mac have GPU installed? In my memory, Mac don't have GPU? Am i right?

hmm every mac has a gpu even intal one new macs from m2 uses apple slicon gpus which uses matel framwork.

What are you trying to achieve by running ollama serve?

I'm not a Mac user so the following may be inaccurate.  The ollama bundle includes the ollama server and the runners.  When the server starts, it looks around for the runners, usually in a path relative to where the server binary is located.  If you run the server with OLLAMA_DEBUG=1 in the environment, you will log lines from the search.  I speculate that when you run ollama serve, the server is not looking in the right place and can't locate the runners.

You'll have to clear about what the PR is going to do.  When run as an app, as is the usual way to run it, ollama detects the runners.  So the issue is in the way ollama is being invoked from the command line.  My understanding is that MacOS apps are an embedded mini-filesystem, so the command line invocation needs to access the app internals in order to find the runners and then make them available to the ollama server.  This may fall afoul of the package signing that is supposed to protect the integrity of the app.  But, not a MacOS user. so I may be mistaken.  If you generate a PR that fixes a real problem, then there's a good chance it will be merged, but it's usually not a quick process.

You'll have to clear about what the PR is going to do. When run as an app, as is the usual way to run it, ollama detects the runners. So the issue is in the way ollama is being invoked from the command line. My understanding is that MacOS apps are an embedded mini-filesystem, so the command line invocation needs to access the app internals in order to find the runners and then make them available to the ollama server. This may fall afoul of the package signing that is supposed to protect the integrity of the app. But, not a MacOS user. so I may be mistaken. If you generate a PR that fixes a real problem, then there's a good chance it will be merged, but it's usually not a quick process.

So, I found the problem, and it wasn’t about runner detection. It was about where I installed it from. I installed it using Brew, but what I didn’t realize was that after installing the application, it was not using /opt/homebrew/bin/brew for Ollama but rather /usr/local/bin/brew.
Using both the Brew located in /opt/homebrew/bin/brew and the application solves the problem. I think this happened because the two versions are compiled differently—one for general use and the other specifically for Metal devices. Sorry for wasting your time!


feat: allow equals sign in aliased parameter values.

Type

[ ] Refactor
[x] Feature
[ ] Bug Fix
[ ] Optimization
[ ] Documentation Update

Description
Proposal to allow aliased parameter values to contain an equals sign. for example, something like: -c formula=x=1+1
An alternative could be to have a way to escape the value, though that opens a shell can of worms.
Opening this as a draft as a way to get comments before I go and dig into the failing tests this causes. (I realise some may disagree with this change)
Here's an example with a better description:
Say you have a field formula you would like to hold a string that contains an equals character. As per the example above, the formula could be x=x+1. The desired outcome would be the equivalent of this ts:  const formula = "x=x+1".
This case is articulated in the test I believe, though I could be wrong :)
Cheers!

You can do so with pnpm changeset, and given this is a backward compatible feature you can just create a patch changeset.

done, thanks @IMax153 !

@dpnova - of course! Anytime.
Also it looks like we have a linting issue in CI. You can fix it locally with pnpm lint-fix

@dpnova - of course! Anytime.
Also it looks like we have a linting issue in CI. You can fix it locally with pnpm lint-fix

woops - seems I depend on my autoformatter too much haha thanks for that @IMax153  . (i wish the GH notifications for check fails worked more reliably)


Read bs-config instead of having webpack options

By reading the bsconfig we could skip the options part of webpack.
The downside would be that bsconfig supports trailing commas and comments in JSON which we don't have access to AFAIK.
I would really love this, since it could allow users to pick their style when using reason-scripts witouth ejecting it also prevents non reason-scripts users from making simple mistakes like, updating the options in webpack but not their bsconfig.
Do you have any thoughts on this @rrdelaney

Sounds good 😄 I'm starting work on this now, just wrote a quick lib to read a bsconfig.json from a dir: https://github.com/rrdelaney/read-bsconfig

Awesome! Feel free to ping me if you want help with this, it should be pretty straight forward, but if you need extra time or eyes I'm available 👍

This was fixed by #27


runtime: data race on stack object when using arena on darwin arm64

What version of Go are you using (go version)?

$ go version
go version go1.21rc4 darwin/arm64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=''
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/r/Library/Caches/go-build'
GOENV='/Users/r/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE='catdb.io'
GOMODCACHE='/Users/r/go/pkg/mod'
GONOPROXY='catdb.io'
GONOSUMDB='catdb.io'
GOOS='darwin'
GOPATH='/Users/r/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/r/sdk/go1.21rc4'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/r/sdk/go1.21rc4/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21rc4'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/j_/rq9ph2cd3h50w468sgv34lwh0000gn/T/go-build3636825793=/tmp/go-build -gno-record-gcc-switches -fno-common'
GOROOT/bin/go version: go version go1.21rc4 darwin/arm64
GOROOT/bin/go tool compile -V: compile version go1.21rc4
uname -v: Darwin Kernel Version 22.4.0: Mon Mar  6 20:59:28 PST 2023; root:xnu-8796.101.5~3/RELEASE_ARM64_T6000
ProductName:		macOS
ProductVersion:		13.3.1
ProductVersionExtra:	(a)
BuildVersion:		22E772610a
lldb --version: lldb-14<IP_ADDRESS>
Apple Swift version 5.8.1 (swiftlang-<IP_ADDRESS>.5 clang-14<IP_ADDRESS>.100)

What did you do?
test7.go:
package main

import (
	"arena"
	"sync"
)

const N = 200
const M = 2000000

func run() {
	for {
		arn := arena.NewArena()
		var wg sync.WaitGroup
		for i := 0; i < 2000; i++ {
			wg.Add(1)
			go func(i int) {
				defer wg.Done()
				process(0)
			}(i % 15)
			if i%2 == 0 {
				arena.MakeSlice[*int](arn, M/8, M/8)
			} else {
				s := make([]*int, i)
				_ = s
			}
		}
		wg.Wait()
		arn.Free()
	}
}

//go:noinline
func fill(a *[N]int) {
	for i := range a {
		a[i] = i
	}
}

func process(k int) int {
	var a [N]int
	fill(&a)
	if k > 10 {
		return 0
	}
	return process(k + 1)
}

func main() {
	for i := 0; i < 10; i++ {
		go run()
	}
	run()
}

run with race:
GOEXPERIMENT=arenas  go1.21rc4 run -race test7.go

What did you expect to see?
No race.
What did you see instead?
==================
WARNING: DATA RACE
Write at 0x00e400013918 by goroutine 146912:
  main.fill()
      /Users/r/workspace/testcode/testarena/test7.go:36 +0x40
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:42 +0x44
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.run.func1()
      /Users/r/workspace/testcode/testarena/test7.go:19 +0x5c
  main.run.func2()
      /Users/r/workspace/testcode/testarena/test7.go:20 +0x44

Previous write at 0x00e400013918 by goroutine 146908:
  main.fill()
      /Users/r/workspace/testcode/testarena/test7.go:36 +0x40
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:42 +0x44
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.process()
      /Users/r/workspace/testcode/testarena/test7.go:46 +0x6c
  main.run.func1()
      /Users/r/workspace/testcode/testarena/test7.go:19 +0x5c
  main.run.func2()
      /Users/r/workspace/testcode/testarena/test7.go:20 +0x44

Goroutine 146912 (running) created at:
  main.run()
      /Users/r/workspace/testcode/testarena/test7.go:17 +0x1a8

Goroutine 146908 (finished) created at:
  main.run()
      /Users/r/workspace/testcode/testarena/test7.go:17 +0x1a8
==================

This race can also be reproduced on linux-arm64.

arn can only be used by one goroutine at a time. The allocations produced by the arena can be accessed by multiple goroutines concurrently, but you can't call arena.MakeSlice for the same arena from multiple goroutines (unless you put a lock around it or otherwise ensure mutually exclusive access). This is documented here: https://cs.opensource.google/go/go/+/master:src/arena/arena.go;l=43?q=arena.go&ss=go%2Fgo.
We have no plans to lift this restriction in the near future.

Oops, just kidding. Rereading your code I think I misunderstood. I'll take a closer look. Sorry about that.

OK, I suspect this is due to the fact that in raceenabled mode the user arena address space is more mixed in with the regular heap address space. It kind of looks like:

Something is wrong with race detector tracking in the arena implementation.
It's spilling over into a stack allocation that reuses the arena address space.

I'm surprised that stacks are being allocated in what was user arena address space, but maybe I'm misremembering or there's a bug. At the very least, I think I found a double racefree issue? Maybe that's it?

OK, I suspect this is due to the fact that in raceenabled mode the user arena address space is more mixed in with the regular heap address space. It kind of looks like:

Something is wrong with race detector tracking in the arena implementation.
It's spilling over into a stack allocation that reuses the arena address space.

I'm surprised that stacks are being allocated in what was user arena address space, but maybe I'm misremembering or there's a bug. At the very least, I think I found a double racefree issue? Maybe that's it?

I have printed the address space when allocating arena chunk and stack. I found that the user arena address space is always reused for arena and never recycled for stack or heap. The address of the race data is never been in an arena chunk.
I also noticed the double racefree in func freeUserArenaChunk() and func (s *mspan) setUserArenaChunkToFault(). And after I removed the racefree in func (s *mspan) setUserArenaChunkToFault()`, this race just happened again. So I don't think it is the root cause.
By the way, I haven't see racefree in func stackfree(). I don't know how this works that normal code(without arena) never reports races of stack object. I have tried to add racefree in func stackfree(), but the race still exists.


Support Excess Property Checks

I believe Flow's default object type vs. the exact object type is backwards
The exact object type already supports Excess Property Checks by default. What I'm asking for is only relevant if/when I can configure strict object types as the default behavior #3214. If it were configured as such, the following would be an exact object type:
type Point = {
    x: number,
    y: number
};

const p: Point = { x: 5 };

Similar to TypeScript, the above should throw the following error:

Type { x: number; } is not assignable to type Point. Property y is missing in type { x: number; } – const p: Point.

Unlocking a strict object type would be achieved with Excess Property Checks, which would look like this:
type Point {
    x: number;
    y: number;
    [propName: string]: any;  // <-- exact object type becomes flexible
}

Just trying to offer solutions to my laundry list of friction points with Flow.

This is core part of Flow's type system: { x: X, y: X } is a subtype of { x: X } and this is not going to change. The same is true for TypeScript, actually.

@vkurchatkin, I'm not sure how your example relates to the post.


Add steps/ guide to use website

Add short steps in below blank space, describing steps of procedure to use the website with URL example
Preview:

Hey, can I take this up?

@kartik3805  I would love to this task ,
I am new to open source so please help me to understand more about the issue, and assign me this task

@kartik3805 I would love to this task , I am new to open source so please help me to understand more about the issue, and assign me this task

Steps to use website easily, like copy URL from Wikipedia and then paste in search box.....like that

@kartik3805 I would like to contribute to this, could you please assign me this issue

Can you assign to me?
I'm new to open source


OAuth2 support in openresty

Support itsyouonline authentication on our openresty

Couldn't find a lua lib to verify jwt with ES384 algorithm, created a small wrapper for jwt-cpp.
Itsyou.online authentication for resty is implemented here, with a sample of configuration that should be set in nginx config.

Verification steps:
1- install lua/openresty using jumpscale
j.builder.runtimes.lua.install()
2- create an nginx config file (described here)
At itsyou.online, you need to create an organization and add members in (if you didn't), then use this organization secret in in nginx config, you can find how to do this here.
then you can run using
openresty -c /path/to/nginx.conf
If you run inside docker, make sure you map ports from container to host (e.g. -p 8080:8080).
3- open the configured URL in nginx.conf, you should be redirected to itsyou.online to login (you should check if members and non members of the organization provided in config can be authenticated or not)..


Not plotting x-axis line

When using stem() to plot a discrete data sequence, the x-axis line on 0 is not being plotted.
Y = linspace(-2*pi,2*pi,50);
stem(Y)

fig2plotly(gcf, 'offline', false);

Expected and generated (https://chart-studio.plotly.com/~xarico10/745/#/) plots:

Examples on using stem() can be found on:
https://www.mathworks.com/help/matlab/ref/stem.html#responsive_offcanvas

By making the following changes

I am able to get x-axis for the graph
CODE
x = 0:50;
y = linspace(-8,6,length(x));
%Plotting
stem(x,y)
fig2plotly()
OUTPUT


Prefer evaluation over test for arithmetic expression

Usage of (( ... )) over [[ ... ]] is preferred for arithmetic expression since
the former is less error prone.
Also, unset local variable whenever possible.
Ref: word of wisdom :)

Tested this out on macOS and FreeBSD, works great!

Thanks for your contribution!


Write error pages for types, and improve the error messages a bit further

This PR writes specific error detail pages for each of our augmentable types, including examples of commonly possible errors in each case. I've tried my best to come up with good examples of code that actual users may have written when they hit these errors.
Checklist

[X] Presence
[X] Storage
[X] RoomEvent
[X] ThreadMetadata
[X] UserMeta
[ ] RoomInfo
[ ] ActivitiesData

Fixes LB-761.

The pages look amazing! :chef-kiss: They're pretty clear.
Maybe we can anticipate the most common errors when we except JSON? A small sentence along the line of For example, Date, function, Map and classes are not valid JSON.

Maybe we can anticipate the most common errors when we except JSON? A small sentence along the line of For example, Date, function, Map and classes are not valid JSON.

Great points, added in b3a900110e8c01e62d4b7c53ef04d901b4752891 👍


[2.0.0] Release

Version 2.0.0
Currently, the docs have the mostly expected outline of the test-utils. However, the actual test utils do not conform to this.
TODOs

[x] Remove unneeded utility functions (all undocumented ones)
[x] controlWrapper function

Refactor to require callback to throw on non-success

[x] get<LOG_FILE> functions

Refactor to not throw on empty files - I cannot remember if there was a good reason for this, but I can no longer think of one

[ ] Do NOT remember which bottom panel tab (hints, console, tests) was selected between lessons

@moT01 I am trying to decide whether to implement this feature or not:

Do NOT remember which bottom panel tab (hints, console, tests) was selected between lessons

Basically, the current behaviour is to remain on the console tab in the next lesson, if it was previously clicked on. However, I am not sure this is desirable?

I think I would prefer it to go back to the hints on a new lesson, but it does feel like just a preference - some may prefer it stay on the console. What do you like?

I think going back to the tests makes sense, because the console is meant for more of a debugging/more info workflow - the step after reading the test text.


Added DoseSpot FAQ page

Direct link to preview: https://medplum-www-git-rahul1-dosespot-website-enhancements-medplum.vercel.app/docs/medications/e-prescibe
Not sure if this is possible with Dosespot website requirements, but I would prefer a disclaimer message such as "Dosespot is a built-in first party eRx provider.  Medplum can integrate with any eRx provider via bots, this is just our default implementation."
Again, not sure that's possible, especially during website review period.


nodePackages: update to latest versions

Description of changes
Just an update of nodepackages, mainly doing this because I'm tired of the warnings in pnpm and wrangler that I need to update my tools.
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Fix the commit message, please; I'd argue nodePackages is the canonical attribute name :)

Sure, just did.

ok I'm going to merge this one just not to have any conflicts.
happy to take care of any other feedback should there be any.


Encoding signature is stripped from project file

When I open the project file and save it then the encoding signature is removed from the file

I remember this being an issue with the original EditProj as well.  Pretty sure I can fix.

This should be fixed in 1.0.1.


Customize Params problem， I‘m new user

I have customized ".Params.download_link" in "single.html", but each article header can only use "download_link" to pass only one link. How can I make "download_link1", "download_link2"... The cycle is called when publishing, that is, the same page outputs multiple different links

You could always make download_link a list in your frontmatter? All frontmatter formats support lists, and calling .Params.download_link will then be iterable

Please use https://discourse.gohugo.io/ for questions/troubleshooting. Also see  Hugo Documentation.


feat(ui-ux): UI for opt out anonymized data instrumentation

What this PR does / why we need it:
Which issue(s) does this PR fixes?:

Fixes #DFC-481
Additional comments?:
Developer Checklist:

[ ] Read your code changes at least once
[ ] Tested on iOS/Android device (e.g, No crashes, library supported etc.)
[ ] No console errors on web
[ ] Tested on Light mode and Dark mode*
[ ] Your UI implementation visually matched the rendered design*
[ ] Unit tests*
[ ] Added e2e tests*
[ ] Added translations*

Codecov Report
Attention: Patch coverage is 40.90909% with 13 lines in your changes are missing coverage. Please review.

Project coverage is 54.87%. Comparing base (211bf02) to head (5b40bba).

Files
Patch %
Lines

...gator/screens/Settings/screens/AnalyticsScreen.tsx
0.00%
10 Missing :warning:

shared/contexts/AnalyticsProvider.tsx
77.77%
2 Missing :warning:

...s/AppNavigator/screens/Settings/SettingsScreen.tsx
66.66%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4177      +/-   ##
==========================================
- Coverage   57.05%   54.87%   -2.18%
==========================================
  Files         438      440       +2
  Lines       12502    12522      +20
  Branches     4142     4144       +2
==========================================
- Hits         7133     6872     -261
- Misses       5280     5566     +286
+ Partials       89       84       -5

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

Left some linting issues to fix!


Adding AES256 Encryption/Decryption as a beginner friendly project

Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
N/A
Describe alternatives you've considered
N/A
Additional context
Here is a demo of the working of AES256 encryption and decryption algrorithm

Go for it 👍


Add tests that verify folder deletion behavior

Closes #3664 by added 3 new Electron Playwright tests that only pass if we see and successfully interact with the deletion confirmation dialog, for both file and folder deletions.
Also moves some file tree tests out of our projects spec file, since we have made the more specific file-tree.spec.ts since those tests were written.

This PR predates the new guidance on Playwright, it wouldn't be hard to adjust them to work with that approach later.


ACC-107 Java 8 date/time values not accepted by OPA Client

When the user attributes contain a value of the Java 8 date/time values, the client can not serialize the request for OPA.

Fixed by #4 and #5


Preserve comments when flattening use statements

Issue #4991

Thank for the PR!
Overall the code changes look good to me.
Would you mind adding some additional test cases with nested block comments. For example:
use a::{
    b,
    c,
    // Comment before a::d
    d,
    e, // Comment after a::e
};
use a::{/* before a::f::g? */ f::g, h::{i, /* after a::h::i? */ j}};
use a::{l::{self, m, n::o, p::*} /* after a::l::p::*? */};
use a::q::{self};
use a::q::{/* before */ self};
use a::q::{self /* after */};
// Comment before a::r
use a::r;

I tried adding some more tests as described and ran into a few issues. In particular, some of the other import granularities, flatten then regroup imports. This ends up being lossy, especially if there are comments before / after a group. I'm starting to wonder if having any comments within a use statement should result in that use statement being left alone.
There's already code in normalize_use_trees_with_granularity that checks if a use-statement has a comment, and if it does, leaves it as-is, but it only checks for top-level comments, it doesn't check for comments within the use-statement. Perhaps I should just expand that. Thoughts?

@davidlattimore Thanks for continuing to look into this. I think we should prefer not to flatten use statements if it would result in rustfmt removing comments. I think airing on the side of caution is probably better here. It would be great if you could introduce that logic and add the relevant test cases 😁.
I wonder if following an approach outlined in #3999 would be useful. This was a PR that was merged into an unreleased branch, and also deals with dropping comments from use statements.

I've updated so that use statements that contain comments won't be normalized.

Just to summarize and ensure I understand correctly, is the consensus that trying to flatten/merge in the presence of comments  has far too many complexities and scenarios for rustfmt to be able to format them well, and we're instead just going to bail in the presence of comments?

Yep, that was my thinking. The one possible exception might be comments that were after an individual import and on the same line. e.g.
use a::b; // A comment
use a::c;

could be transformed into:
use a::{
   b, // A comment
   c,
};

And vice-versa.
I'm not sure though if it's worth that special case though. If an import is special enough that it deserves a comment, then perhaps it should be left separate from other imports.
All the other cases, e.g. comments before / after a group get really messy.


Adding custom read-only block

Hi, I am trying to make custom button that inserts custom tag with content (in my case <article_id>Article ID Placeholder</article_id>). Everything is ok when you press the button, the html is appending to the editor, but after that there are problems that I can't solve:
When you start typing the text is within my custom tag and I can't  get out of it. When you press  the tag is multiplying on the next row.
My question is: Is there a way to insert html content as some kind of block that you can't edit (read-only) and the cursor can't get inside of it?

Nope :/
I don't deal that in Trumbowyg.

When you add a link and continue typing you are not in the "a" tag, so you've got to do this somehow. I am looking in the core code for an hours but can't figure out how you do that.

When you add a link and continue typing you are not in the "a" tag

Yep, it's a bug... due to semantic option I think.

I have solved my issue. I am sharing my workaround. You can add disabled input element and it completely act the way I want it to be (as a custom block). Then you can style it the way you want with css. Here is a little snippet of the code:
trumbowyg.execCmd('insertHTML', '<input name="pagebreak" value="My custom block" class="custom_block" type="text" disabled="disabled"/>');

note insertHTML does not work on any browsers :/

Tables worked for me too

I have solved my issue. I am sharing my workaround. You can add disabled input element and it completely act the way I want it to be (as a custom block). Then you can style it the way you want with css.

I have solved my issue. I am sharing my workaround. You can add disabled input element and it completely act the way I want it to be (as a custom block). Then you can style it the way you want with css. Here is a little snippet of the code:
trumbowyg.execCmd('insertHTML', '<input name="pagebreak" value="My custom block" class="custom_block" type="text" disabled="disabled"/>');

Oh this is genius, @nilievski85


Typo

Link to article:
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-getting-started/deployment-to-a-hosting-provider/deployment-to-a-hosting-provider-web-config-file-transformations-3-of-12
Problem:
Wording ( two "not"s)
"which does not work not for SQL Server Compact."

This was fixed. Closing.


Cannot use coroutines in method call handlers (in kotlin)

package com.damowmow.gc

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.*

class MainActivity: FlutterActivity() {
  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "gc.damowmow.com/test").setMethodCallHandler {
      call, result ->
        GlobalScope.launch {
          withContext(Dispatchers.Main) {
            try {
              result.success(null) // this throws (!)
            } catch (e: Throwable) {
              println("caught exception: $e");
            }
          }
        }
    }
  }
}

Specifically, we get caught exception: java.lang.ClassCastException: io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler cannot be cast to io.flutter.plugin.common.MethodChannel$Result.

The stack trace in the case above is:
W/System.err(15248):    at com.damowmow.gc.MainActivity$configureFlutterEngine$1$1$1.invokeSuspend(MainActivity.kt:21)
W/System.err(15248):    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
W/System.err(15248):    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
W/System.err(15248):    at android.os.Handler.handleCallback(Handler.java:883)
W/System.err(15248):    at android.os.Handler.dispatchMessage(Handler.java:100)
W/System.err(15248):    at android.os.Looper.loop(Looper.java:214)
W/System.err(15248):    at android.app.ActivityThread.main(ActivityThread.java:7356)
W/System.err(15248):    at java.lang.reflect.Method.invoke(Native Method)
W/System.err(15248):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
W/System.err(15248):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Threaded version works fine:
package com.damowmow.gc

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import android.os.*

class MainActivity: FlutterActivity() {
  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "gc.damowmow.com/test").setMethodCallHandler {
      call, result ->
        val backgroundThread = object: Thread("background") {
          override fun run() {
            Handler(Looper.getMainLooper()).post {
              result.success(null)
            };
          }
        }
        backgroundThread.start()
    }
  }
}

For the record, this is how I'm driving this from Dart:
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  print(await MethodChannel('gc.damowmow.com/test').invokeMethod('a'));
}

no crash with:
package com.damowmow.gc

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.*
import kotlinx.coroutines.*

var lastResult: MethodChannel.Result? = null

class MainActivity: FlutterActivity() {
  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "gc.damowmow.com/test").setMethodCallHandler(
      object: MethodChannel.MethodCallHandler {
        override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
          lastResult = result
          GlobalScope.launch(block = CoroutineScope::test);
        }
    });
  }
}

suspend fun CoroutineScope.test() {
  withContext(Dispatchers.Main) {
    try {
      lastResult!!.success(null) // this throws (!)
      lastResult = null
    } catch (e: Throwable) {
      println("caught exception: $e");
    }
  }
}

I met this problem too.
Kotlin croroutine is different from Dart
In your case, you should create a scope on Dispatchers.Main and work on this scope. But do not dispatch mission on Dispatchers.Main by withContext(Dispatchers.Main){ }.
The easiest code:
// create scope anywhere, for example inside the class
private val _mainScope = CoroutineScope(Dispatchers.Main)

// And launch
_mainScope.launch{
    val res = withContext(Dispatchers.IO) {
        //  do your work on other thread, for example in IO thread, not Main thread
        // ......
        // last line is your return value, but without return keyword, not like Dart
        valueForTheMission
    }
    // return to Main thread and call [result.success]
    result.success(res)
}

@JohnGu9 Mind posting a complete example?

Can reproduce the issue using https://github.com/flutter/flutter/issues/59024#issue-634978408
This runs fine https://github.com/flutter/flutter/issues/59024#issuecomment-640936874

flutter doctor -v
[✓] Flutter (Channel master, 1.25.0-5.0.pre.92, on Microsoft Windows [Version 10.0.19042.630], locale en-US)
    • Flutter version 1.25.0-5.0.pre.92 at C:\Code\flutter_master
    • Framework revision 90f08769a3 (3 hours ago), 2020-12-07 12:33:03 +0100
    • Engine revision 6491c7518f
    • Dart version 2.12.0 (build 2.12.0-120.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Code\sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = C:\Code\sdk
    • Java binary at: C:\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.8.2)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.8.30717.126
    • Windows 10 SDK version 10.0.18362.0

[✓] Android Studio (version 4.1.0)
    • Android Studio at C:\Code\android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[✓] IntelliJ IDEA Community Edition (version 2020.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.4
    • Flutter plugin version 52.0.5
    • Dart plugin version 203.5981.152

[✓] VS Code (version 1.51.1)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.17.0

[✓] Connected device (4 available)
    • sdk gphone x86 (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • Windows (desktop)       • windows       • windows-x64    • Microsoft Windows [Version 10.0.19042.630]
    • Chrome (web)            • chrome        • web-javascript • Google Chrome 87.0.4280.88
    • Edge (web)              • edge          • web-javascript • Microsoft Edge 87.0.664.52

• No issues found!

So I've been working with coroutines for about a month now, and it seems the idiomatic way of doing the the OP's code example is:
override fun onMethodCall(call: MethodCall, result: Result) = runBlocking {
    Log.e(TAG, "onMethodCall: I'm working in thread ${Thread.currentThread().name}")
    when (call.method) {
      "hello" -> {
        withContext(Dispatchers.IO) {
           // Run code on a IO thread (the amount of IO threads are 64 by default).
           myHttpTask()
        }
        withContext(Dispatchers.Default) {
          // Run code on a CPU thread (the amount equals the amount of CPU cores).
          myCpuTask()
        }

        // This will run on the default thread that the invoker of onMethodCall was using (the main/UI thread in this case)
        // This is due to runBlocking inheriting that thread.
        result.success("world")
      }
      else -> result.notImplemented()
    }
  }

MainScope is allreqdy object . MainScope
MainScope.launch is loke view.post {} . Not garant now execute
laucnh is not async. Function may wait lauch ending (i dont  except about non suspend fun)
Network calls  must call in non main thread

try this
                    suspendCoroutine<Response?> {
                        val callback = object : Callback {
                            override fun onFailure(call: Call, e: IOException) {
                                it.resume(null)
                            }

                            override fun onResponse(call: Call, response: Response) {
                                it.resume(response)
                            }
                        }
                        okHttp.newCall(Request.Builder().url(url).build()).enqueue(callback)
                    }?.let { response ->
                        if (response.isSuccessful) {
                            CoroutineScope(Dispatchers.IO + Job() + exceptionHandler).lauch{
//////

                         } } }

Hey @Hixie, I just tried and I cannot reproduce it on current master, it prints null

flutter doctor -v
[√] Flutter (Channel master, 2.6.0-12.0.pre.689, on Microsoft Windows [Version 10.0.19041.1288], locale ru-RU)
    • Flutter version 2.6.0-12.0.pre.689 at C:\dev\src\flutter
    • Upstream repository git@github.com:nt4f04und/flutter.git
    • FLUTTER_GIT_URL = git@github.com:nt4f04und/flutter.git
    • Framework revision 51e7c618ab (4 days ago), 2021-11-11 01:23:05 -0500
    • Engine revision d5cadd28b0
    • Dart version 2.15.0 (build 2.15.0-285.0.dev)

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Users\danya\AppData\Local\Android\sdk
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.7.7)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.7.30621.155
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 4.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] IntelliJ IDEA Community Edition (version 2020.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.3
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] VS Code (version 1.62.2)
    • VS Code at C:\Users\danya\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.28.0

[√] Connected device (4 available)
    • sdk gphone x86 (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • Windows (desktop)       • windows       • windows-x64    • Microsoft Windows [Version 10.0.19041.1288]
    • Chrome (web)            • chrome        • web-javascript • Google Chrome 95.0.4638.69
    • Edge (web)              • edge          • web-javascript • Microsoft Edge 95.0.1020.44

! Doctor found issues in 1 category.

Verified this issue using latest master and below code sample and observed that there's no crash but it prints null:
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
Building with Flutter multidex support enabled.
✓  Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app-debug.apk...
Debug service listening on ws://<IP_ADDRESS>:51800/b5yKy1t8phM=/ws
Syncing files to device Android SDK built for x86...
I/flutter (19588): null

package com.nevercode.flutter_app

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.*

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.nevercode.flutter_app/test").setMethodCallHandler {
            call, result ->
            GlobalScope.launch {
                withContext(Dispatchers.Main) {
                    try {
                        result.success(null) // this throws (!)
                    } catch (e: Throwable) {
                        println("caught exception: $e");
                    }
                }
            }
        }
    }
}

main.dart:
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  print(await MethodChannel('com.nevercode.flutter_app/test').invokeMethod('a'));
}

I'll go ahead and optimistically close as fixed and not reproducible.


fix(DeviceLiveEventsCard): show falsey values

Use JSON.stringify for all types of values and not only objects.
This will change the behaviour of all the values shown in the component, now all of them are JSON values (e.g. string with ", bolean false), before React wouldn't have shown false, empty arrays or strings.

@davidebriani


docs(readme): add parts on app state and dispatching actions

Not totally sure about the need for adding router: to application state, but the one for dispatching actions is needed. Also, the description in original PR #5 has a typo in the import.

Thanks!


Link of the week for "javafx-cdi-example" and "javafx-cdi-archetype"

Thanks @michael-schnell for your commit!


Test PR

Changes:

Test PR

Type of change

[ ] Bug fix
[ ] New feature
[ ] Update feature
[ ] Refactor code
[ ] Translation to code
[ ] Translation to crowdin
[ ] Script configuration
[ ] Improve performance
[ ] Style only
[ ] Dependency update
[ ] Documentation update
[ ] Release

Name
Result

Build status
Building 🔨

Action URL
Visit Action

Preview Link: https://add-check.deriv-com-preview-links.pages.dev

Name
Result

Build status
Completed ✅

Preview URL
Visit Preview

Action URL
Visit Action


Replacing hashes wherever possible with alternative

Recently a hash for arbiters in Space, and one for shape-pairs in dyn-aabb broadphase were removed, which together results in a 10mb memory usage decrease and no measurable performance detriment in the stress-pyramid demo.
There are further hashes for which I should try and replace them either with an alternative, or at worst an RBTree when applicable (for which an implementation already exists).

Hash for listener sets between cbtypes replaced with listener lists on cbtypes. whilst the asymptotic performance is lower, in practice it is virtually the same and later with set types we will no longer have the concept of a listener set between two cbtypes anyways, so this is more of a midstep towards that.
All the remains now is a hash used in the simple decomposition algorithms which is only instantiated should these methods be used, and a hash in the space for matching interactors to the set of arbiters between them.


HDDS-5206. Addendum: Support revoking S3 secret

This is an addendum to #2239 .
Fixes the typo which wasn't caught in the previous review for s3 getsecret / revokesecret admin permission check.

Thank you @adoroszlai for reviewing.


Composer test does not work

Bug Report
the command composer test  does not work
Bagisto Version
Latest public version
Steps To Reproduce
install bagisto
run composer test
Actual Result
> set -e
> @php artisan migrate:fresh --env=testing

  Dropping all tables .................................................................................................................... 10ms FAIL

In Connection.php line 759:

  SQLSTATE[HY000] [2002] Connection refused (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

In Exception.php line 18:

  SQLSTATE[HY000] [2002] Connection refused

In PDOConnection.php line 40:

  SQLSTATE[HY000] [2002] Connection refused

Script @php artisan migrate:fresh --env=testing handling the test event returned with error code 1

Expected Result
Test should complete succesfully

Hi there,
Which version of Bagsito are you using?

@rabol
As I checked in our latest version and not getting any issues.

Please check your .env file, as its looks like the connection is refused. Please use bagisto forum as this channel is only for reporting bugs and fixes.


add configuration for semantic-release

This PR adds the necessary configuration to use semantic-release (javascript version) in the CI/CD pipeline.
Close: #23

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add app's homepage

As a
user
I want to
see the homepage with the bottom navbar
To
use easily navigate the app

Acceptance Criteria

[x] is using a shared homepage screen
[x] working bottom navbar
[x] using shared firestore provider (if needed)

:tada: This issue has been resolved in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


npx biome lint . --write starts, but doesnt do anything

Environment information
CLI:
  Version:                      1.9.1
  Color support:                true

Platform:
  CPU Architecture:             x86_64
  OS:                           windows

Environment:
  BIOME_LOG_PATH:               unset
  BIOME_LOG_PREFIX_NAME:        unset
  BIOME_CONFIG_PATH:            unset
  NO_COLOR:                     unset
  TERM:                         unset
  JS_RUNTIME_VERSION:           "v20.17.0"
  JS_RUNTIME_NAME:              "node"
  NODE_PACKAGE_MANAGER:         "npm/10.4.0"

Biome Configuration:
  Status:                       Loaded successfully
  Formatter disabled:           false
  Linter disabled:              false
  Organize imports disabled:    false
  VCS disabled:                 true

Workspace:
  Open Documents:               0

What happened?

When I write npx biome lint . I get all the lint errors as expected
When I write npx biome lint . --write it doesnt do anything, but I still need to terminate it

Expected result
npx biome lint . --write should fix FIXABLE errors
Code of Conduct

[X] I agree to follow Biome's Code of Conduct

Could you provide a minimal reproduction repo?
npm create @biomejs/biome-reproduction

I let it overnight it and it started working.

Now it works correctly and it's done in 8 seconds. There was probably something bad on my side. Sorry and thank you.

@matej-kaska Could you share the repository where you run the linter (and the Biome config)? I am curious why it is so slow.

Created temporary repository for you. Now it works perfectly, but I think I found where was the problem. I had dist folder in the project with builded files and it slowed it down rapidly. When removed, it works perfectly.


4.2.1 On FreeBSD: pg_query_ruby_freebsd.sym: No such file or directory

Error:
63 warnings generated.
compiling /wrkdirs/usr/ports/databases/rubygem-pg_query/work/stage/usr/local/lib/ruby/gems/3.1/gems/pg_query-4.2.1/ext/pg_query/src_port_strnlen.c
warning: unknown warning option '-Wno-clobbered' [-Wunknown-warning-option]
warning: unknown warning option '-Wno-discarded-qualifiers'; did you mean '-Wno-ignored-qualifiers'? [-Wunknown-warning-option]
2 warnings generated.
compiling /wrkdirs/usr/ports/databases/rubygem-pg_query/work/stage/usr/local/lib/ruby/gems/3.1/gems/pg_query-4.2.1/ext/pg_query/xxhash.c
warning: unknown warning option '-Wno-clobbered' [-Wunknown-warning-option]
warning: unknown warning option '-Wno-discarded-qualifiers'; did you mean '-Wno-ignored-qualifiers'? [-Wunknown-warning-option]
2 warnings generated.
linking shared-object pg_query/pg_query.so
ld: error: cannot open /wrkdirs/usr/ports/databases/rubygem-pg_query/work/stage/usr/local/lib/ruby/gems/3.1/gems/pg_query-4.2.1/ext/pg_query/pg_query_ruby_freebsd.sym: No such file or directory
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

The full build log can be found here:
https://pkg.fechner.net/data/132amd64-gitlab/2023-06-23_10h06m34s/logs/errors/rubygem-pg_query-4.2.1.log
I checked the commit history and found the following commit that introduced a change I think is related to the problem:
https://github.com/pganalyze/pg_query/commit/684aa77a21eb46188de0ab9bfdabcef71f591614
But the file seems that the file does not exist or something is removing it.
If I testbuild the package:
poudriere testport -p gitlab -j 132amd64 -i databases/rubygem-pg_query

and I check in the sources after the build failed:
ls -las /wrkdirs/usr/ports/databases/rubygem-pg_query/work/stage/usr/local/lib/ruby/gems/3.1/gems/pg_query-4.2.1/ext/pg_query/pg_query_ruby_freebsd.sym
ls: /wrkdirs/usr/ports/databases/rubygem-pg_query/work/stage/usr/local/lib/ruby/gems/3.1/gems/pg_query-4.2.1/ext/pg_query/pg_query_ruby_freebsd.sym: No such file or directory

The problem is that the file ext/pg_query/pg_query_ruby_freebsd.sym is missing.
I tried next to manually add the file with a patch steps, but it looks that something in the build process removes the file.
I'm not sure if this is related to a behaviour in FreeBSD ports or if ruby while building is removing the file.
Maybe someone has an idea?

Thanks for the report @mfechner!
Looks like we dropped the ext/pg_query/pg_query_ruby_freebsd.sym file in the 15 rebase: https://github.com/pganalyze/pg_query/pull/270/files#diff-70e83c8dad161358fdefbb4e3ade15b1ec39947e27ffe7751b7cea7870377447
@msepga Do you remember if there was a particular reason we dropped this? (since ext/pg_query/extconf.rb still references it, maybe this was by accident?)


doesn't work with meteor 1.5.2

console.log(Projects.find().serverTransform) undefined

Can you provide more information or a small reproduction repo? That would be really helpful! :)

after move package order it seems work, but i don't remember which package cause this.
and there're new issue prevent meteor running.
=> Exited with code: 1
=> Your application is crashing. Waiting for file change.
=> Modified -- restarting.
=> Errors prevented startup:

   While selecting package versions:
   error: Conflict: Constraint<EMAIL_ADDRESS>is not satisfied by coffeescript 2.2.1_1.
    Waiting for file change.


PXE004.001: removed check for install/update

Fix for https://github.com/Dasharo/open-source-firmware-validation/issues/321:

Any idea why CI is failing?

After re-running it worked. Opened an issue


kafka(ticdc): kafka sink support compression after encoding event into message

What problem does this PR solve?

Issue Number: close #9596
What is changed and how it works?

After encoding the event into message, compress the value before compare against the message size limit.
Update the monitoring to track the compression ratio, also record the number of records carried by the request.

Check List
Tests

Unit test
Integration test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
Kafka sink support compress the message value before compare against the message size limit to reduce large message count.

/retest

/retest

/test verify

/retest

/test verify

/test verify

/retest

/test verify

/test engine-integration-test

/test dm-integration-test


Email Notification: Use Tenant's logo in email content

Linked to this PR https://github.com/Charge-Angels/ev-server/pull/2136

Ok


css not working

I'm creating simple app using nativescript-angular. Any change in app.css doesn't get reflected in the app. Do I need to do anything to get css working??

App.css seems to work fine on my end (not with livesync - #76). Please, check the TodoMVC sample for reference.


Update font size documentation

Updating font size documentation to include rems sizing for desktop and mobile to better match what Konstantin said is in the CSS

@kmbrlygl I wonder if you can make same PR to 1.0.1-rc-post-launch-fixes branch so @aaronhans would add it to our next release.

@kkoryaka I asked Aaron and he told me to create a PR off of main for this since it's just content changes (nothing too complex). I think this can be merged along with the next release or whenever feels appropriate. Is that how it should go @aaronhans?

This looks good, we can release it outside of the code change process because it is a content change and I will merge main back into the release branch.
Thank you @kmbrlygl and @kkoryaka!


Bug - DiscordAcctLink Unknown Member

https://github.com/Leyline-gg/leyline-discord/blob/d41823bee279960205b8f475111702b643e8d244/events/firebase/discordAcctLink.js#L24
This line will throw an error in the console if the member is not in the server. The idea is for member to have a falsy value, so that the next line logs the failure in the Discord bot log channel

Verified on prod


[aria-selected=true] trigger self close

Hi there,
Thank you for great plugin first of all.
However, I have try to use select2 with options of multiple checkboxes inside.
I set closeOnSelect to false to prevent self close.
However, when i click on option that has [aria-selected=true] it will toggle close anyway.
So i have to commented out self.trigger('close') in js file.
Is there a better way to fix this?

Can you expand upon the issue you are facing by adding a few more pieces of information to your bug report?

What steps can be used to reproduce the issue?
What is the bug and what is the expected outcome?
What browser(s) and Operating System have you tested with?
Does the bug happen consistently across all tested browsers?
What version of jQuery are you using? And what version of Select2?
Are you using Select2 with other plugins?

The contributing guide contains a useful section with a few questions which can help us track down the bug and speed up the process of finding a fix for it.  The creation of an isolated test case would also be useful.


Programmatically calling coffeelint does not respect .coffeelintignore

If I run coffeelint . the .coffelintignore is respected, if I use grunt-coffeelint it's not.

Hmm I see that coffeelint.lint takes source directly. I'll put this issue in the grunt-coffeelint repo. Sorry about that.


InvocationContextTest likely broken

Hi!
It seems that the Test got totally changed. It now tests something very different than before, but without updating the spec section!
In commit 021f446d5bceffc7169ec4636 a lot of similar changes got made:
 -    @Interceptors({ Interceptor8.class, Interceptor9.class })
 +    @SimpleBinding

But this changes the mechanism from using javax.interceptor.Interceptors to CDI style Interceptors. This is something very different!

Hello
The assertions in the test haven't changed since 2017, the supporting classes indeed did change.
Can you please point me to the section of interceptor specification which would explain why the test is now invalid or asserting something unexpected?

This test used to be the CDI support for javax.interceptor.Interceptors. Not it tests support for the @InterceptorBinding mechanism. Thats's just something very different, don't you agree? Of course, we should ideally test both!

This test used to check the CDI support for javax.interceptor.Interceptors

Did it really? If you take a look at the @SpecAssertion values on the test in question and cross-reference it with TCK audit file, you will see that these tests in fact perform assertions on InvocationContext object. I couldn't find anything in the test that would be specific to usage or functionality of javax.interceptor.Interceptors versus bindings.
So no, I do not agree - both variants of the test IMO test the same functionality.

Applying interceptor via @InterceptorBinding is something different than via @jakarta.interceptor.Interceptors. It's a different mechanism. You ASSUME that both behave the same internally. But how can you guarantee that if you removed the test for the later mechanism?

You ASSUME that both behave the same internally.

That's not true, I simply stated that the test is asserting InvocationContext, not functionality or behavior of either @InterceptorBinding or @jakarta.interceptor.Interceptors - there are different tests for those.
And as far as I can tell from the specification, you are allowed to use InvocationContext regardless of what interceptor "style" you chose.
Therefore, my initial question stands:

Can you please point me to the section of interceptor specification which would explain why the test is now invalid or asserting something unexpected?

You are right, it's not invalid or asserting something unexpected. But we only test one out of 2 different routes. We imo should test both.


Upgrade Apache Commons Collections to v3.2.2

Version 3.2.1 has a CVSS 10.0 vulnerability. That's the worst kind of
vulnerability that exists. By merely existing on the classpath, this
library causes the Java serialization parser for the entire JVM process
to go from being a state machine to a turing machine. A turing machine
with an exec() function!
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8103
https://commons.apache.org/proper/commons-collections/security-reports.html
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/

Hi @shannon-vanwagner, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;

I'm closing this pull request because this project requires a CLA. I still strongly encourage you guys to patch this independently. This security vulnerability is viral. Wish I could do more.

@shannon-vanwagner The CLA isn't required for this PR.
Though, out of curiousity, why would the CLA be a blocker for you?

Hi @shannon-vanwagner, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;

@bennage - Greetings! So we're fine signing CLAs but they require internal
legal review, which takes time. For this issue, we're trying to patch as many repos
as we can, as quickly as possible.
Cheers!

@shannon-vanwagner, Thanks a lot!


How to write data into yaml？

I'm very sorry, because the function introduction is not clear, so I want to ask, how to write data into the yaml file and which function to use? Can you give me an example?Thank you very much！

Look at code in tests/run-emitter.c or tests/run-dumper.c. :)


Missing fakeroot should be a fatal error, not a warning

Hello,
following OpenOffice bug 128413 I would like to suggest that if epm is unable to ensure the file permissions in a generated Debian archive, it should consider it a fatal error rather than a warning.
Apparently, epm can predict in advance whether the permissions will be respected or not, because the warning seems to disappear when the condition are met.
If you agree on this, and you do not have time do dedicate to it, I can look into the code and prepare a pull request.

Not sure if I agree. I think a warning is warranted, since it allows the end=user to either ignore it or fix it after the fact.


Fixed too many 405 error responses logon URL

Changed login POST URL since user/signin doesn't seem to work anymore.
Also using btw04's quick fix for x-device (thank you for the fix!).

I'm a noob at HTTP requests so thanks for letting me know about the params! (Seems like I need to do some more reading on this...)
On the versioning: Yep I reverted back to the old version using Firefox 95.0 and have no more errors, interestingly enough.

I tried your version and still get the 'too many 405 error responses' error.

Does it happen during sign on? I can try my best to help solve your problem but I'm not an expert by any means.

Yes, it did happen on sign on, on this line in a small test script:
client = TickTickClient(config.user_name, config.password, auth_client)
Below is the trace.   If you would be able to look at it, I could put my environment in a cloud-based Windows VM using a test account and provide the credentials for access.
`
"C:\Program Files (x86)\Python39-32\python.exe" "F:/Inspiron copy/Doug/TickTickAPIUsage/setup.py"
Traceback (most recent call last):
File "C:\Program Files (x86)\Python39-32\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\Program Files (x86)\Python39-32\lib\site-packages\urllib3\connectionpool.py", line 846, in urlopen
return self.urlopen(
File "C:\Program Files (x86)\Python39-32\lib\site-packages\urllib3\connectionpool.py", line 846, in urlopen
return self.urlopen(
File "C:\Program Files (x86)\Python39-32\lib\site-packages\urllib3\connectionpool.py", line 846, in urlopen
return self.urlopen(
File "C:\Program Files (x86)\Python39-32\lib\site-packages\urllib3\connectionpool.py", line 836, in urlopen
retries = retries.increment(method, url, response=response, _pool=self)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.ticktick.com', port=443): Max retries exceeded with url: /api/v2/user/signin?wc=True&remember=True (Caused by ResponseError('too many 405 error responses'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "F:\Inspiron copy\Doug\TickTickAPIUsage\setup.py", line 21, in
client = TickTickClient(config.user_name, config.password, auth_client)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\ticktick\api.py", line 52, in init
self._prepare_session(username, password)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\ticktick\api.py", line 67, in _prepare_session
self._login(username, password)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\ticktick\api.py", line 104, in _login
response = self.http_post(url, json=user_info, params=parameters, headers=self.HEADERS)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\ticktick\api.py", line 184, in http_post
response = self._session.post(url, **kwargs)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\requests\sessions.py", line 590, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\requests\adapters.py", line 507, in send
raise RetryError(e, request=request)
requests.exceptions.RetryError: HTTPSConnectionPool(host='api.ticktick.com', port=443): Max retries exceeded with url: /api/v2/user/signin?wc=True&remember=True (Caused by ResponseError('too many 405 error responses'))
`

The trace you added says you used the url '/api/v2/user/signin?wc=True&remember=True', but the fix uses 'signon' and not 'signin'--are you sure you're using the right POST URL?

Thanks for spotting that.  I’m not so used to GitHub and somehow I downloaded the “before” version.  When I downloaded the right version, it worked.  Thanks again for your help.

No problem, glad it worked!

This fixed my problem I was having with 405 errors. Is this repo still being maintained?

I made this pull request a month ago and the maintainer hasn't responded. But I haven't tried contacting them directly yet.

Installing @zozzzC's fork worked for me.