Logger only logs error and warning logs

from fastapi import FastAPI
from fastapi.logger import logger
import logging

app = FastAPI()

@app.get("/")
async def pong():
    logger.setLevel(logging.DEBUG)
    logger.error("Error log")
    logger.warning("Warning log")
    logger.info("Info log")
    logger.debug("Debug log")
    return {"ping": "pong"}

Description
I'm trying to get some info level logs in my FastAPI app. I have tried starting my app with uvicorn app.main:app --reload --log-level debug and also by setting the level in the code as you can see above. Unfortunately I can only get error and warning logs to display. This might be a uvicorn or logging problem or, more likely, my own misunderstanding. Any help would be greatly appreciated!
Error log
Warning log

Environment

OS: macOS:
FastAPI Version 0.61.1
Uvicorn Version 0.11.8
Python Version 3.8.5

You also need logging.basicConfig(level=logging.INFO).
It gives very weird results when running under uvicorn but to fix that you will need to go deep into uvicorn logging config.
If it becomes very annoying i would advice to use gunicorn with the uvicorn worker.

That's very useful. Thank you for that!

from loguru import logger
`# -------------------Log configuration---------------*--
logger.add("logs/info/runINFO_{time}.log", rotation="100 MB", level="INFO", enqueue=True, compression="zip", retention='2 days')
logger.add("logs/debug/runDEBUG_{time}.log", rotation="100 MB", level="DEBUG", enqueue=True, compression="zip", retention='2 days')
logger.add("logs/warn/runWARN_{time}.log", rotation="100 MB", level="WARNING", enqueue=True, compression="zip", retention='2 days')
logger.add("logs/error/runERROR_{time}.log", rotation="100 MB", level="ERROR", enqueue=True, compression="zip", retention='2 days')
status_code_dict = {
100200:'success',
100400:'The syntax of the client request is wrong, the server cannot understand "input is empty, token is empty, input error"',
100401:'Permission denied',
100402:'existed',
100404:'Not found, does not exist',
100405:'Unsuccessful, there are unfinished',
100408:'time out',
100500:'Operation failed, server error‘
100501:'server error'
}
-------------------Global error handling configuration---------------*--
@app.exception_handler(StarletteHTTPException)
async def http_exception_handler(request, exc):
code=exc.status_code
msg=exc.detail
debug_ = [100200,100400,100401,100402,100404,100408,100500]
info_ = [100200,100400,100401,100402,100404]
error_ = [100408,100500]
content = 'code:{}-msg{}'.format(code,msg)
# print(content)
if code in debug_:
logger.debug(content )
if code in error_:
logger.error(content )
if code in info_:
logger.info(content )
return JSONResponse( content={"code":code,'msg':msg } )`
logger.debug(content )
logger.error(content )
logger.warn(content )
logger.info(content )
You can consider this library, you can easily configure the log storage location, size, time limit, compression format, error traceability, and it is asynchronous, and this global unified error handling
可以考虑这个库，可以很轻松的配置日志存储位置，大小，时间限制，压缩格式，错误的溯源，且是异步的，还有这个全局统一错误处理

The comment above is suggesting to use loguru, but the example uses a middleware which is not mandatory for the use case of intercepting logs.
Here is a working example:
import logging
import sys
from enum import Enum
from pathlib import Path
from typing import Optional

from loguru import logger
from loguru._logger import Logger
from pydantic import BaseSettings

class LoggingLevel(str, Enum):
    """
    Allowed log levels for the application
    """

    CRITICAL: str = "CRITICAL"
    ERROR: str = "ERROR"
    WARNING: str = "WARNING"
    INFO: str = "INFO"
    DEBUG: str = "DEBUG"

class LoggingSettings(BaseSettings):
    """Configure your service logging using a LoggingSettings instance.

    All arguments are optional.

    Arguments:

        level (str): the minimum log-level to log. (default: "DEBUG")
        format (str): the logformat to use. (default: "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | <level>{message}</level>")
        filepath (Path): the path where to store the logfiles. (default: None)
        rotation (str): when to rotate the logfile. (default: "1 days")
        retention (str): when to remove logfiles. (default: "1 months")
    """

    level: LoggingLevel = "DEBUG"
    format: str = (
        "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
        "<level>{level: <8}</level> | "
        "<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | "
        "<level>{message}</level>"
    )
    filepath: Optional[Path] = None
    rotation: str = "1 days"
    retention: str = "1 months"

    class Config:
        env_prefix = "logging_"

class InterceptHandler(logging.Handler):
    def emit(self, record):
        # Get corresponding Loguru level if it exists
        try:
            level = logger.level(record.levelname).name
        except ValueError:
            level = record.levelno

        # Find caller from where originated the logged message
        frame, depth = logging.currentframe(), 2
        while frame.f_code.co_filename == logging.__file__:
            frame = frame.f_back
            depth += 1

        logger.opt(depth=depth, exception=record.exc_info).log(
            level, record.getMessage()
        )

def setup_logger(
    level: str,
    format: str,
    filepath: Optional[Path] = None,
    rotation: Optional[str] = None,
    retention: Optional[str] = None,
) -> Logger:
    """Define the global logger to be used by your entire service.

    Arguments:

        level: the minimum log-level to log.
        format: the logformat to use.
        filepath: the path where to store the logfiles.
        rotation: when to rotate the logfile.
        retention: when to remove logfiles.

    Returns:

        the logger to be used by the service.

    References:

        - [Loguru: Intercepting logging logs #247](https://github.com/Delgan/loguru/issues/247)
        - [Gunicorn: generic logging options #1572](https://github.com/benoitc/gunicorn/issues/1572#issuecomment-638391953)
    """
    # Remove loguru default logger
    logger.remove()
    # Cath all existing loggers
    LOGGERS = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
    # Add stdout logger
    logger.add(
        sys.stdout,
        enqueue=True,
        colorize=True,
        backtrace=True,
        level=level.upper(),
        format=format,
    )
    # Optionally add filepath logger
    if filepath:
        Path(filepath).parent.mkdir(parents=True, exist_ok=True)
        logger.add(
            str(filepath),
            rotation=rotation,
            retention=retention,
            enqueue=True,
            colorize=False,
            backtrace=True,
            level=level.upper(),
            format=format,
        )
    # Overwrite config of standard library root logger
    logging.basicConfig(handlers=[InterceptHandler()], level=0)
    # Overwrite handlers of all existing loggers from standard library logging
    for _logger in LOGGERS:
        _logger.handlers = [InterceptHandler()]
        _logger.propagate = False

    return logger

def setup_logger_from_settings(settings: Optional[LoggingSettings] = None) -> Logger:
    """Define the global logger to be used by your entire service.

    Arguments:

        settings: the logging settings to apply.

    Returns:

        the logger instance.
    """
    # Parse from env when no settings are given
    if not settings:
        settings = LoggingSettings()
    # Return logger even though it's not necessary
    return setup_logger(
        settings.level,
        settings.format,
        settings.filepath,
        settings.rotation,
        settings.retention,
    )

It's quite long, but with this you simply need to:

(Optional) Define logger options using environment variables
Call the setup_logger_from_settings when your application starts
Import loguru anywhere in your code and use logger.debug(), logger.info(), logger.warning() regardless of the location of the code. Those logs will be nicely formatted and printed to stdout by default, and optionally to stdout.

All logs produced using logging library will be intercepted and formatted as well.

Thanks @gucharbon, I like its elegance.
However it looks like it doesn't address the issues tackled here:
https://pawamoy.github.io/posts/unify-logging-for-a-gunicorn-uvicorn-app/

The comment above is suggesting to use loguru, but the example uses a middleware which is not mandatory for the use case of intercepting logs.
Here is a working example:
import logging
import sys
from enum import Enum
from pathlib import Path
from typing import Optional

from loguru import logger
from loguru._logger import Logger
from pydantic import BaseSettings

class LoggingLevel(str, Enum):
    """
    Allowed log levels for the application
    """

    CRITICAL: str = "CRITICAL"
    ERROR: str = "ERROR"
    WARNING: str = "WARNING"
    INFO: str = "INFO"
    DEBUG: str = "DEBUG"

class LoggingSettings(BaseSettings):
    """Configure your service logging using a LoggingSettings instance.

    All arguments are optional.

    Arguments:

        level (str): the minimum log-level to log. (default: "DEBUG")
        format (str): the logformat to use. (default: "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | <level>{message}</level>")
        filepath (Path): the path where to store the logfiles. (default: None)
        rotation (str): when to rotate the logfile. (default: "1 days")
        retention (str): when to remove logfiles. (default: "1 months")
    """

    level: LoggingLevel = "DEBUG"
    format: str = (
        "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
        "<level>{level: <8}</level> | "
        "<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | "
        "<level>{message}</level>"
    )
    filepath: Optional[Path] = None
    rotation: str = "1 days"
    retention: str = "1 months"

    class Config:
        env_prefix = "logging_"

class InterceptHandler(logging.Handler):
    def emit(self, record):
        # Get corresponding Loguru level if it exists
        try:
            level = logger.level(record.levelname).name
        except ValueError:
            level = record.levelno

        # Find caller from where originated the logged message
        frame, depth = logging.currentframe(), 2
        while frame.f_code.co_filename == logging.__file__:
            frame = frame.f_back
            depth += 1

        logger.opt(depth=depth, exception=record.exc_info).log(
            level, record.getMessage()
        )

