





'''simple docstring'''






# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
import os

from ...utils.constants import SAGEMAKER_PARALLEL_EC2_INSTANCES, TORCH_DYNAMO_MODES
from ...utils.dataclasses import ComputeEnvironment, SageMakerDistributedType
from ...utils.imports import is_botoa_available
from .config_args import SageMakerConfig
from .config_utils import (
    DYNAMO_BACKENDS,
    _ask_field,
    _ask_options,
    _convert_dynamo_backend,
    _convert_mixed_precision,
    _convert_sagemaker_distributed_mode,
    _convert_yes_no_to_bool,
)


if is_botoa_available():
     import botoa  # noqa: F401
def 							_lowerCamelCase(  UpperCamelCase__    : Any		)		->  Union[str, Any]:
    A       :       Optional[int]							=						botoa.client('''iam'''		)

    A       :       Union[str, Any]							=						{
        '''Version''': '''2012-10-17''',
        '''Statement''': [
            {'''Effect''': '''Allow''', '''Principal''': {'''Service''': '''sagemaker.amazonaws.com'''}, '''Action''': '''sts:AssumeRole'''}
        ],
    }
    try:
        # create the role, associated with the chosen trust policy
        iam_client.create_role(
            RoleName=A_    ,       AssumeRolePolicyDocument=json.dumps(A_    ,       indent=2		)		)
        A       :       str							=						{
            '''Version''': '''2012-10-17''',
            '''Statement''': [
                {
                    '''Effect''': '''Allow''',
                    '''Action''': [
                        '''sagemaker:*''',
                        '''ecr:GetDownloadUrlForLayer''',
                        '''ecr:BatchGetImage''',
                        '''ecr:BatchCheckLayerAvailability''',
                        '''ecr:GetAuthorizationToken''',
                        '''cloudwatch:PutMetricData''',
                        '''cloudwatch:GetMetricData''',
                        '''cloudwatch:GetMetricStatistics''',
                        '''cloudwatch:ListMetrics''',
                        '''logs:CreateLogGroup''',
                        '''logs:CreateLogStream''',
                        '''logs:DescribeLogStreams''',
                        '''logs:PutLogEvents''',
                        '''logs:GetLogEvents''',
                        '''s3:CreateBucket''',
                        '''s3:ListBucket''',
                        '''s3:GetBucketLocation''',
                        '''s3:GetObject''',
                        '''s3:PutObject''',
                    ],
                    '''Resource''': '''*''',
                }
            ],
        }
        # attach policy to role
        iam_client.put_role_policy(
            RoleName=A_    ,       PolicyName=F'''{role_name}_policy_permission'''    ,       PolicyDocument=json.dumps(A_    ,       indent=2		)    ,       )
    except iam_client.exceptions.EntityAlreadyExistsException:
        print(F'''role {role_name} already exists. Using existing one'''		)
def 							_lowerCamelCase(  UpperCamelCase__    : Optional[int]		)		->  Optional[Any]:
    A       :       int							=						botoa.client('''iam'''		)
    return iam_client.get_role(RoleName=A_		)["Role"]["Arn"]