def setup_logger(
    level: str,
    format: str,
    filepath: Optional[Path] = None,
    rotation: Optional[str] = None,
    retention: Optional[str] = None,
) -> Logger:
    """Define the global logger to be used by your entire service.

    Arguments:

        level: the minimum log-level to log.
        format: the logformat to use.
        filepath: the path where to store the logfiles.
        rotation: when to rotate the logfile.
        retention: when to remove logfiles.

    Returns:

        the logger to be used by the service.

    References:

        - [Loguru: Intercepting logging logs #247](https://github.com/Delgan/loguru/issues/247)
        - [Gunicorn: generic logging options #1572](https://github.com/benoitc/gunicorn/issues/1572#issuecomment-638391953)
    """
    # Remove loguru default logger
    logger.remove()
    # Cath all existing loggers
    LOGGERS = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
    # Add stdout logger
    logger.add(
        sys.stdout,
        enqueue=True,
        colorize=True,
        backtrace=True,
        level=level.upper(),
        format=format,
    )
    # Optionally add filepath logger
    if filepath:
        Path(filepath).parent.mkdir(parents=True, exist_ok=True)
        logger.add(
            str(filepath),
            rotation=rotation,
            retention=retention,
            enqueue=True,
            colorize=False,
            backtrace=True,
            level=level.upper(),
            format=format,
        )
    # Overwrite config of standard library root logger
    logging.basicConfig(handlers=[InterceptHandler()], level=0)
    # Overwrite handlers of all existing loggers from standard library logging
    for _logger in LOGGERS:
        _logger.handlers = [InterceptHandler()]
        _logger.propagate = False

    return logger

def setup_logger_from_settings(settings: Optional[LoggingSettings] = None) -> Logger:
    """Define the global logger to be used by your entire service.

    Arguments:

        settings: the logging settings to apply.

    Returns:

        the logger instance.
    """
    # Parse from env when no settings are given
    if not settings:
        settings = LoggingSettings()
    # Return logger even though it's not necessary
    return setup_logger(
        settings.level,
        settings.format,
        settings.filepath,
        settings.rotation,
        settings.retention,
    )

It's quite long, but with this you simply need to:
* (Optional) Define logger options using environment variables

* Call the `setup_logger_from_settings` when your application starts

* Use `from loguru import logger` anywhere in your code and use `logger.debug()`, `logger.info()`, `logger.warning()` regardless of the location of the code. Those logs will be nicely formatted and printed to stdout by default, and optionally to file as well.

All logs produced using logging library will be intercepted and formatted as well.
Here is an example result:


Remove obsolete fields_for/2 function

Fixes #157
Since version 1.0.0, when users of ex_machina try to call the deprecated fields_for/2 function, it raises an exception. This doesn't seem to provide any benefit. If instead it's removed, calls to it will fail at compile time. But if it stays in, calls will fail at runtime, possibly in production.
This PR solves the Dialyzer issue and it provides a better solution for dealing with the obsolete function.

+1

Would this fix these types of dialyzer issues?
________________________________________________________________________________
test/support/factory.ex:11:no_return
Function subject_factory/0 has no local return.
________________________________________________________________________________
test/support/factory.ex:3:no_return
Function fields_for/1 has no local return.
________________________________________________________________________________
test/support/factory.ex:8:no_return
Function patient_factory/0 has no local return.
________________________________________________________________________________

@tielur: Possibly. Try pulling in this branch into your mix.exs deps() to find out.

I think this makes sense to remove, especially since the deprecation was introduced in 1.0.0 and we're at 2+. Thanks @moxley for providing some info in the PR description!

❤


Update bar

Updates sections 3 and 4 of the specification.
For section 3 as agreed in the last interlock we are going to adopt the ServiceBindingRequest CRD (with a few documented update requests) as the entity that holds the binding request.
For section 4, we are adopting a pattern very similar to the one from buildpacks, for consistency across frameworks.

CC @sbose78 @navidsh @metacosm @pdettori

Merging the PR to create a working draft instead of pointing to the branch.   Let's use the issues tracker to make updates.


kfdef application name missing doesnt fail kfctl build

kind: KfDef
metadata:
  namespace: kubeflow
spec:
  applications:
# other applications omitted
  - kustomizeConfig:
      repoRef:
        name: manifests
        path: stacks/ibm/application/spartakus
#    name: spartakus
  repos:
  - name: manifests
    uri: https://github.com/moficodes/manifests/archive/master.tar.gz
  version: master

The above kfdef builds fine. but apply would fail and the error message is completely unrelated.
ERRO[0001] Error evaluating kustomization manifest for : accumulating resources: accumulating resources from '../../../../common/spartakus/overlays/application': open /common/spartakus/overlays/application: no such file or directory  filename="kustomize/kustomize.go:155"
Error: failed to apply:  (kubeflow.error): Code 500 with message: kfApp Apply failed for kustomize:  (kubeflow.error): Code 500 with message: error evaluating kustomization manifest for : accumulating resources: accumulating resources from '../../../../common/spartakus/overlays/application': open /common/spartakus/overlays/application: no such file or directory

We should add a check for application name or infer name from path.

cc @Tomcli

/assign

Raise an error is better in this case because the user can also miss other fields.


use glob to retrieve source filenames

Hello,
I was unable to get this module working with the examples in the README:

Examples:     $ banner-cli dist/*.js

It implies that the argument can be a glob and is resolved like so, but instead it was just passed as String, which was causing an exception here:
options.source.map(file => prependFile(file, template))
So I added glob dependency and use it to get an array of resolved filenames. Now the examples are working for me. I also made possible to add a custom template as option and remove the license part in the default template if no license is provided.

@sylvainpolletvillard Good call


Update go version

To investigate #346 , first update the version of Go

Codecov Report

Merging #347 (7f741a0) into master (e99e62d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #347   +/-   ##
=======================================
  Coverage   79.87%   79.87%
=======================================
  Files          52       52
  Lines       17469    17469
=======================================
  Hits        13953    13953
  Misses       2949     2949
  Partials      567      567


Remove redundant text from check cmd description

The flags and examples are automatically generated. There is no need to maintain the extra text.
Fixes #201
Signed-off-by: Brad P. Crochet<EMAIL_ADDRESS>

/lgtm


Rename TOC class to "Related articles".

What do you want to do?

[x] Request a change to existing documentation

Implemented in #2264


Refactor SrtTimeCode to better abstract time code for general use

https://github.com/sandflow/ttconv/blob/master/src/main/python/ttconv/srt/time_code.py#L45

Related to work found in https://github.com/sandflow/ttconv/pull/143


Repository description minor issue

The repository description has a minor issue.
It is written etc, the correct way is etc.

fixed


Reduce PerformanceMonitor polling cycle

The current config is set to 300 secs. We should evaluate costs on the worker node and if possible reduce it to 1 minute or 30 secs. I know nothing about this watchdog, so I cannot make further comments at the moment.

Closing it since it seems to be a good setting, sorry for the noise


[Fix][Txn] Fix transaction redeliver message if ack failed

Motivation & Modification
If transaction is not in the state of open, we should not allow it to ack message with in transaction. And the message should be redeliver again.
Verifying this change

[ ] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API: (yes / no)
The schema: (yes / no / don't know)
The default values of configurations: (yes / no)
The wire protocol: (yes / no)
The rest endpoints: (yes / no)
The admin cli options: (yes / no)
Anything that affects deployment: (yes / no / don't know)

Documentation
Check the box below or label this PR directly.
Need to update docs?

[ ] doc-required
(Your PR needs to update docs and you will update later)

[x] no-need-doc
(Please explain why)

[ ] doc
(Your PR contains doc changes)

[ ] doc-added
(Docs have been already added)

The test only tests for 1 consumer, and only tests redelivery.
What's the behavior when there are 2 or more consumers?

The test only tests for 1 consumer, and only tests redelivery. What's the behavior when there are 2 or more consumers?

What we need to test is that it does call the redeliverUnacknowledgedMessages method. As for whether this method fully meets expectations, it should be tested by the PR that writes this method. For details, you can see the ConsumerRedeliveryTest, DispatcherBlockConsumerTest and `SimpleProducerConsumerTest

https://github.com/apache/pulsar/pull/15593 revert the PR, so don't need to cherry-pick to release branches


Revised middleware-declaration function's interface

The current middleware declaration function is required to return a function to intercept the first two dependencies used to construct the middleware (curry).
Since the actual middleware construction requires "store" (or its simulated API) and "next" (next middleware's "dispatch") to both be available at the time of the middleware's function declaration, and since they're both available right at the time of "applyMiddleware"'s invocation, there is essentially no need to split the two arguments into different function calls.
This PR includes support for both 2 and 1 (for existing middleware) arguments definition funcs:
const myMiddleWare = store => next => action => next(action)
or
const myMiddleWare = (store, next) => action => next(action)
more friendly towards ES5 newcomers (and Express middleware authors):
var myMiddleWare = function(store, next){

  return function(action){
    // process action
    ...
    // proceed to next middleware
    next(action)
  }

}

I believe this minor change could promote authors' familiarity and understanding, thus encourage the development of additional middleware to Redux.

What would the migration process be like? Shall we add warnings for every middleware using the old signature? Shall we support both? Which one would be referenced in the documentation?

I can't see how the current signature serves the author, I suggest the following migration steps:

Enable both signatures support, with a fallback to the current sig in case we can't determine the number of arguments by calling .length - as implemented in the PR.
Revise the documentation: Present only the two-args (new) sig, and add a note regarding the migration from the legacy sig.
On the next major release, still support both sigs, assume the new sig (fallback to it) and send out a deprecation warning.

Migration is always a sticky business, but I think this should keep us safe.

How do we show deprecation message if we don't know the name of the offending middleware?

Good Point. We probably can't name it (not in a practical and satisfactory way anyhow), but we can provide a useful hint: The ordinal of the incompatible function.
We can provide warning messages in the line of:
`The ${index}${[["st", "nd", "rd"][index-1] || "th"].join('')} middleware factory function used to invoke 'applyMiddleware' is incompatible with the required signature...`;

Here's one way in which we can slip this message in:
chain = middlewares.map((middleware, index) => middleware.length === 2 ? middleware.bind(undefined, middlewareAPI) : ((middleware)=>{ console.warn(`The...`); return middleware; })(middleware(middlewareAPI)));

What do you think?

I see zero advantage in changing the signature, other than personal dislike of currying.

I personally love FP along with everything that comes with it, including the currying technique :smile:
In our case though, it might not be the ideal choice since (brought IMHO):

It's redundant - Currying typically shines where a function receives its arguments in an unsynchronized fashion (separated by time). That's not the case here since both "store" and "next" are made available at the same time (when the applyMiddleware function is executed)
It's cumbersome - Think of the extra fluff ES5 syntax will require just in order to receive arguments (function(..){ return function(..){ Got everything now! } })
It's a deterrent - People can't intuitively understand the separation of the first two functions (because it was made out of implementation needs rather than the API's), which might deter them from contributing their middleware to Redux.

BTW: Elm (a language which I also personally like) has currying as a fundamental language feature, so you can choose how many arguments are passed, and when they're passed for every function without implementing it yourself. JS is not naturally expected to behave this way, and APIs that implement currying are rare (in fact, I'm not sure I've ever seen one).

I think we won't do this unless there are other useful breaking changes to middleware. I can't justify changing the signature and causing dozens of maintainers to release new major versions and then responding to incompatibility issues with previous Redux versions because they didn't enforce peer dependencies or such—and all for their apparent convenience.
If we planned to change middleware significantly I'd get this in, but at the moment we don't. I understand this keeps the friction, but it's almost moot with ES6 which is what people in Redux ecosystem usually write new code in anyway.
Sorry!

My pleasure :+1:
I'd be happy to assist should you decide to reconsider.


[TRACKING] Follow-up Enhancements

The main features are refactored in https://github.com/ise-uiuc/nnsmith/issues/33 with a primary focus on extensibility, code quality, and maintainability (e.g., ci & PyPI). This thread tracks some follow-up (or P1~2) enhancements and features that we are going to work on in the next few weeks.
0.0.0
https://pypi.org/project/nnsmith/0.0.0/

[x] Refactoring verbose printing with module-level loggers.  https://github.com/ise-uiuc/nnsmith/pull/44
[x] Auto versioning https://github.com/ise-uiuc/nnsmith/pull/40
[x] Dtype testing for model exportation; https://github.com/ise-uiuc/nnsmith/pull/40
[x] Make pygraphviz an optional dependency as it requires system-level constraint https://github.com/ise-uiuc/nnsmith/pull/43

0.0.1
https://pypi.org/project/nnsmith/0.0.1/

[x] Stabilize nnsmith.fuzz via smoke testing in CI; https://github.com/ise-uiuc/nnsmith/pull/50
[x] Fix core.Gemm; https://github.com/ise-uiuc/nnsmith/pull/45
[x] Double-check and stabilize backend-oriented spec re-writing; https://github.com/ise-uiuc/nnsmith/pull/52
[x] generation exception safety. https://github.com/ise-uiuc/nnsmith/pull/52
[x] Well-form backend dispatching;
[x] GitHub HEAD install (tested);
[x] Fix XLA. https://github.com/ise-uiuc/nnsmith/pull/50
[x] Patchable bug filter. https://github.com/ise-uiuc/nnsmith/pull/53
[x] Crash safety in execution; https://github.com/ise-uiuc/nnsmith/pull/54

TBD

Cleaning stale branches after a 5-month window size;
[ ] nnsmith.fuzz TUI.
[ ] Implement exclude set logics;
[ ] Replace pygraphviz with graphviz to release the dependency constraint by pygraphviz?
[ ] Simplifying nnsmith arith by extending z3.ArithRef. https://github.com/Z3Prover/z3/issues/6309
[ ] Well-form core operators and dialects; -- core operators should not change that frequently...
[ ] Simplifying and bringing back attribute binning;
[ ] CLI-level documentation;
[ ] Tutorials on CLI, design, and extension.

Some new and main features/fixes that are not mentioned in the base comment, but will be served as the future release of v0.1.0:
GraphIR infrastructure for simplifying graph construction and mutation:

https://github.com/ise-uiuc/nnsmith/pull/64
https://github.com/ise-uiuc/nnsmith/pull/61

Scripts to evaluate coverage of generated tests:

https://github.com/ise-uiuc/nnsmith/pull/60

Concolic generation, simplified size limiter, etc.

https://github.com/ise-uiuc/nnsmith/pull/66

More backend support is coming soon.

Continued by tracking features via release versions or other smaller milestones.


Downloads of this package have started failing today (ECONNRESET)

Without warning, a lot of our CI builds have failed today with this error (during step 4 of yarn install):
09:03:30  [4/4] Building fresh packages...
09:03:48  error /home/jenkins/workspace/Geiger/geiger-review/node_modules/sharp: Command failed.
09:03:48  Exit code: 1
09:03:48  Command: (node install/libvips && node install/dll-copy && prebuild-install --runtime=napi) || (node-gyp rebuild && node install/dll-copy)
09:03:48  Arguments:
09:03:48  Directory: /home/jenkins/workspace/Geiger/geiger-review/node_modules/sharp
09:03:48  Output:
09:03:48  info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.9.1/libvips-8.9.1-linux-x64.tar.gz
09:03:48
 ERR! sharp read ECONNRESET

I realize this is probably a GitHub issue and has nothing to do with your project, but posting here anyway for visibility and posterity.

The relative silence suggests this is a temporary problem with networking between your CI environment and either GitHub or AWS S3.
(When there's a real GitHub Releases problem affecting everyone I receive at least 100 notifications, emails, Twitter DMs, carrier pigeons etc.)

The relative silence suggests this is a temporary problem with networking between your CI environment and either GitHub or AWS S3.
(When there's a real GitHub Releases problem affecting everyone I receive at least 100 notifications, emails, Twitter DMs, carrier pigeons etc.)

Okay good to know. Thanks for the info!

Okay good to know. Thanks for the info!


Multiple selection not working properly on mobile devices

Hi,
we tried using a select2 with multiple selection, but found that it doesn't behave like it should on mobile devices (a Nexus 9 and a Samsung S3 were used for testing):

after selecting an item in the menu or typing something, the keyboard isn't collapsed automatically
especially on smartphones (but also on tablets), it is very difficult to deselect already selected items via the small "x" symbol because it is just too small. Maybe allowing deselecting by just tipping the selected item again (outside of the dropdown menu) would be better here

We used select2 4.0 for testing. Aside from the multiple select boxes, everything seems to work quite neatly compared to the 3.5 version.

These issues are discussed in more detail in #4425.


int16s_temp_workaround

Fixes https://github.com/zigpy/zha-device-handlers/issues/1976
TODO: tests

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.709%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
6839

Relevant Lines:
8170

💛  - Coveralls

Superseded by:

https://github.com/zigpy/zha-device-handlers/pull/2188


Add PhpdocToCommentFixer

MARK FOR MERGE INTO 2.0 by @keradus
Remove $token->getLine() !

This forbids using inline phpdoc to document local variables

Please add a testcase for phpdoc for variables:
/** @var int $index */
$index = $a['index'];

the phpdoc should not be removed in such case, and your code removes it

I have addressed all comments so far, only thing left is to allow variable assignments through list() calls. Will add another time, got to run now.
What about the name for this fixer? Just created one without putting too much thought into it.

This fixer should be configured to run before the phpdoc_indent and the no_empty_lines_after_phpdocs fixers, so that these fixers don't touch doc comments which are meant to be converted to regular comments (and the ordering should be tested in the test covering this)

How does one test ordering?

@ceeram https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/1.5/Symfony/CS/Tests/FixerTest.php

Thanks, added test for that as well. I think i have addressed all comments so far.

All comments by @keradus have been addressed

nice ;)

:+1:
anything else to do here before merge?

Yes there still is one thing i want to change. If docblock is right after
open tag it can be a page/file-level docblock. This fixer better not change
to comment then. I have some unpushed changes for that on a different
computer.
Op 17 jan. 2015 23:51 schreef "Dariusz Rumiński"<EMAIL_ADDRESS>
[image: :+1:]
anything else to do here before merge?
—
Reply to this email directly or view it on GitHub
https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/969#issuecomment-70388030
.

Then - should we consider this as done ?

Please see: https://github.com/ceeram/PHP-CS-Fixer/pull/5

See: https://github.com/keradus/PHP-CS-Fixer/pull/7

All squashed now, included the additional test and fix

:+1:

ping @ceeram

pong, busy atm, will get back to this later
2015-01-21 10:02 GMT+01:00 Dariusz Rumiński<EMAIL_ADDRESS>
ping @ceeram https://github.com/ceeram
—
Reply to this email directly or view it on GitHub
https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/969#issuecomment-70804570
.

well... maybe it should be at symfony level?
cc @stof @sstok

IMO after cherry-pick from my PR it will be ready to merge.