def 							_lowerCamelCase(  )		->  List[Any]:
    A       :       Optional[int]							=						_ask_options(
        '''How do you want to authorize?'''    ,       ['''AWS Profile''', '''Credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) ''']    ,       A_    ,       )
    A       :       Dict							=						None
    if credentials_configuration == 0:
        A       :       List[str]							=						_ask_field('''Enter your AWS Profile name: [default] '''    ,       default='''default'''		)
        A       :       Union[str, Any]							=						aws_profile
    else:
        print(
            '''Note you will need to provide AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY when you launch you training script with,'''
            '''`accelerate launch --aws_access_key_id XXX --aws_secret_access_key YYY`'''		)
        A       :       List[Any]							=						_ask_field('''AWS Access Key ID: '''		)
        A       :       Optional[int]							=						aws_access_key_id

        A       :       Optional[int]							=						_ask_field('''AWS Secret Access Key: '''		)
        A       :       int							=						aws_secret_access_key

    A       :       Union[str, Any]							=						_ask_field('''Enter your AWS Region: [us-east-1]'''    ,       default='''us-east-1'''		)
    A       :       Optional[int]							=						aws_region

    A       :       Tuple							=						_ask_options(
        '''Do you already have an IAM Role for executing Amazon SageMaker Training Jobs?'''    ,       ['''Provide IAM Role name''', '''Create new IAM role using credentials''']    ,       A_    ,       )
    if role_management == 0:
        A       :       List[str]							=						_ask_field('''Enter your IAM role name: '''		)
    else:
        A       :       str							=						'''accelerate_sagemaker_execution_role'''
        print(F'''Accelerate will create an iam role "{iam_role_name}" using the provided credentials'''		)
        _create_iam_role_for_sagemaker(A_		)

    A       :       str							=						_ask_field(
        '''Do you want to use custom Docker image? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
    A       :       Optional[Any]							=						None
    if is_custom_docker_image:
        A       :       Dict							=						_ask_field('''Enter your Docker image: '''    ,       lambda UpperCamelCase__		: str(A_		).lower()		)

    A       :       Any							=						_ask_field(
        '''Do you want to provide SageMaker input channels with data locations? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
    A       :       Dict							=						None
    if is_sagemaker_inputs_enabled:
        A       :       List[Any]							=						_ask_field(
            '''Enter the path to the SageMaker inputs TSV file with columns (channel_name, data_location): '''    ,       lambda UpperCamelCase__		: str(A_		).lower()    ,       )

    A       :       Union[str, Any]							=						_ask_field(
        '''Do you want to enable SageMaker metrics? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
    A       :       int							=						None
    if is_sagemaker_metrics_enabled:
        A       :       List[Any]							=						_ask_field(
            '''Enter the path to the SageMaker metrics TSV file with columns (metric_name, metric_regex): '''    ,       lambda UpperCamelCase__		: str(A_		).lower()    ,       )

    A       :       Any							=						_ask_options(
        '''What is the distributed mode?'''    ,       ['''No distributed training''', '''Data parallelism''']    ,       _convert_sagemaker_distributed_mode    ,       )
    A       :       Union[str, Any]							=						{}
    A       :       Union[str, Any]							=						_ask_field(
        '''Do you wish to optimize your script with torch dynamo?[yes/NO]:'''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
    if use_dynamo:
        A       :       int							=						'''dynamo_'''
        A       :       List[str]							=						_ask_options(
            '''Which dynamo backend would you like to use?'''    ,       [x.lower() for x in DYNAMO_BACKENDS]    ,       _convert_dynamo_backend    ,       default=2    ,       )
        A       :       int							=						_ask_field(
            '''Do you want to customize the defaults sent to torch.compile? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )

        if use_custom_options:
            A       :       str							=						_ask_options(
                '''Which mode do you want to use?'''    ,       A_    ,       lambda UpperCamelCase__		: TORCH_DYNAMO_MODES[int(A_		)]    ,       default='''default'''    ,       )
            A       :       Union[str, Any]							=						_ask_field(
                '''Do you want the fullgraph mode or it is ok to break model into several subgraphs? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
            A       :       Optional[int]							=						_ask_field(
                '''Do you want to enable dynamic shape tracing? [yes/NO]: '''    ,       _convert_yes_no_to_bool    ,       default=A_    ,       error_message='''Please enter yes or no.'''    ,       )
    A       :       List[str]							=						'''Which EC2 instance type you want to use for your training?'''
    if distributed_type != SageMakerDistributedType.NO:
        A       :       Union[str, Any]							=						_ask_options(
            A_    ,       A_    ,       lambda UpperCamelCase__		: SAGEMAKER_PARALLEL_EC2_INSTANCES[int(A_		)]		)
    else:
        eca_instance_query += "? [ml.p3.2xlarge]:"
        A       :       List[Any]							=						_ask_field(A_    ,       lambda UpperCamelCase__		: str(A_		).lower()    ,       default='''ml.p3.2xlarge'''		)

    A       :       Dict							=						1
    if distributed_type in (SageMakerDistributedType.DATA_PARALLEL, SageMakerDistributedType.MODEL_PARALLEL):
        A       :       List[Any]							=						_ask_field(
            '''How many machines do you want use? [1]: '''    ,       A_    ,       default=1    ,       )

    A       :       List[str]							=						_ask_options(
        '''Do you wish to use FP16 or BF16 (mixed precision)?'''    ,       ['''no''', '''fp16''', '''bf16''', '''fp8''']    ,       _convert_mixed_precision    ,       )

    if use_dynamo and mixed_precision == "no":
        print(
            '''Torch dynamo used without mixed precision requires TF32 to be efficient. Accelerate will enable it by default when launching your scripts.'''		)

    return SageMakerConfig(
        image_uri=A_    ,       compute_environment=ComputeEnvironment.AMAZON_SAGEMAKER    ,       distributed_type=A_    ,       use_cpu=A_    ,       dynamo_config=A_    ,       eca_instance_type=A_    ,       profile=A_    ,       region=A_    ,       iam_role_name=A_    ,       mixed_precision=A_    ,       num_machines=A_    ,       sagemaker_inputs_file=A_    ,       sagemaker_metrics_file=A_    ,       )







'''simple docstring'''






from __future__ import annotations

import math
def 							_lowerCamelCase(  UpperCamelCase__    : int		)		->  list[int]:

    if num <= 0:
        A       :       str							=						F'''{num}: Invalid input, please enter a positive integer.'''
        raise ValueError(UpperCamelCase__		)

    A       :       int							=						[True] * (num + 1)
    A       :       Dict							=						[]
    A       :       str							=						2
    A       :       Any							=						int(math.sqrt(UpperCamelCase__		)		)

    while start <= end:
        # If start is a prime
        if sieve[start] is True:
            prime.append(UpperCamelCase__		)

            # Set multiples of start be False
            for i in range(start * start    ,       num + 1    ,       UpperCamelCase__		):
                if sieve[i] is True:
                    A       :       Union[str, Any]							=						False

        start += 1

    for j in range(end + 1    ,       num + 1		):
        if sieve[j] is True:
            prime.append(UpperCamelCase__		)

    return prime


if __name__ == "__main__":
     print(prime_sieve(int(input("""Enter a positive integer: """).strip())))