ping @ceeram
btw, please move it into Symfony level (https://github.com/symfony/symfony/pull/13469)

Thank you @ceeram.
Merged manually in #997


Animation does not play back

Animation does not play back after second click
I have this component
import React from "react"
import { useAnimate } from "react-simple-animate"

export default () => {
  const { play, style, isPlaying } = useAnimate({
    start: { transform: "translateX(0px)" },
    end: { transform: "translateX(200px)" }
  });

  function handleClick() {
    play(!isPlaying)
    console.log('isPlaying: ', isPlaying)
  }

  return (
    <>
      <div style={style}>
        Hello
      </div>
      <button onClick={handleClick}>
        Play
      </button>
    </>
  );
}

I expect that animation will play back after second click but it doesn't and only after double click it plays back

OS: macOs Catalina 10.15.4
Browser chrome / safari
Version Chrome: 84.0.4147.125 / Safari: 13.1

Package version
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.3",
"react-simple-animate": "^3.3.9"

Do you have a codesandbox?

Create sandbox to demonstrate and same problem there
https://codesandbox.io/s/keen-pond-mqxhw?file=/src/App.js


Fixes a race condition in get_state between controller.py and core/client.py

There might be a race between get_state(no_cache=True) in Client and get_state(...) from all_states() in Controller which uses the Cache. That race happens when we have a repository with a lot of artifacts to retrieve from a user that is not the master user. As the Cache is using a defaultdict() we will get an empty state back when querying from the cache, and we always get this empty state as we don't update the cache. And it may stay for a while on Loading... state.

Lmao, I can't believe I typoed those func_addrs. lol

LGTM! Curiously, I haven't reliably triggered the thing bug yet. Perhaps I have not had a big enough binary yet.


fishing issue

first: i play in german, in english this issue dont exist
if i have mooch and catch fishes with double hook at the next cast the parse dont turn back to previous window so i have to hook for coming back. with normal hook it works fine.i think there is an error because language. so i found this line in the fisher.js probably has to be changed:
'catch': /00:0843:Du hast (?:einen |eine )?.+?\s?([\w\s-'.\d\u00c4-\u00fc]{3,})(?: | [^\w] |[^\w\s-'\u00c4-\u00fc].+ )(\d/,
in my game chat is written this way for 2 fishes:
"Du ziehst 2  Genist-Blindmantas  mit einer Länge von 272,6 Ilmen an Land!"
for one it looks like
Du hast einen  Genist-Wolkenspalter (21,8 Ilme) gefangen.
hope you can help to improve your nice work :)

@Akurosia, do you have any time to look into this?

Might take a day or two, but should be no problem to check this :)

0843:Du (hast (?:einen |eine )|ziehst \d+ )?.+?\s?([\w\s\-\'\.\d\u00c4-\u00fc]{3,})(?: | [^\w] |[^\w\s\-\'\u00c4-\u00fc].+ )(?:\(\d|mit)
i checked some of my logs, and the above regex should work.
will take some time till i am able to test this, as i am currently deep into ishgard right now :x

failed to look up fish: hast eine
3seabase.js:222
i think, i have to wait cause in diadem for now its useless without the new fishes... so waiting for your updates :)
but thanks for watching into it

ohh no apparently i am a dumb dumb...
i forgot to remove the new capture group in the beginning.
Could you try following? @ron2453
0843:Du (?:hast (?:einen |eine )|ziehst \d+ )?.+?\s?([\w\s\-\'\.\d\u00c4-\u00fc]{3,})(?: | [^\w] |[^\w\s\-\'\u00c4-\u00fc].+ )(?:\(\d|mit)

thats it! :) now just waiting for new fishes, awesome 👍

nope.... if using mooch says this:

seabase.js:222 failed to look up fish: annst
5
seabase.js:267 Uncaught (in promise) DOMException: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key.
at file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:267:36
at new Promise ()
at SeaBase.queryHookTimes (file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:266:12)
at file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:299:15
seabase.js:222 failed to look up fish: annst
5
seabase.js:267 Uncaught (in promise) DOMException: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key.
at file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:267:36
at new Promise ()
at SeaBase.queryHookTimes (file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:266:12)
at file:///C:/Users/ich/AppData/Roaming/Advanced%20Combat%20Tracker/Plugins/cactbot-0.19.6/cactbot/ui/fisher/seabase.js:299:15

ok i just spend some minutes on fishing and u get slightly different results:
mooch 2 was working fine on 3-4 occasions but the only time i got mooch 1, it threw following issue:
[11.09.2020 23:35:41] Info: fischer: BrowserConsole: failed to look up fish: annst (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 222)
[11.09.2020 23:35:43] Info: fischer: BrowserConsole: Uncaught (in promise) DataError: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 267)
[11.09.2020 23:35:43] Info: fischer: BrowserConsole: Uncaught (in promise) DataError: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 267)
[11.09.2020 23:35:43] Info: fischer: BrowserConsole: Uncaught (in promise) DataError: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 267)
[11.09.2020 23:35:43] Info: fischer: BrowserConsole: Uncaught (in promise) DataError: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 267)
[11.09.2020 23:35:43] Info: fischer: BrowserConsole: Uncaught (in promise) DataError: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. (Source: file:///E:/FINAL%20FANTASY%20XIV%20-%20A%20Realm%20Reborn/AdditionalExtern/ACT/Plugins/OverlayPlugin_ngld/cactbot/ui/fisher/seabase.js, Line: 267)

i will try it with following regex: 0843\|\|Du (?:hast (?:einen |eine )|ziehst \d+ )?.+?\s?([\w\s\-\'\.\d\u00c4-\u00fc]{3,})(?: | [^\w] |[^\w\s\-\'\u00c4-\u00fc].+ )(?:\(\d|mit ein) as this does not match as much log lines as the other before

2fisher.js:204 Uncaught TypeError: Cannot read property 'name' of null
at Fisher.handleBait (fisher.js:204)
at Fisher.handleMooch (fisher.js:293)
at Fisher.parseLine (fisher.js:348)
at Array.forEach ()
at Fisher.OnLogEvent (fisher.js:362)
at fisher.js:387
at processEvent (common.js:241)
at :1:30
and timer with mooch dont start...
i have made some changes in static data for the new fishes (changed the old diadem to the new ones) so for now with the old code in fisher.js it works. i think we should work better this way: first finishing ishgard event, then inserting the new fishes and in the end turning to this problem, so we have booth exact the same files for working with :)

with the new regex i was able to mooch without problems.
if your static_data.js has not all entries, this could cause your issues. you could either clone the repository and run the gen_fish python tool, or use the version from my PR: https://github.com/quisquous/cactbot/pull/1785/files#diff-05f5a5ab84432d8ed1c9504da130a440

ok, this last round wa yours!!  Its working fine now, great!
since i dont know how python works i have copied all the lines from your link above, static and fisher.
after this cross testing all cases, at least deleted my db for checking if entries are written and yes all fine without any error in console. 2 and 3 pieces per bait and mooch, also il return after double hook and moch works now, great job done :)
thanks a lot!

found just an missing: "ein" in the line :D german is very complex. so its now:
    'catch': /00:0843:Du (?:hast (?:einen |eine |ein )|ziehst \d+ )?.+?\s?([\w\s\-\'\.\d\u00c4-\u00fc]{3,})(?: | [^\w] |[^\w\s\-\'\u00c4-\u00fc].+ )(?:\(\d|mit ein)/,

is this really needed?
do you have a example log line where it starts with "Du hast ein" ? I always encountered the "Du hast einen" version

ok nvm run a quick check through all my logs and found at least 1 occurence with the word "ein" |0843||Du hast ein  Flieger-Ei (4,4 Ilme) gefangen.
Will make a PR in a sec

found also missing changes in static data since fishes in diadem has changed with 5.31
have changed this 4 lokations manually:
'2262': [
31590,
31591,
31592,
31596,
31600,
],
'2263': [
31590,
31591,
31593,
31597,
31602,
],
'2264': [
31590,
31591,
31594,
31598,
31601,
'3489': [
  31590,
  31591,
  31595,
  31599,
  31603,
],

i made following PR #1787 to fix the regex
For the locations i ran a specialised python script. I honestly do not have time to invest this in detail (as i am not that familar with the data itself). @quisquous could you have a look at the location thing?

Is there anything left here, or can this be closed?

could you have a look at the ids that were posted above?
The tool generated different once ('2262': [30002,30003,30004,30006,30010,], were created by the tool instead of what ron posted above).
I am not into the script or neither the static-data.js to be sure nothing is missing/incorrect

I fixed the script to combine fish from all locations with the same id, so this should be better now.


Create non-root user for build steps that require it.

Some of our build steps require running as a non-root user. DevOps creates a non-root user by default but Github Actions does not, when using a Docker image.
Adding the user here will save us a step in any CI jobs that require it.

Hi Brian,
I was actually tempted to fix the default user itself to not be root anymore on GH actions... I think it's possible as long as it is configured to be in the sudo group...
That said if it helps you to have that extra builduser for the opencue image in the short term that's no problem either!
Thoughts?

Happy to use the new user in #38 for now.


bugfix(package): add type module

@domchristie/turn doesn't appear to be written in CJS, but also doesn't appear to be a valid ES module (i.e. it doesn't have "type": "module" or an .mjs extension for the entry point). Please contact the package author to fix.

@domchristie fine


[Bug]: [Java BQ] Reduce the number of retries for streaming Storage API writes

What happened?
Streaming Storage Write API has a RetryManager with up to 1000 retries and a back-off restricted between 1-10 seconds:
https://github.com/apache/beam/blob/7eaef18bcbfb48fb112884564b1362f638fe5834/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/StorageApiWritesShardedRecords.java#L740-L741
Maybe we should revisit these decisions as 1000 retries might not be needed in a streaming pipeline. In the Dataflow case, if we fail earlier, the runner will retry the bundle as many times as needed. Also, are there any errors that warrant us waiting more than 10 seconds before retrying?
Issue Priority
Priority: 2 (default / most bugs should be filed as P2)
Issue Components

[ ] Component: Python SDK
[X] Component: Java SDK
[ ] Component: Go SDK
[ ] Component: Typescript SDK
[X] Component: IO connector
[ ] Component: Beam examples
[ ] Component: Beam playground
[ ] Component: Beam katas
[ ] Component: Website
[ ] Component: Spark Runner
[ ] Component: Flink Runner
[ ] Component: Samza Runner
[ ] Component: Twister2 Runner
[ ] Component: Hazelcast Jet Runner
[ ] Component: Google Cloud Dataflow Runner

I think it woudl also be nice to have a bounded time to retry for.  Ie retry up to 10 times but don't retry if everything has taken over 10 minutes.  That is different than the backoff time itself because it would include the time spent on operations.

A few notes:

It seems that there was already an attempt to reduce the tail latency in the same place, but this change only reduced the max delay from approximately 1000 minutes to 10000 seconds (166 minutes), which is still too much, I think. IMO by default it shouldn't wait for more than 10 minutes, but should wait for more than a few seconds, e.g. something like initial backoff = 1s, exponent = 1.5, max retries = 12 will result in cumulative wait time of 4.5 minutes (and 1.5 minutes before the last attempt).
In other places the RetryManager settings are different and make only 3 retries, though this is probably way too low (3 retries with 1 second initial backoff and 1.5 default backoff exponent means we'll only wait for 1 and 1.5 seconds before the 2nd and 3rd retry).  Should we increase the number of retries here?
Makes sense to make at least some of these params configurable in BigQueryIO.


Unable to deploy multiple versions of the prefect-worker

Objective: I want to deploy workers to various work-pools with different execution environments (e.g. some using GPU node pools).
Problem: The current prefect-worker chart doesn't not seem to support this and I am unable to include multiple versions of the prefect-worker chart as a sub-chart in my main prefect helm chart or independently as a separate release of the prefect-worker.
Here is the error I am receiving when trying to include multiple versions of the prefect-worker as a subchart (using the alias prefect-worker-v100-gpu):
pathType:ImplementationSpecific]) Error: UPGRADE FAILED: cannot patch "prefect-worker" with kind Deployment: Deployment.apps "prefect-worker" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/component":"worker", "app.kubernetes.io/instance":"prefect", "app.kubernetes.io/name":"prefect-worker-v100-gpu"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

Reproducing the issue:
You should be able to reproduce this issue using a chart with the following Chart.yaml and values.yaml.
Chart.yaml:
apiVersion: v2
name: parent-prefect-chart
description: A Helm chart for workflow orchestration using prefect

type: application

version: 0.1.0

appVersion: "1.0.0"

dependencies:
  - name: prefect-server
    version: "2023.11.9"
    repository: https://prefecthq.github.io/prefect-helm
  - name: prefect-worker
    version: "2023.11.9"
    repository: https://prefecthq.github.io/prefect-helm
  - name: prefect-worker
    version: "2023.11.9"
    repository: https://prefecthq.github.io/prefect-helm
    alias: prefect-worker-v100-gpu

values.yaml:
prefect-server:
  server:
    replicaCount: 2

prefect-worker:
  worker:
    replicaCount: 2
    apiConfig: server
    config:
      workPool: compute-pool
      type: kubernetes
    serverApiConfig:
      apiUrl: http://prefect-server:4200/api
  role:
    extraPermissions:
      - apiGroups: [""]
        resources: ["events"]
        verbs: ["list", "get", "watch"]

prefect-worker-v100-gpu:
  worker:
    replicaCount: 2
    resources:
      limits:
        cpu: "4"
        memory: 30Gi
      requests:
        cpu: "1"
        memory: 1Gi
    nodeSelector:
      cloud.google.com/gke-accelerator: nvidia-tesla-v100
    apiConfig: server
    config:
      workPool: v100-gpu-compute-pool
      type: kubernetes
    serverApiConfig:
      apiUrl: http://prefect-server:4200/api
  role:
    extraPermissions:
      - apiGroups: [""]
        resources: ["events"]
        verbs: ["list", "get", "watch"]

I've also tried to accomplish this object by deploying a prefect-work separately as a release independent of my main prefect parent chart and ran into the following issue:
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ServiceAccount "prefect-worker" in namespace "prefect" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-name" must equal "prefect-v100-gpu-worker": current value is "prefect"

Hi @gyu11 - please check out this section of the readme. It describes how you can deploy >1 worker to the same namespace

It seems like there is a potential workaround where I can deploy a prefect-worker to a separate namespace from where my existing prefect-server and prefect-worker are deployed (as subcharts). However, in order to allocate GPU resources in GKE, we will need to add the following property to the resources.limits and resources.requests: nvidia.com/gpu: 1.
When trying to add that property, I am getting the following validation error:
Error: UPGRADE FAILED: values don't meet the specifications of the schema(s) in the following chart(s):
prefect-worker:
- worker.resources.limits: Additional property nvidia.com/gpu is not allowed

This was resolved by adding the tolerance and requests to the base job template

Hi @gyu11 - please check out this section of the readme. It describes how you can deploy >1 worker to the same namespace

Awesome, that works!


Use proper check to see if running on simulator

What
Fixes a busted isSimulator check in Xcode 7. Without this fix isSimulator will always return NO when running in Xcode 7. As a consequence the project will crash with the message AVCaptureSession can't startRunning between calls to beginConfiguration / commitConfiguration.
@lwansbrough

Thanks for your contribution!

It doesn't look like this was published to npm yet.

Oh right, I'll push a new version later tonight.


Add Intrigue Ident scan

Add Intrigue ident scan
Make sure intrigue ident uses http proxy; add an integration test for http proxying in general. This is because http proxying is a bit tricky; setting the HTTP_PROXY env variable on the Docker container will end up breaking axios's proxy integration, so we have to pass HTTP_PROXY and HTTPS_PROXY only when we call intrigue-ident with spawnSync.

@epicfaace do you get a mitmproxy error when running?
2020-09-13T23:39:42.252989900Z       "response_body": "mitmproxy failed:
 Could not deserialize key data.

Traceback (most recent call last):\n  File \"worker/mitmproxy_sign_requests.py\", line 47, in request\n    self.signature_auth.__call__(signed_request)\n  File \"/usr/local/lib/python3.7/dist-packages/requests_http_signature/__init__.py\", line 175, in __call__\n    request.headers[\"Signature\"] = self.create_signature_string(request)\n  File \"/usr/local/lib/python3.7/dist-packages/requests_http_signature/__init__.py\", line 118, in create_signature_string\n    passphrase=self.passphrase,\n  File \"/usr/local/lib/python3.7/dist-packages/requests_http_signature/__init__.py\", line 26, in sign\n    key = self.load_pem_private_key(key, password=passphrase, backend=self.default_backend())\n  File \"/usr/local/lib/python3.7/dist-packages/cryptography/hazmat/primitives/serialization/base.py\", line 16, in load_pem_private_key\n    return backend.load_pem_private_key(data, password)\n  File \"/usr/local/lib/python3.7/dist-packages/cryptography/hazmat/backends/openssl/backend.py\", line 1098, in load_pem_private_key\n    password,\n  File \"/usr/local/lib/python3.7/dist-packages/cryptography/hazmat/backends/openssl/backend.py\", line 1324, in _load_key\n    self._handle_key_loading_error()\n  File \"/usr/local/lib/python3.7/dist-packages/cryptography/hazmat/backends/openssl/backend.py\", line 1382, in _handle_key_loading_error\n    raise ValueError(\"Could not deserialize key data.\")\nValueError: Could not deserialize key data.\n"
This may be related to my environment setup - I received the error "ERROR: In file ./.env: environment variable name '-----END PUBLIC KEY-----"' may not contain whitespace." when using the dev environment as is, so I moved everything onto one line. Thoughts?


Why you do not try it first in an environement?

/retest

/hold

/lgtm

/unhold


Add zealot to whitelist

I'd like to request the zealot package be added to the Darwin whitelist.
https://github.com/r-lib/zeallot
The %<-% assignment operator is quite nice sometimes.

Had issues using this in a package and decided not to use it after all. Abort!

Well I did end up using the unpacking operator in some tests so zeallot is included under Suggests in CDMConnector v1.0.

Added zeallot 0.1.0 to a1505e0.


Configure a GKE kubernetes cluster on GKE for running tests.

Changes proposed in this PR

A script for making a GKE cluster for running tests.

Why are we making these changes?
Make it easy to replicate a test environment.

@scrosby Will merge when travis is green


Improve gltf loader message about missing tangents

What problem does this solve or what need does it fill?
When having many GLTF models in an app, if debug log level is turned on messages about missing vertex tangets might appear.
However it doesn't say which model, so it's hard to take action.
What solution would you like?

Inform which model is missing tangents
Also, if not too opiniated, mention that Blender is able to bake them (which I think it can during gltf export). This would allow the user to know not only the problematic model, but a way to fix it too

What alternative(s) have you considered?
Using a debugger to find out which model is problematic.
Additional context
2024-02-12T07:33:22.774925Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:22.812107Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:22.833721Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:22.852133Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.302680Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.303184Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.304056Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.304817Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.309710Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.312120Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.318036Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.320884Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.326357Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.328809Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.336656Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.351425Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.366192Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.463666Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.468243Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.505040Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.527992Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.555847Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.560282Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.602515Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.683227Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.687447Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.723583Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.746370Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.772947Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.777070Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.816259Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.899092Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.904600Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.936691Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:23.970883Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.002366Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.025267Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.113704Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.118518Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.163051Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.197286Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.232813Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.267934Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.350247Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.353601Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.392365Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.425674Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.461521Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.496562Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.575401Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.589792Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.593798Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.630627Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.651874Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm
2024-02-12T07:33:24.668495Z DEBUG bevy_gltf::loader: Missing vertex tangents, computing them using the mikktspace algorithm

On another note: These messages are displayed over many seconds, which might indicate that these steps take quite a bit of time.
If so perhaps something like this could be considerered:
WARN bevy_gltf::loader: Asset "foo.gltf" took 8.6s to load, 8.0s was spent computing tangents which could be pre-baked

I will begin working on this if no objections.


apiVersion missing from v3 Chart.yaml docs

Helm v2 docs "the chart.yaml file" mention the
apiVersion: The chart API version, always "v1" (required)

In the v3 docs "the chart.yaml file" this line was simply removed. When generating a chart with helm v3.0.0-beta.2 it sets the apiVersion to
apiVersion: v2

Would be nice to see the updated to v2 documented.

https://v3.helm.sh/docs/faq/#chart-yaml-apiversion-bump

addressed by PR 343.


No ouput anymore

There does not seem to be any output anymore.
This is resolved by https://github.com/tern-tools/tern/pull/771
The docker_run.sh script does not require a workdir, so we need to remove that.

This currently fails because tern is not yet released to pypi.
See https://github.com/tern-tools/tern/issues/778

Version 2.2.0 is released. Now there is output: https://github.com/JeroenKnoops/tern-action-examples/runs/1041120674?check_suite_focus=true#step:2:1199


Delete query enhancement tests from functional repo

Description
We wish to migrate query enhancement tests from functional repo to OSD repo. https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8986/files
Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Will merge this after osd pr get merged


support spanner BatchCreateSessions

spanner just added a BatchCreateSessions method. Add support for it in SpannerStub and anywhere we mock it.

Will this change the public API?  If the answer is "no" or "probably not" then we should push this to the Beta milestone.

[ ] We should start by breaking the dependency on google-cloud-cpp to get googleapis/cpp-cmakefiles (#414).
[ ] We should update googleapis/cpp-cmakefiles to a newer version of the protos (googleapis/cpp-cmakefiles/issues#17).
[ ] Then we should talk about adding the necessary functions to SpannerStub and SpannerConnection once we start using them, otherwise we are just adding dead code.

Yeah, Beta is probably fine, I made it Alpha because I wasn't sure if updating the protos would break anything (new pure virtual methods? or no?) and it would be good to have it available to experiment with.

FYI, the proto files are updated to include the BatchCreateSessions RPC.


Icon wrapping in record explorer pane

Describe the bug
When the width of the Record Explorer pane is narrow, the icons in the upper right wrap around which breaks the UI.

To Reproduce
Shrink the width of the window until the buttons in the upper right of the Record Explorer wrap.
Expected behavior
Maybe add an ellipsis if the icons overflow the container.
Environment:

Operating System: Windows
Surrealist Version: 1.10.1
SurrealDB Version: surrealdb-1.0.0+20230922.a0072cf

Thanks again!

Will be fixed in the next release


Remove preview designation for AZ support in ACI

Remove preview designation since AZ support in Azure Container Instances is now GA.
Update docs to reflect that container groups can now be provisioned with an AZ in Azure Portal.
Update broken link for az group create command.

@anaharris-ms
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


HTML Copy does not preserve background colors in PowerPoint

Environment
Windows build number:  10.0.18362.0
Windows Terminal version (if applicable): 0.5.2661.0

Any other software? Windows Subsystem Linux (version 1) with Ubuntu 18.04, latest zsh,
    latest Oh My Zsh, agnoster theme in Oh My Zsh, Source Code Pro for Powerline font,
    although these may not be strictly necessary to reproduce

Steps to reproduce

Open a Ubuntu 18.04 tab
Select the prompt and copy it (right click in this specific case)
Paste in PowerPoint

Expected behavior
A somewhat similar copy of the prompt gets pasted in PowerPoint. (the strange looking blue part at the top is just the line right above the prompt that was just another prompt but shifted a little bit)

Actual behavior
The background information is not pasted. The background of the line is not copied either.

The background information is pasted correctly in Word.

I do not know whether this issue is caused by Windows Terminal or PowerPoint. If PowerPoint is the culprit, could you point me towards where I could report this?
Thank you, and thanks for the amazing job you guys are doing on this project!

Hey @utybo! Thanks for the report. As far as we can tell, this is unfortunately an issue in PowerPoint. It looks like they're just rejecting the backgrounds on all incoming pasted <span>s ☹
It might be worth filing an issue in their feedback portal! If you could do that--it means more when it comes from a customer--I'd be happy to upvote it or prod some powerpoint folks about it on your behalf.
In our case, though, this is going to be Resolution-External.

Understood, I'll leave an issue on the feedback portal ASAP and I'll post a link here 😄

Here is a link: https://aka.ms/AA67u2t
Please tell me if there is something else I need to do


CocoaPodsのCDNを使いたい

なんか ※ikemen が
[!] CDN: cocoapods- Repo update failed - 7 error(s):
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.1.0/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.1.1/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.1.2/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.2.0/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.4.0/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.5.0/\u203Bikemen.podspec.json"
URI must be ascii only "https://cdn.cocoapods.org/Specs/c/a/d/\u203Bikemen/0.6.0/\u203Bikemen.podspec.json"

でコケる

やった


[Feature]  InLong audit

design

sub tasks

[ ] #1734
[ ] #1735
[ ] #1736
[ ] #1737

Use case
No response
Are you willing to submit PR?

[x] Yes, I am willing to submit a PR!

Code of Conduct

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

Inlong audit will handle all metrics info which reported by client sdk in separate processing .
This is the master issue for inlong audit feature, including the following sub-tasks.

[ ] 1.  #1879
[ ] 2.  #1880
[ ] 3.  #1881
[ ] 4.  #1882


Adding Pi button

Pi is missing in the calculator. Please assign this issue to me.

Can you please assign this issue to me as this would be my first contribution in hacktoberfest


Emojis (and tables) not rendered in markdown (GitHub-flavoured markdown)

I have some markdown with emojis and while rich can render them fine, they are not rendered in markdown, which may be correct, but somewhat sad. Is there a way to reach that goal? Maybe some post-processing/re-ingesting I could do?
text = ":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon: :white_large_square: :green_heart: :green_heart: :grey_question: :large_blue_diamond: :large_blue_diamond: :large_orange_diamond: :red_circle: :heavy_exclamation_mark: :bangbang: :boom:"
console.print(text)
console.print(Markdown(text))

No I'm afraid not. Pre-processing would probably work. Something like this:
from rich.emoji import Emoji
emojified_text = Emoji.replace(text)
console.print(Markdown(emojified_text))

Wow, awesome, thank you @willmcgugan! Pre- or post-processing, either way, this is just what I was looking for. Thank you!
I am not yet familiar with your work - just saw it yesterday on HN. Really great! I was thinking the other day that such a technology would be neat to help me with a tool of mine that can report back into a GitHub issue (as a robot of sorts), but that can be also used stand-alone in the terminal, but then I need to support different output formats, which makes everything quite complex.
On a related note, I also noticed that tables are not rendered. Now, what I should say/wrote above, the markdown I want to render in the terminal is GitHub-flavored markdown, so nothing rich says it would render. I was thinking, I need to find the tables myself and invoke your table API directly or is there also a simple solution to tables, too?

The markdown renderer I use is "commonmark" which doesn't do tables. There is an unofficial extension which parses tables, but it's not maintained so I'm reluctant to use it.
Tables would be a nice to have feature in the Markdown class, especially since Rich already has good support for tables. Its just a fair but of work to make it happen, so it's not high on my list of priorities. That might change if I get sponsorship...

Sure, fair, thanks for the answer @willmcgugan. Let me close this then.


Handle-based post/profile links break when handles change

So I guess there are two main URL formats for linking to posts:
handle-based
https://bsky.app/profile/<handle>/post/<rkey>

e.g.: https://bsky.app/profile/retr0.id/post/3k56fcvdn4n2c
DID-based:
https://bsky.app/profile/<did>/post/<rkey>

e.g. https://bsky.app/profile/did:plc:vwzwgnygau7ed7b7wt5ux7y2/post/3k56fcvdn4n2c
The DID-based URLs are obviously more permanent, but the handle-based ones break every time a user's handle changes. The handle-based URLs are most commonly reachable through the web UI, and I can see why - they look nicer.
I have an idea for a solution - introducing a third new URL format! (and making it the new default - but keeping backwards-compat)
https://bsky.app/profile/<handle>~<did>/post/<rkey>

Non-working example: https://bsky.app/profile/retr0.id~did:plc:vwzwgnygau7ed7b7wt5ux7y2/post/3k56fcvdn4n2c
This has the advantage of still being human-readable (with the human part foremost), while still not breaking when handles change. It is uglier than a handle-only URL, but I suspect 99% of users remain blissfully unaware of URL aesthetics, while they certainly will notice broken links.
I chose ~ because it's allowed in URLS, but not in handles (and maybe not DIDs? would need to triple-check that...). The app would just ignore the value of <handle>, using only the DID for lookups - but potentially you could rewrite the URL to point to the correct updated handle, if it no longer matches up (this is similar to how twitter URLs work, by the way).
Another solution I considered was a "permalink" button under the ... menu, linking to the DID URL, but non-nerds would never notice it or know to use it.

should also mention that profile bios are also prone to this at the moment, there is no facets field for this so any mentions of their close ones etc will be broken if they change their handle

It's also present in feed descriptions, list descriptions, etc. - but not sure if those are as important. Would be helpful to get facets in there to be more expressive, but they're also 'pinned' and editable, so users can after-the-fact fix.

the rest actually does have descriptionFacets in them but I don't think they're being used by the app and neither does the feeds that are being made

We've talked about this in the past, I think what I'd go for is https://bsky.app/profile/<handle>/post/<rkey>?did=<did> because - as annoying as the gunk in the URL is - it's somewhat easier to visually scan past the gunk at the end instead of the beginning.

in general i think all urls that contain rkeys should instead contain did/rkey pairs. adding ?did=... to each url could be a way of doing that, but i think something more holistic would be better for the future. the url can still contain human readable elements, but ultimately the did/rkey would be what the server uses to resolve the data.
basically: https://bsky.app/profile/<handle>/post/<did>:<rkey>

Couldn't we keep track of profile handles that changed? Most common use case is going from something.bsky.social to something.com, and both should lead to something.com. Otherwise it opens additional risk/requirement of everyone registering two handles, which is silly.

Couldn't we keep track of profile handles that changed? Most common use case is going from something.bsky.social to something.com, and both should lead to something.com. Otherwise it opens additional risk/requirement of everyone registering two handles, which is silly.

There's a chance that could fail in some pretty bad ways. In particular, if two users ever used the same handle, there'd be no way to know which one should "win". I think the only reliable solution is to stuff the did in the URI somewhere; I still lean towards the QP
cc @gaearon this is that discussion

If two users used the same handle (the scenario I wish to prevent) doesn't that point to the initial issue in the first place?

Proper handle verification requires two-way checks. You can check historic DID->domain mappings via the PLC server, but you can only verify a domain->DID relationship in "real time".
Anyone can create a new DID->domain mapping and submit it to the PLC server without any actual domain verification happening (even if it would "collide" with an existing record), so this two-way verification is essential.

I'm not really seeing what the issue is with historic tracking, so long as those handles' DNS isn't pointing to a different DID. If the domain points to a new DID, then finally URLs for those old posts would break, understandably, because someone new owns that handle and it should only properly direct to their posts now. This would be a much, much smaller set of cases than the current fully breaking change that happens now.
If someone switches from bsky.social to "I have a domain", bsky.social should maintain that handle and continue pointing it to that DID. But any handle-based interaction with the server would have to be through the "primary" handle, to avoid creating a historical mess and potential security issues. Switching your primary would require the two-way verification check to be done.
Old handle addresses that are accessed would still resolve the DID pointed to from their DNS, which would then display the proper content...
But this discussion is pretty old now and feels like it is superseded by these discussions?
https://github.com/bluesky-social/social-app/issues/5904
https://github.com/bluesky-social/social-app/pull/5303

Maintaining historic records is nice, but what happens when new independently-operated infrastructure joins the network? They have no such records, and old links will be broken for their users.
The issues you link are related but I wouldn't say they supersede it - they are about preserving *.bsky.social handle resolution when a user switches over to a custom domain. But this discussion seeks a broader solution - handle updates would not break URLs, going forward, so long as some portion of the URL stores the DID.

I was just thinking about this again. One potential issue with the https://bsky.app/profile/<handle>/post/<rkey>?did=<did> format @pfrazee mentioned is that, aesthetically, it looks like a "tracking URL". Most people probably don't care, but for anyone in the category of "tech savvy but unaware of atproto implementation details", they'll think it's superfluous information that can/should be stripped off (and if they test the stripped URL, it'll still work for them). I do like the general idea of "gunk goes at the end", though.
Maybe something like https://bsky.app/profile/<handle>/post/<rkey>?permalink=<did>~<cid>
Same idea, but "permalink" is a better description of what it's there for, for non-experts. (I tacked on CID too, which could be optional, and used to check if the record has been edited)

There is some urgency here with the recent pressure around verification - actively assisting existing users to get verified by updating their handle is going to break embeds, links, etc. that are already out there; and there are some downstream effects that could be very bad as the links get out there (i.e. posts embedded in news, journalists that change organisation, etc. - these become dead links by design at the moment).

Seeing what other complications this may have if this pr gets added - https://github.com/bluesky-social/social-app/pull/6919

I agree with @Bossett proposal of integrating it into the main URL structure. A big concern with making it a URL parameter is that even if a user may see that as more legitimate part, an increasing amount of services these days strip anything from the question-mark onwards, and many people are prone to simply removing that stuff regardless because "hey it works anyway, why not!".
The slightly longer URL size seems worth it for the sake of ensuring the integrity of that information.

Tossing out another suggestion: append dids as the last segment
Profiles
1. https://bsky.app/<handle>/<did>
2. https://bsky.app/<handle>
3. https://bsky.app/<did>

eg
1. https://bsky.app/pfrazee.com/did:plc:ragtjsm2j2vknwkz3zp4oxrd
2. https://bsky.app/pfrazee.com
3. https://bsky.app/did:plc:ragtjsm2j2vknwkz3zp4oxrd

If 2 or 3 is used, app automatically redirects to usage 1
Content
1. https://bsky.app/<handle>/<collection short name>/<rkey>/<did>
2. https://bsky.app/<handle>/<collection short name>/<rkey>
3. https://bsky.app/<did>/<collection short name>/<rkey>

eg
1. https://bsky.app/pfrazee.com/post/1234/did:plc:ragtjsm2j2vknwkz3zp4oxrd
2. https://bsky.app/pfrazee.com/post/1234
3. https://bsky.app/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/1234

If 2 or 3 is used, app automatically redirects to usage 1
Content subpages
1. https://bsky.app/<handle>/<collection short name>/<rkey>/<subpage>/<did>
2. https://bsky.app/<handle>/<collection short name>/<rkey>/<subpage>
3. https://bsky.app/<did>/<collection short name>/<rkey>/<subpage>

eg
1. https://bsky.app/pfrazee.com/post/1234/liked-by/did:plc:ragtjsm2j2vknwkz3zp4oxrd
2. https://bsky.app/pfrazee.com/post/1234/liked-by
3. https://bsky.app/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/1234/liked-by

If 2 or 3 is used, app automatically redirects to usage 1

I'm a huge fan of 2.
Is this something a community member can tackle ?

I think it’s very important that at some point it breaks if you take out the did - or you are going to have people ‘prettying up’ their URLs, ‘hot tips’ that say it isn’t necessary, influencers doing ‘did you know…’ etc etc
Especially in the case of orgs that may want the style guide, and in the future may reclaim handles to put up a pinned ‘visit our main page’ post.

Isn't is possible to create a unique number based on the did:plc part so instead of doing did:plc: it would be just a number that is easier to read and easier for people to understand? And a function maybe in the api that decodes and encodes this number for those who need access to the plc? I'm just suggesting something, I have no clue whether it would help or not.

Isn't is possible to create a unique number based on the did:plc part so instead of doing did:plc: it would be just a number that is easier to read and easier for people to understand? And a function maybe in the api that decodes and encodes this number for those who need access to the plc? I'm just suggesting something, I have no clue whether it would help or not.

That might break on did:web or other future did methods, depending on how you do it. It would also mean that you wouldn't have sufficient information in the URL to retrive the post direct from the PDS should bsky.app go down—Credible Exit and all that.

I don't have a huge problem with requiring the DID on sub-paths

hopefully that dns or something will get update to redirect /profile/ so existing links wont break if this is going to get implemented.

If you are planning to accept my PR I did preserve the old routes so nothing breaks. It does not redirect and just renders the component like the current version. I did not add any redirects because that needs some decisions from your side.

Still catching up, but what about allowing metadata to exist in a user account that the equiavalent of a 301 redirect? The web/mobile clients, seeing the metadata pointing to a new DID/handle (which validates that this handle is still controlled by original person, and not some new oblivious signup), could look for the post rkey or profile under the new DID/handle and render that instead.

no need for servers to track state of old accounts
Users need to squat old handle BUT can be certain of ownership (so redirects are valid)
Old handle mentions resolve to new handle
Old posts resolve to migrated url (new did or handle)

@patcon as-is, setting up a "redirect account" involves a race condition, since account A has to "release" the old handle before account B can switch to it (assuming the old handle was managed by a PDS/gateway, like with *.bsky.social). A handle squatter could be watching the firehose for high-reputation handles to become available, and snag them before the legitimate redirect can be set up.
This could be solved by having a proper "handle transfer" feature in the PDS, though. But if we're implementing new PDS features, it'd be better to just allow one account to have multiple "alias" handles at once, avoiding the need for a second account.
But, these are both solutions to a different problem, and assume a non-adversarial relationship with the handle provider. DID-based links survive no matter what happens to the handle domain (for example, if the TLD decides to cease operations)

This link is currently being shared around: https://bsky.app/profile/itch.io/post/3lcu6h465bs2n
Post contents:

I kid you not, @itch.io
has been taken down by Funko of "Funko Pop" because they use some trash "AI Powered" Brand Protection Software called Brand Shield that created some bogus Phishing report to our registrar, iwantmyname, who ignored our response and just disabled the domain

The irony here is that, once caches expire, that link will 404 for the reasons stated in the post itself.
I point this out because it's yet another scenario where DIDs in the URL would improve the situation (i.e. it's not just handle changes that could break URLs, but general DNS breakage).
Regular DID-based link for reference, in case the above one really does 404: https://bsky.app/profile/did:plc:oy37ivqnriw6nx3lrbcht2u3/post/3lcu6h465bs2n


document as being read from initializer

@cben
for https://github.com/abonas/kubeclient/pull/299

Should still include some explanation what it does (that you get a JSON string)

better ?

:+1:


[v1.36.0] Unable to open Studio on Windows

Describe the bug
When running maestro studio or maestro --host <WINDOWS_IPV4_ADDR> studio I get a blank page at localhost:9999
To Reproduce
Steps to reproduce the behavior:

Follow the documentation at the end of https://maestro.mobile.dev/getting-started/installing-maestro/windows
Run maestro studio
Then blank page when visiting localhost:9999

Expected behavior
I expect to see Maestro Studio available and ready to use like the documentation shows.
Screenshots

Environment information (please complete the following information):

Maestro version: 1.36.0
Platform: N/A
Framework: N/A
Device model and OS version: Samsung Galaxy Tab Active 3, Android 12
Physical device And Emulator have same issues
Host: Windows

Additional context

I am able to run flows on the emulator and tablet fine.

I feel the reason is because Maestro is installed in WSL and chrome browser on Windows can't grab the files it needs correclty?

Managed to fix by using windows IP address instead of localhost in Chrome.


define Auth_OpenID_RAND_SOURCE to null.

im trying to install openid in php 5 in windows 8, i couldnt find where to  define Auth_OpenID_RAND_SOURCE to null....
Plz help me...
if possible show giveme a guidence to install it in windows

This repo is being archived. Closing issue.


DF-74: Custom data for analytics service (amends)

Datalayer changes for testing comments
Included changes for digitized detail record, put TODO commented code in records.py - also relates to DF-220

Thank you Andy for appropriate - renaming title.


os: commandLineToArgv() does not correctly parse argv[0] in Windows

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

$ go version
go version go1.17.4 windows/amd64

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
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\tim\AppData\Local\go-build
set GOENV=C:\Users\tim\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\tim\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\tim\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.4
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\tim\AppData\Local\Temp\go-build2702872218=/tmp/go-build -gno-record-gcc-switches

What did you do?

When running a go program in Windows cmd with a path such as this:
C:\"Program Files"\main.exe

os.Args will contain two arguments: C:"Program and Files\main.exe.
Here is an example that uses the definition of commandLineToArgv() from os/exec_windows.go: https://go.dev/play/p/VgBbsDdApUg
What did you expect to see?
os.Args should contain a single arg: C:\Program Files\main.exe.
This is not happening because we are not giving special treatment to the first argument. As specified in the documentation for Parsing C++ command-line arguments:

The first argument (argv[0]) is treated specially. It represents the program name. Because it must be a valid pathname, parts surrounded by double quote marks (") are allowed. The double quote marks aren't included in the argv[0] output. The parts surrounded by double quote marks prevent interpretation of a space or tab character as the end of the argument. The later rules in this list don't apply.

In this case, (\") is interpreted as a literal double quote mark (") and the space in  Program Files is interpreted as the end of an argument. This is incorrect for the first argument.
David Deley's command line parsing reference also corroborates that argument 0 should be parsed specially. (Although admittedly it's not very clear - the flowchart skips this step for example.)
As far as I can see, when we implemented commandLineToArgv() in #15588, we used the C++ documentation and David Deley's page as reference. However, we did not correctly implement the algorithm specified in these references. So I believe this behavior is unintended. This problem has existed since we fixed #15588.
What did you see instead?
os.Args contains two arguments since the first arg is not parsed correctly: C:"Program and Files\main.exe
Please let me know if my diagnosis is correct. If so, I would be happy to submit a patch for this.

#17149 contains a detailed discussion of parsing when using CMD as mentioned in the example. It also suggests a workaround.

(CC @golang/windows)


ZIP archive broken

Download this link:
https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/julmot/mark.js/tree/master/dist
The resulting folder is empty for me.

@julmot If you have some sort of script-blocker, try disabling it. Or try making exceptions for GitHub URLs.
That solved the problem for me.


Build error with Parcel

When building with parcel,
×  C:\...\common.less:6:12: Unknown word
  4 | }
  5 | .risk-color-extreme-hover:hover {
> 6 |   color: ${props => require('tinycolor2')(`#e3130b`).darken(parseFloat(`5%`)).toRgbString()};
    |            ^
  7 | }
  8 | .risk-color-high,

This is strange as common.less should not be compiled by styless.

:tada: This issue has been resolved in version 1.4.18 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


from2 doesn't work without through2

I try it and get infinite loop in headStream
var headStream = from2.obj(function (size, next) {
    var file = new File({
        path: 'head.js',
        contents: new Buffer('head content')
    });
    next(null, file);
})

series(headStream, otherStream)
    .pipe(g.concat(name))
    .pipe(gulp.dest(destPath))

I try it and get 16 loops (size = 16), but head file doesn't write to output file
var flag = false;
var headStream = from2.obj(function (size, next) {
    if (flag) return this.push(null);
    ...
    flag = true;
    next(null, file);
})
...

If I use through it works!
var headStream = from2.obj(function (size, next) {
    ...
    this.push(file)
    next();
})
.pipe(through2.obj(function (file, enc, callback) {
    callback(null, file);
}));
...

Why? And how to do it without through?

could you provide a simple runnable test case that doesn't use gulp to showcase this error? then it might be easier to pinpoint what is wrong :)


feat: shuffled points before feeding them to the model

Description
shuffled points before feeding them to the model to avoid voxels filling with highly correlated points
Inference time:
After this PR: 9.69ms
Before this PR: 8.49 ms
Related links
Parent Issue:

Link

Related thread

TIER IV

How was this PR tested?
Used the X2 data from the thread and a reference bag from XX1.
Tested both centerpoint (the model from x2 and the standard model) and transfusion
Notes for reviewers
None.
Interface changes
None.

Effects on system behavior
None.

@knzo25 Hi, thank you very much for the PR :pray:
Would you split this PR for two individual packages? Merging the change for those two at the same time may increase the cherry-picking cost in system integration team.

Split the PR in:
https://github.com/autowarefoundation/autoware.universe/pull/8814
https://github.com/autowarefoundation/autoware.universe/pull/8815

Closed as the PR was replaced by the split ones


adding uninstall information

Adding uninstall information for thundernetes

Looks good. We can add this to the troubleshooting document as well.


Update insecure.md

Hi，I‘m back 🐶

Proposed changes

Unreleased project version (optional)

Related issues (optional)

I'm glad you're back to business 😎
We've missed your fixes!


Update translations for ovirt 4.4

Update the translations for the project based on the 1.6 version in Zanata. This correlates to the version of ovirt-web-ui that is included in ovirt-4.4.

April 2020 ovirt project translation updates:
rhevm-branding-rhev:        https://bugzilla.redhat.com/1819201
ovirt-engine:               https://bugzilla.redhat.com/1819205
ovirt-engine-ui-extensions: https://bugzilla.redhat.com/1818929
ovirt-web-ui:               https://github.com/oVirt/ovirt-web-ui/issues/1178


code cleanup

Lots of code cleanup:

change '== None' to 'is None' and '!= None' to 'is not None'
simplify compound conditionals
remove redundant parenthesis
spelling/grammar
rename loop variable to not shadow existing variables
remove unneeded imports
change imported types into builtin
merge duplicated code from command handles into a function in the command handle base class
update doxygen docs
add "fixme:" where errors should occur but don't
add "fixme:" for unused function parameters
remove unused variables
rename camelCase variables
remove 'self' and make functions static if they are static
add mongodb and leveldb to the integration test configuration
integration test now uses leveldb (we already have tests for sqlite3 in tests/storage_test.py, so this will just provide more coverage)

is LevelDB not supported with the current automatic tests? It seems to have not imported the LevelDBStorage class for some reason.

is LevelDB not supported with the current automatic tests? It seems to have not imported the LevelDBStorage class for some reason.

I remember it failed to work. You can try to enable it and see if it works.

is LevelDB not supported with the current automatic tests? It seems to have not imported the LevelDBStorage class for some reason.

I remember it failed to work. You can try to enable it and see if it works.

My first commit just changed the integration test to use leveldb instead of sqlite3 and it failed the tests. the second commit fixed that

is LevelDB not supported with the current automatic tests? It seems to have not imported the LevelDBStorage class for some reason.

I remember it failed to work. You can try to enable it and see if it works.

My first commit just changed the integration test to use leveldb instead of sqlite3 and it failed the tests. the second commit fixed that

https://github.com/UCLA-IRL/ndn-python-repo/actions/runs/11311234689/job/31457225541#step:7:91
I guess it is not even installed on CI.


Remove unreachable code paths

Same sex marriages in New Zealand lead to outcome_cp_no_cni. Remove
all code branches and references that are New Zealand-specific in
the outcome_cp_commonwealth_countries outcome that was used for NZ
before the change.
It was uncovered using this command:
        $ rm -rf coverage && \
          TEST_COVERAGE=true \
          rails r script/generate-responses-and-expected-results-for-smart-answer.rb \
          marriage-abroad

Was this the result of a change you've made recently or just something that's been around a while? Particularly if it was the former, then it would be good to reference the commit or PR in which the change was made.
Has this commit made any of the phrase list keys redundant?
Otherwise this LGTM.


Terminal much slower now

Checking the time it takes to create the terminal shows much slower times since January.
Measure marks: https://github.com/Microsoft/vscode/blob/af608864808988ed5c6ef7259514d9386864f2b6/src/vs/workbench/electron-browser/workbench.ts#L774-L778

Report from the perf dashboard

Not sure if it's the same issue but if I start typing too early in Terminal after opening it up, it'll run at about 0.01% performance and absolutely crawl and be totally unusable. I have to close that terminal, open another and only start typing when it's ready

Not sure I can do anything here since we need to know the dimensions of the panel before the terminal starts.


Fixes #291 - less strict filter check

Instead of checking the field contents (we’ve no idea what the user
wants to test for) we just check that they’re using it.
Previously if we wanted to search for entities with either 0 or null as their values the checks would fail.
So instead just checking that the filter has been activated should be enough.

Completely agree, thank you.


Add labels to each Jenkins step

This uses the optional label argument on shell scripts in Jenkins to assign each one in CI a human-friendly name. This should help make it more clear what is going on in CI without having to dig into individual commands.
Tested in the test Jenkins here.
@areusch

Thanks for the simple quality of life improvement here @driazati, just have a few questions but in general I think this can only improve things :smile_cat:

Thanks @driazati, this improvement has landed :smile_cat:


Fix incorrect suggested code in errors

The current suggested code has bad syntax and uses an incorrect method name.
@chef/workflow

:+1: